@canonry/canonry 7.46.1 → 7.47.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.
Files changed (35) hide show
  1. package/assets/assets/{AuditHistoryPanel-u65pF2eT.js → AuditHistoryPanel-BTlvVW6p.js} +1 -1
  2. package/assets/assets/{BacklinksPage-CmYpSNGB.js → BacklinksPage-DQu_3poO.js} +1 -1
  3. package/assets/assets/{HistoryPage-CqzQSAil.js → HistoryPage-D_3qu4SQ.js} +1 -1
  4. package/assets/assets/{MeasurementPropertyPage-KfpmUisb.js → MeasurementPropertyPage-FKmEMw_G.js} +1 -1
  5. package/assets/assets/{ProjectPage-BCiospUp.js → ProjectPage-H7nsLkhG.js} +1 -1
  6. package/assets/assets/{RunsPage-CzPvTnwG.js → RunsPage-CE5wFNdP.js} +1 -1
  7. package/assets/assets/{SettingsPage-CZYckyPO.js → SettingsPage-D2zKpqOv.js} +1 -1
  8. package/assets/assets/{SiteHealthSection-Bm5nWAoZ.js → SiteHealthSection-ClZRxJ-A.js} +3 -3
  9. package/assets/assets/{TrafficPage-DZw_GvaO.js → TrafficPage-BDH4Dzk0.js} +1 -1
  10. package/assets/assets/{TrafficSourceDetailPage-CD20PJ4A.js → TrafficSourceDetailPage-DaVUcHXu.js} +1 -1
  11. package/assets/assets/{extract-error-message-Cpzj_AMZ.js → extract-error-message-YXzyZAEc.js} +1 -1
  12. package/assets/assets/{index-BHLYJHa-.js → index-Zj8hd7aE.js} +3 -3
  13. package/assets/assets/{react-sigma_core.esm.min-CK2U3T7S.js → react-sigma_core.esm.min-9j5NHFWR.js} +1 -1
  14. package/assets/assets/{v2-overview-adapter-DL1IsAM2.js → v2-overview-adapter-BsKpkQvx.js} +1 -1
  15. package/assets/index.html +1 -1
  16. package/dist/{chunk-QWLKYIQ4.js → chunk-3F4KBEMY.js} +2 -2
  17. package/dist/{chunk-Y2QMWZT7.js → chunk-66K6U5H5.js} +3 -3
  18. package/dist/{chunk-WMG365JI.js → chunk-CIYCCA2I.js} +11 -2
  19. package/dist/{chunk-QBZPKXFW.js → chunk-DGKSQ5QD.js} +1 -1
  20. package/dist/{chunk-GWRIZSIL.js → chunk-HQS2Y7HO.js} +3 -3
  21. package/dist/{chunk-IBRZ23VQ.js → chunk-KCSU2OSL.js} +17 -7
  22. package/dist/{chunk-V4TITINC.js → chunk-QS262E4F.js} +9 -1
  23. package/dist/{chunk-OO64BWNB.js → chunk-RUAQAQ7X.js} +225 -210
  24. package/dist/{chunk-PCZXWOYX.js → chunk-XHRJYIJQ.js} +1 -1
  25. package/dist/{chunk-7R2HFAG4.js → chunk-XLKWD5WO.js} +9 -9
  26. package/dist/{cli-catalog-TFCCKIE4.js → cli-catalog-MRYQK7LI.js} +3 -3
  27. package/dist/cli-commands-RJF4TCEZ.js +15 -0
  28. package/dist/cli.js +10 -10
  29. package/dist/{demo-server-5TX4MJIS.js → demo-server-ASCEFIVC.js} +4 -4
  30. package/dist/index.d.ts +12 -0
  31. package/dist/index.js +6 -6
  32. package/dist/{intelligence-service-5BYJSFLW.js → intelligence-service-VRWJUHNM.js} +2 -2
  33. package/dist/mcp.js +4 -4
  34. package/package.json +11 -11
  35. package/dist/cli-commands-JEN27DWN.js +0 -15
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SiteHealthSection-Bm5nWAoZ.js","./vendor-tanstack-ZXXkndVj.js","./vendor-lucide-Y6jANGfG.js","./ChartPrimitives-CZ4wVBJL.js","./vendor-recharts-D-cUuLZo.js","./ProjectPage-BCiospUp.js","./v2-overview-adapter-DL1IsAM2.js","./vendor-markdown-B4giJcws.js","./extract-error-message-Cpzj_AMZ.js","./Hint-DICI5Jq9.js","./AuditHistoryPanel-u65pF2eT.js","./vendor-radix-twS1M3FF.js","./vendor-yaml-GWJz5H2G.js","./RunsPage-CzPvTnwG.js","./HistoryPage-CqzQSAil.js","./SettingsPage-CZYckyPO.js","./BacklinksPage-CmYpSNGB.js","./TrafficPage-DZw_GvaO.js","./TrafficSourceDetailPage-CD20PJ4A.js","./MeasurementPropertyPage-KfpmUisb.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SiteHealthSection-ClZRxJ-A.js","./vendor-tanstack-ZXXkndVj.js","./vendor-lucide-Y6jANGfG.js","./ChartPrimitives-CZ4wVBJL.js","./vendor-recharts-D-cUuLZo.js","./ProjectPage-H7nsLkhG.js","./v2-overview-adapter-BsKpkQvx.js","./vendor-markdown-B4giJcws.js","./extract-error-message-YXzyZAEc.js","./Hint-DICI5Jq9.js","./AuditHistoryPanel-BTlvVW6p.js","./vendor-radix-twS1M3FF.js","./vendor-yaml-GWJz5H2G.js","./RunsPage-CE5wFNdP.js","./HistoryPage-D_3qu4SQ.js","./SettingsPage-D2zKpqOv.js","./BacklinksPage-DQu_3poO.js","./TrafficPage-BDH4Dzk0.js","./TrafficSourceDetailPage-DaVUcHXu.js","./MeasurementPropertyPage-FKmEMw_G.js"])))=>i.map(i=>d[i]);
2
2
  import{c as X_,d as J_,r as _,j as l,Q as W_,M as e6,q as be,e as Zc,L as at,a as t6,t as Ir,u as yt,f as n6,h as Os,k as Ps,l as Fk,m as a6,n as Qk,O as pg,o as ci,p as i6,s as Bt,v as d0,x as qs,y as s6,z as o6,A as r6}from"./vendor-tanstack-ZXXkndVj.js";import{S as l6,O as m0,P as Zk,C as p0,a as Yk,T as h0,D as Xk,R as Jk}from"./vendor-radix-twS1M3FF.js";import{c as Wk}from"./vendor-recharts-D-cUuLZo.js";import{A as qc,X as Wr,S as f0,a as ej,G as tj,C as Yc,L as Rs,R as Nd,M as c6,b as u6,P as hg,H as nj,c as aj,d as d6,e as Xc,f as g0,T as Rm,g as Jc,W as ij,h as m6,i as p6,j as h6,k as f6,l as g6,m as y6,n as b6,B as v6,F as x6,o as w6,p as S6,q as k6,r as j6,s as sj,t as oj,u as fg,v as rj,w as A6,x as lj,E as N6}from"./vendor-lucide-Y6jANGfG.js";import{M as C6,r as _6}from"./vendor-markdown-B4giJcws.js";import{p as T6}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 h of u)if(h.type==="childList")for(const f of h.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&r(f)}).observe(document,{childList:!0,subtree:!0});function i(u){const h={};return u.integrity&&(h.integrity=u.integrity),u.referrerPolicy&&(h.referrerPolicy=u.referrerPolicy),u.crossOrigin==="use-credentials"?h.credentials="include":u.crossOrigin==="anonymous"?h.credentials="omit":h.credentials="same-origin",h}function r(u){if(u.ep)return;u.ep=!0;const h=i(u);fetch(u.href,h)}})();var jf={exports:{}},yc={},Af={exports:{}},Nf={};var Zx;function E6(){return Zx||(Zx=1,(function(e){function n(B,W){var ve=B.length;B.push(W);e:for(;0<ve;){var Ae=ve-1>>>1,se=B[Ae];if(0<u(se,W))B[Ae]=W,B[ve]=se,ve=Ae;else break e}}function i(B){return B.length===0?null:B[0]}function r(B){if(B.length===0)return null;var W=B[0],ve=B.pop();if(ve!==W){B[0]=ve;e:for(var Ae=0,se=B.length,Se=se>>>1;Ae<Se;){var Me=2*(Ae+1)-1,xe=B[Me],pe=Me+1,ce=B[pe];if(0>u(xe,ve))pe<se&&0>u(ce,xe)?(B[Ae]=ce,B[pe]=ve,Ae=pe):(B[Ae]=xe,B[Me]=ve,Ae=Me);else if(pe<se&&0>u(ce,ve))B[Ae]=ce,B[pe]=ve,Ae=pe;else break e}}return W}function u(B,W){var ve=B.sortIndex-W.sortIndex;return ve!==0?ve:B.id-W.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var h=performance;e.unstable_now=function(){return h.now()}}else{var f=Date,b=f.now();e.unstable_now=function(){return f.now()-b}}var v=[],x=[],S=1,j=null,C=3,T=!1,z=!1,q=!1,R=!1,P=typeof setTimeout=="function"?setTimeout:null,M=typeof clearTimeout=="function"?clearTimeout:null,L=typeof setImmediate<"u"?setImmediate:null;function $(B){for(var W=i(x);W!==null;){if(W.callback===null)r(x);else if(W.startTime<=B)r(x),W.sortIndex=W.expirationTime,n(v,W);else break;W=i(x)}}function Q(B){if(q=!1,$(B),!z)if(i(v)!==null)z=!0,ae||(ae=!0,Ge());else{var W=i(x);W!==null&&Le(Q,W.startTime-B)}}var ae=!1,V=-1,Z=5,X=-1;function Ce(){return R?!0:!(e.unstable_now()-X<Z)}function tt(){if(R=!1,ae){var B=e.unstable_now();X=B;var W=!0;try{e:{z=!1,q&&(q=!1,M(V),V=-1),T=!0;var ve=C;try{t:{for($(B),j=i(v);j!==null&&!(j.expirationTime>B&&Ce());){var Ae=j.callback;if(typeof Ae=="function"){j.callback=null,C=j.priorityLevel;var se=Ae(j.expirationTime<=B);if(B=e.unstable_now(),typeof se=="function"){j.callback=se,$(B),W=!0;break t}j===i(v)&&r(v),$(B)}else r(v);j=i(v)}if(j!==null)W=!0;else{var Se=i(x);Se!==null&&Le(Q,Se.startTime-B),W=!1}}break e}finally{j=null,C=ve,T=!1}W=void 0}}finally{W?Ge():ae=!1}}}var Ge;if(typeof L=="function")Ge=function(){L(tt)};else if(typeof MessageChannel<"u"){var Ve=new MessageChannel,ke=Ve.port2;Ve.port1.onmessage=tt,Ge=function(){ke.postMessage(null)}}else Ge=function(){P(tt,0)};function Le(B,W){V=P(function(){B(e.unstable_now())},W)}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(B){B.callback=null},e.unstable_forceFrameRate=function(B){0>B||125<B?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):Z=0<B?Math.floor(1e3/B):5},e.unstable_getCurrentPriorityLevel=function(){return C},e.unstable_next=function(B){switch(C){case 1:case 2:case 3:var W=3;break;default:W=C}var ve=C;C=W;try{return B()}finally{C=ve}},e.unstable_requestPaint=function(){R=!0},e.unstable_runWithPriority=function(B,W){switch(B){case 1:case 2:case 3:case 4:case 5:break;default:B=3}var ve=C;C=B;try{return W()}finally{C=ve}},e.unstable_scheduleCallback=function(B,W,ve){var Ae=e.unstable_now();switch(typeof ve=="object"&&ve!==null?(ve=ve.delay,ve=typeof ve=="number"&&0<ve?Ae+ve:Ae):ve=Ae,B){case 1:var se=-1;break;case 2:se=250;break;case 5:se=1073741823;break;case 4:se=1e4;break;default:se=5e3}return se=ve+se,B={id:S++,callback:W,priorityLevel:B,startTime:ve,expirationTime:se,sortIndex:-1},ve>Ae?(B.sortIndex=ve,n(x,B),i(v)===null&&B===i(x)&&(q?(M(V),V=-1):q=!0,Le(Q,ve-Ae))):(B.sortIndex=se,n(v,B),z||T||(z=!0,ae||(ae=!0,Ge()))),B},e.unstable_shouldYield=Ce,e.unstable_wrapCallback=function(B){var W=C;return function(){var ve=C;C=W;try{return B.apply(this,arguments)}finally{C=ve}}}})(Nf)),Nf}var Yx;function R6(){return Yx||(Yx=1,Af.exports=E6()),Af.exports}var Xx;function D6(){if(Xx)return yc;Xx=1;var e=R6(),n=X_(),i=J_();function r(t){var a="https://react.dev/errors/"+t;if(1<arguments.length){a+="?args[]="+encodeURIComponent(arguments[1]);for(var o=2;o<arguments.length;o++)a+="&args[]="+encodeURIComponent(arguments[o])}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 h(t){var a=t,o=t;if(t.alternate)for(;a.return;)a=a.return;else{t=a;do a=t,(a.flags&4098)!==0&&(o=a.return),t=a.return;while(t)}return a.tag===3?o:null}function f(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 v(t){if(h(t)!==t)throw Error(r(188))}function x(t){var a=t.alternate;if(!a){if(a=h(t),a===null)throw Error(r(188));return a!==t?null:t}for(var o=t,c=a;;){var p=o.return;if(p===null)break;var g=p.alternate;if(g===null){if(c=p.return,c!==null){o=c;continue}break}if(p.child===g.child){for(g=p.child;g;){if(g===o)return v(p),t;if(g===c)return v(p),a;g=g.sibling}throw Error(r(188))}if(o.return!==c.return)o=p,c=g;else{for(var w=!1,A=p.child;A;){if(A===o){w=!0,o=p,c=g;break}if(A===c){w=!0,c=p,o=g;break}A=A.sibling}if(!w){for(A=g.child;A;){if(A===o){w=!0,o=g,c=p;break}if(A===c){w=!0,c=g,o=p;break}A=A.sibling}if(!w)throw Error(r(189))}}if(o.alternate!==c)throw Error(r(190))}if(o.tag!==3)throw Error(r(188));return o.stateNode.current===o?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 j=Object.assign,C=Symbol.for("react.element"),T=Symbol.for("react.transitional.element"),z=Symbol.for("react.portal"),q=Symbol.for("react.fragment"),R=Symbol.for("react.strict_mode"),P=Symbol.for("react.profiler"),M=Symbol.for("react.consumer"),L=Symbol.for("react.context"),$=Symbol.for("react.forward_ref"),Q=Symbol.for("react.suspense"),ae=Symbol.for("react.suspense_list"),V=Symbol.for("react.memo"),Z=Symbol.for("react.lazy"),X=Symbol.for("react.activity"),Ce=Symbol.for("react.memo_cache_sentinel"),tt=Symbol.iterator;function Ge(t){return t===null||typeof t!="object"?null:(t=tt&&t[tt]||t["@@iterator"],typeof t=="function"?t:null)}var Ve=Symbol.for("react.client.reference");function ke(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===Ve?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case q:return"Fragment";case P:return"Profiler";case R:return"StrictMode";case Q:return"Suspense";case ae:return"SuspenseList";case X:return"Activity"}if(typeof t=="object")switch(t.$$typeof){case z:return"Portal";case L:return t.displayName||"Context";case M:return(t._context.displayName||"Context")+".Consumer";case $:var a=t.render;return t=t.displayName,t||(t=a.displayName||a.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case V:return a=t.displayName||null,a!==null?a:ke(t.type)||"Memo";case Z:a=t._payload,t=t._init;try{return ke(t(a))}catch{}}return null}var Le=Array.isArray,B=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,W=i.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ve={pending:!1,data:null,method:null,action:null},Ae=[],se=-1;function Se(t){return{current:t}}function Me(t){0>se||(t.current=Ae[se],Ae[se]=null,se--)}function xe(t,a){se++,Ae[se]=t.current,t.current=a}var pe=Se(null),ce=Se(null),ue=Se(null),_e=Se(null);function Ze(t,a){switch(xe(ue,a),xe(ce,t),xe(pe,null),a.nodeType){case 9:case 11:t=(t=a.documentElement)&&(t=t.namespaceURI)?bx(t):0;break;default:if(t=a.tagName,a=a.namespaceURI)a=bx(a),t=vx(a,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}Me(pe),xe(pe,t)}function Ee(){Me(pe),Me(ce),Me(ue)}function Ct(t){t.memoizedState!==null&&xe(_e,t);var a=pe.current,o=vx(a,t.type);a!==o&&(xe(ce,t),xe(pe,o))}function me(t){ce.current===t&&(Me(pe),Me(ce)),_e.current===t&&(Me(_e),pc._currentValue=ve)}var Be,Ne;function re(t){if(Be===void 0)try{throw Error()}catch(o){var a=o.stack.trim().match(/\n( *(at )?)/);Be=a&&a[1]||"",Ne=-1<o.stack.indexOf(`
3
3
  at`)?" (<anonymous>)":-1<o.stack.indexOf("@")?"@unknown:0:0":""}return`
4
4
  `+Be+t+Ne}var Ye=!1;function vt(t,a){if(!t||Ye)return"";Ye=!0;var o=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var c={DetermineComponentFrameRoot:function(){try{if(a){var ie=function(){throw Error()};if(Object.defineProperty(ie.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(ie,[])}catch(Y){var F=Y}Reflect.construct(t,[],ie)}else{try{ie.call()}catch(Y){F=Y}t.call(ie.prototype)}}else{try{throw Error()}catch(Y){F=Y}(ie=t())&&typeof ie.catch=="function"&&ie.catch(function(){})}}catch(Y){if(Y&&F&&typeof Y.stack=="string")return[Y.stack,F.stack]}return[null,null]}};c.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var p=Object.getOwnPropertyDescriptor(c.DetermineComponentFrameRoot,"name");p&&p.configurable&&Object.defineProperty(c.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var g=c.DetermineComponentFrameRoot(),w=g[0],A=g[1];if(w&&A){var D=w.split(`
@@ -49,7 +49,7 @@ Error generating stack: `+c.message+`
49
49
 
50
50
  `)}T.write("payload.value = newResult;"),T.write("return payload;");const M=T.compile();return(L,$)=>M(C,L,$)};let h;const f=Mc,b=!jj.jitless,x=b&&vR.value,S=n.catchall;let j;e._zod.parse=(C,T)=>{j??(j=r.value);const z=C.value;return f(z)?b&&x&&T?.async===!1&&T.jitless!==!0?(h||(h=u(n.shape)),C=h(C,T),S?Uj([],z,C,T,j,e):C):i(C,T):(C.issues.push({expected:"object",code:"invalid_type",input:z,inst:e}),C)}});function sw(e,n,i,r){for(const h of e)if(h.issues.length===0)return n.value=h.value,n;const u=e.filter(h=>!Mr(h));return u.length===1?(n.value=u[0].value,u[0]):(n.issues.push({code:"invalid_union",input:n.value,inst:i,errors:e.map(h=>h.issues.map(f=>zs(f,r,Ds())))}),n)}const Vj=te("$ZodUnion",(e,n)=>{Lt.init(e,n),gt(e._zod,"optin",()=>n.options.some(u=>u._zod.optin==="optional")?"optional":void 0),gt(e._zod,"optout",()=>n.options.some(u=>u._zod.optout==="optional")?"optional":void 0),gt(e._zod,"values",()=>{if(n.options.every(u=>u._zod.values))return new Set(n.options.flatMap(u=>Array.from(u._zod.values)))}),gt(e._zod,"pattern",()=>{if(n.options.every(u=>u._zod.pattern)){const u=n.options.map(h=>h._zod.pattern);return new RegExp(`^(${u.map(h=>b0(h.source)).join("|")})$`)}});const i=n.options.length===1,r=n.options[0]._zod.run;e._zod.parse=(u,h)=>{if(i)return r(u,h);let f=!1;const b=[];for(const v of n.options){const x=v._zod.run({value:u.value,issues:[]},h);if(x instanceof Promise)b.push(x),f=!0;else{if(x.issues.length===0)return x;b.push(x)}}return f?Promise.all(b).then(v=>sw(v,u,e,h)):sw(b,u,e,h)}}),rD=te("$ZodDiscriminatedUnion",(e,n)=>{n.inclusive=!1,Vj.init(e,n);const i=e._zod.parse;gt(e._zod,"propValues",()=>{const u={};for(const h of n.options){const f=h._zod.propValues;if(!f||Object.keys(f).length===0)throw new Error(`Invalid discriminated union option at index "${n.options.indexOf(h)}"`);for(const[b,v]of Object.entries(f)){u[b]||(u[b]=new Set);for(const x of v)u[b].add(x)}}return u});const r=zm(()=>{const u=n.options,h=new Map;for(const f of u){const b=f._zod.propValues?.[n.discriminator];if(!b||b.size===0)throw new Error(`Invalid discriminated union option at index "${n.options.indexOf(f)}"`);for(const v of b){if(h.has(v))throw new Error(`Duplicate discriminator value "${String(v)}"`);h.set(v,f)}}return h});e._zod.parse=(u,h)=>{const f=u.value;if(!Mc(f))return u.issues.push({code:"invalid_type",expected:"object",input:f,inst:e}),u;const b=r.value.get(f?.[n.discriminator]);return b?b._zod.run(u,h):n.unionFallback?i(u,h):(u.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:n.discriminator,input:f,path:[n.discriminator],inst:e}),u)}}),lD=te("$ZodIntersection",(e,n)=>{Lt.init(e,n),e._zod.parse=(i,r)=>{const u=i.value,h=n.left._zod.run({value:u,issues:[]},r),f=n.right._zod.run({value:u,issues:[]},r);return h instanceof Promise||f instanceof Promise?Promise.all([h,f]).then(([v,x])=>ow(i,v,x)):ow(i,h,f)}});function yg(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(Kr(e)&&Kr(n)){const i=Object.keys(n),r=Object.keys(e).filter(h=>i.indexOf(h)!==-1),u={...e,...n};for(const h of r){const f=yg(e[h],n[h]);if(!f.valid)return{valid:!1,mergeErrorPath:[h,...f.mergeErrorPath]};u[h]=f.data}return{valid:!0,data:u}}if(Array.isArray(e)&&Array.isArray(n)){if(e.length!==n.length)return{valid:!1,mergeErrorPath:[]};const i=[];for(let r=0;r<e.length;r++){const u=e[r],h=n[r],f=yg(u,h);if(!f.valid)return{valid:!1,mergeErrorPath:[r,...f.mergeErrorPath]};i.push(f.data)}return{valid:!0,data:i}}return{valid:!1,mergeErrorPath:[]}}function ow(e,n,i){const r=new Map;let u;for(const b of n.issues)if(b.code==="unrecognized_keys"){u??(u=b);for(const v of b.keys)r.has(v)||r.set(v,{}),r.get(v).l=!0}else e.issues.push(b);for(const b of i.issues)if(b.code==="unrecognized_keys")for(const v of b.keys)r.has(v)||r.set(v,{}),r.get(v).r=!0;else e.issues.push(b);const h=[...r].filter(([,b])=>b.l&&b.r).map(([b])=>b);if(h.length&&u&&e.issues.push({...u,keys:h}),Mr(e))return e;const f=yg(n.value,i.value);if(!f.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(f.mergeErrorPath)}`);return e.value=f.data,e}const cD=te("$ZodRecord",(e,n)=>{Lt.init(e,n),e._zod.parse=(i,r)=>{const u=i.value;if(!Kr(u))return i.issues.push({expected:"record",code:"invalid_type",input:u,inst:e}),i;const h=[],f=n.keyType._zod.values;if(f){i.value={};const b=new Set;for(const x of f)if(typeof x=="string"||typeof x=="number"||typeof x=="symbol"){b.add(typeof x=="number"?x.toString():x);const S=n.valueType._zod.run({value:u[x],issues:[]},r);S instanceof Promise?h.push(S.then(j=>{j.issues.length&&i.issues.push(...Br(x,j.issues)),i.value[x]=j.value})):(S.issues.length&&i.issues.push(...Br(x,S.issues)),i.value[x]=S.value)}let v;for(const x in u)b.has(x)||(v=v??[],v.push(x));v&&v.length>0&&i.issues.push({code:"unrecognized_keys",input:u,inst:e,keys:v})}else{i.value={};for(const b of Reflect.ownKeys(u)){if(b==="__proto__")continue;let v=n.keyType._zod.run({value:b,issues:[]},r);if(v instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof b=="string"&&Ij.test(b)&&v.issues.length){const j=n.keyType._zod.run({value:Number(b),issues:[]},r);if(j instanceof Promise)throw new Error("Async schemas not supported in object keys currently");j.issues.length===0&&(v=j)}if(v.issues.length){n.mode==="loose"?i.value[b]=u[b]:i.issues.push({code:"invalid_key",origin:"record",issues:v.issues.map(j=>zs(j,r,Ds())),input:b,path:[b],inst:e});continue}const S=n.valueType._zod.run({value:u[b],issues:[]},r);S instanceof Promise?h.push(S.then(j=>{j.issues.length&&i.issues.push(...Br(b,j.issues)),i.value[v.value]=j.value})):(S.issues.length&&i.issues.push(...Br(b,S.issues)),i.value[v.value]=S.value)}}return h.length?Promise.all(h).then(()=>i):i}}),uD=te("$ZodEnum",(e,n)=>{Lt.init(e,n);const i=Aj(n.entries),r=new Set(i);e._zod.values=r,e._zod.pattern=new RegExp(`^(${i.filter(u=>xR.has(typeof u)).map(u=>typeof u=="string"?Gr(u):u.toString()).join("|")})$`),e._zod.parse=(u,h)=>{const f=u.value;return r.has(f)||u.issues.push({code:"invalid_value",values:i,input:f,inst:e}),u}}),dD=te("$ZodLiteral",(e,n)=>{if(Lt.init(e,n),n.values.length===0)throw new Error("Cannot create literal schema with no valid values");const i=new Set(n.values);e._zod.values=i,e._zod.pattern=new RegExp(`^(${n.values.map(r=>typeof r=="string"?Gr(r):r?Gr(r.toString()):String(r)).join("|")})$`),e._zod.parse=(r,u)=>{const h=r.value;return i.has(h)||r.issues.push({code:"invalid_value",values:n.values,input:h,inst:e}),r}}),mD=te("$ZodTransform",(e,n)=>{Lt.init(e,n),e._zod.parse=(i,r)=>{if(r.direction==="backward")throw new kj(e.constructor.name);const u=n.transform(i.value,i);if(r.async)return(u instanceof Promise?u:Promise.resolve(u)).then(f=>(i.value=f,i));if(u instanceof Promise)throw new Ur;return i.value=u,i}});function rw(e,n){return e.issues.length&&n===void 0?{issues:[],value:void 0}:e}const $j=te("$ZodOptional",(e,n)=>{Lt.init(e,n),e._zod.optin="optional",e._zod.optout="optional",gt(e._zod,"values",()=>n.innerType._zod.values?new Set([...n.innerType._zod.values,void 0]):void 0),gt(e._zod,"pattern",()=>{const i=n.innerType._zod.pattern;return i?new RegExp(`^(${b0(i.source)})?$`):void 0}),e._zod.parse=(i,r)=>{if(n.innerType._zod.optin==="optional"){const u=n.innerType._zod.run(i,r);return u instanceof Promise?u.then(h=>rw(h,i.value)):rw(u,i.value)}return i.value===void 0?i:n.innerType._zod.run(i,r)}}),pD=te("$ZodExactOptional",(e,n)=>{$j.init(e,n),gt(e._zod,"values",()=>n.innerType._zod.values),gt(e._zod,"pattern",()=>n.innerType._zod.pattern),e._zod.parse=(i,r)=>n.innerType._zod.run(i,r)}),hD=te("$ZodNullable",(e,n)=>{Lt.init(e,n),gt(e._zod,"optin",()=>n.innerType._zod.optin),gt(e._zod,"optout",()=>n.innerType._zod.optout),gt(e._zod,"pattern",()=>{const i=n.innerType._zod.pattern;return i?new RegExp(`^(${b0(i.source)}|null)$`):void 0}),gt(e._zod,"values",()=>n.innerType._zod.values?new Set([...n.innerType._zod.values,null]):void 0),e._zod.parse=(i,r)=>i.value===null?i:n.innerType._zod.run(i,r)}),fD=te("$ZodDefault",(e,n)=>{Lt.init(e,n),e._zod.optin="optional",gt(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(i,r)=>{if(r.direction==="backward")return n.innerType._zod.run(i,r);if(i.value===void 0)return i.value=n.defaultValue,i;const u=n.innerType._zod.run(i,r);return u instanceof Promise?u.then(h=>lw(h,n)):lw(u,n)}});function lw(e,n){return e.value===void 0&&(e.value=n.defaultValue),e}const gD=te("$ZodPrefault",(e,n)=>{Lt.init(e,n),e._zod.optin="optional",gt(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(i,r)=>(r.direction==="backward"||i.value===void 0&&(i.value=n.defaultValue),n.innerType._zod.run(i,r))}),yD=te("$ZodNonOptional",(e,n)=>{Lt.init(e,n),gt(e._zod,"values",()=>{const i=n.innerType._zod.values;return i?new Set([...i].filter(r=>r!==void 0)):void 0}),e._zod.parse=(i,r)=>{const u=n.innerType._zod.run(i,r);return u instanceof Promise?u.then(h=>cw(h,e)):cw(u,e)}});function cw(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 bD=te("$ZodCatch",(e,n)=>{Lt.init(e,n),gt(e._zod,"optin",()=>n.innerType._zod.optin),gt(e._zod,"optout",()=>n.innerType._zod.optout),gt(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(i,r)=>{if(r.direction==="backward")return n.innerType._zod.run(i,r);const u=n.innerType._zod.run(i,r);return u instanceof Promise?u.then(h=>(i.value=h.value,h.issues.length&&(i.value=n.catchValue({...i,error:{issues:h.issues.map(f=>zs(f,r,Ds()))},input:i.value}),i.issues=[]),i)):(i.value=u.value,u.issues.length&&(i.value=n.catchValue({...i,error:{issues:u.issues.map(h=>zs(h,r,Ds()))},input:i.value}),i.issues=[]),i)}}),vD=te("$ZodPipe",(e,n)=>{Lt.init(e,n),gt(e._zod,"values",()=>n.in._zod.values),gt(e._zod,"optin",()=>n.in._zod.optin),gt(e._zod,"optout",()=>n.out._zod.optout),gt(e._zod,"propValues",()=>n.in._zod.propValues),e._zod.parse=(i,r)=>{if(r.direction==="backward"){const h=n.out._zod.run(i,r);return h instanceof Promise?h.then(f=>_d(f,n.in,r)):_d(h,n.in,r)}const u=n.in._zod.run(i,r);return u instanceof Promise?u.then(h=>_d(h,n.out,r)):_d(u,n.out,r)}});function _d(e,n,i){return e.issues.length?(e.aborted=!0,e):n._zod.run({value:e.value,issues:e.issues},i)}const xD=te("$ZodReadonly",(e,n)=>{Lt.init(e,n),gt(e._zod,"propValues",()=>n.innerType._zod.propValues),gt(e._zod,"values",()=>n.innerType._zod.values),gt(e._zod,"optin",()=>n.innerType?._zod?.optin),gt(e._zod,"optout",()=>n.innerType?._zod?.optout),e._zod.parse=(i,r)=>{if(r.direction==="backward")return n.innerType._zod.run(i,r);const u=n.innerType._zod.run(i,r);return u instanceof Promise?u.then(uw):uw(u)}});function uw(e){return e.value=Object.freeze(e.value),e}const wD=te("$ZodLazy",(e,n)=>{Lt.init(e,n),gt(e._zod,"innerType",()=>n.getter()),gt(e._zod,"pattern",()=>e._zod.innerType?._zod?.pattern),gt(e._zod,"propValues",()=>e._zod.innerType?._zod?.propValues),gt(e._zod,"optin",()=>e._zod.innerType?._zod?.optin??void 0),gt(e._zod,"optout",()=>e._zod.innerType?._zod?.optout??void 0),e._zod.parse=(i,r)=>e._zod.innerType._zod.run(i,r)}),SD=te("$ZodCustom",(e,n)=>{Wn.init(e,n),Lt.init(e,n),e._zod.parse=(i,r)=>i,e._zod.check=i=>{const r=i.value,u=n.fn(r);if(u instanceof Promise)return u.then(h=>dw(h,i,r,e));dw(u,i,r,e)}});function dw(e,n,i,r){if(!e){const u={code:"custom",input:i,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(Bc(u))}}var mw;class kD{constructor(){this._map=new WeakMap,this._idmap=new Map}add(n,...i){const r=i[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 i=this._map.get(n);return i&&typeof i=="object"&&"id"in i&&this._idmap.delete(i.id),this._map.delete(n),this}get(n){const i=n._zod.parent;if(i){const r={...this.get(i)??{}};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 jD(){return new kD}(mw=globalThis).__zod_globalRegistry??(mw.__zod_globalRegistry=jD());const Nc=globalThis.__zod_globalRegistry;function AD(e,n){return new e({type:"string",...qe(n)})}function ND(e,n){return new e({type:"string",format:"email",check:"string_format",abort:!1,...qe(n)})}function pw(e,n){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...qe(n)})}function Kj(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...qe(n)})}function CD(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...qe(n)})}function _D(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...qe(n)})}function TD(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...qe(n)})}function ED(e,n){return new e({type:"string",format:"url",check:"string_format",abort:!1,...qe(n)})}function RD(e,n){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...qe(n)})}function DD(e,n){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...qe(n)})}function zD(e,n){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...qe(n)})}function ID(e,n){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...qe(n)})}function OD(e,n){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...qe(n)})}function PD(e,n){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...qe(n)})}function qD(e,n){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...qe(n)})}function MD(e,n){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...qe(n)})}function BD(e,n){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...qe(n)})}function LD(e,n){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...qe(n)})}function UD(e,n){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...qe(n)})}function VD(e,n){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...qe(n)})}function $D(e,n){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...qe(n)})}function KD(e,n){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...qe(n)})}function GD(e,n){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...qe(n)})}function HD(e,n){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...qe(n)})}function FD(e,n){return new e({type:"string",format:"date",check:"string_format",...qe(n)})}function QD(e,n){return new e({type:"string",format:"time",check:"string_format",precision:null,...qe(n)})}function ZD(e,n){return new e({type:"string",format:"duration",check:"string_format",...qe(n)})}function YD(e,n){return new e({type:"number",checks:[],...qe(n)})}function XD(e,n){return new e({type:"number",coerce:!0,checks:[],...qe(n)})}function JD(e,n){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...qe(n)})}function WD(e,n){return new e({type:"boolean",...qe(n)})}function ez(e,n){return new e({type:"null",...qe(n)})}function tz(e){return new e({type:"unknown"})}function nz(e,n){return new e({type:"never",...qe(n)})}function hw(e,n){return new Pj({check:"less_than",...qe(n),value:e,inclusive:!1})}function _f(e,n){return new Pj({check:"less_than",...qe(n),value:e,inclusive:!0})}function fw(e,n){return new qj({check:"greater_than",...qe(n),value:e,inclusive:!1})}function Tf(e,n){return new qj({check:"greater_than",...qe(n),value:e,inclusive:!0})}function gw(e,n){return new h7({check:"multiple_of",...qe(n),value:e})}function Gj(e,n){return new g7({check:"max_length",...qe(n),maximum:e})}function am(e,n){return new y7({check:"min_length",...qe(n),minimum:e})}function Hj(e,n){return new b7({check:"length_equals",...qe(n),length:e})}function az(e,n){return new v7({check:"string_format",format:"regex",...qe(n),pattern:e})}function iz(e){return new x7({check:"string_format",format:"lowercase",...qe(e)})}function sz(e){return new w7({check:"string_format",format:"uppercase",...qe(e)})}function oz(e,n){return new S7({check:"string_format",format:"includes",...qe(n),includes:e})}function rz(e,n){return new k7({check:"string_format",format:"starts_with",...qe(n),prefix:e})}function lz(e,n){return new j7({check:"string_format",format:"ends_with",...qe(n),suffix:e})}function el(e){return new A7({check:"overwrite",tx:e})}function cz(e){return el(n=>n.normalize(e))}function uz(){return el(e=>e.trim())}function dz(){return el(e=>e.toLowerCase())}function mz(){return el(e=>e.toUpperCase())}function pz(){return el(e=>bR(e))}function hz(e,n,i){return new e({type:"array",element:n,...qe(i)})}function fz(e,n,i){return new e({type:"custom",check:"custom",fn:n,...qe(i)})}function gz(e){const n=yz(i=>(i.addIssue=r=>{if(typeof r=="string")i.issues.push(Bc(r,i.value,n._zod.def));else{const u=r;u.fatal&&(u.continue=!1),u.code??(u.code="custom"),u.input??(u.input=i.value),u.inst??(u.inst=n),u.continue??(u.continue=!n._zod.def.abort),i.issues.push(Bc(u))}},e(i.value,i)));return n}function yz(e,n){const i=new Wn({check:"custom",...qe(n)});return i._zod.check=e,i}function Fj(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??Nc,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 on(e,n,i={path:[],schemaPath:[]}){var r;const u=e._zod.def,h=n.seen.get(e);if(h)return h.count++,i.schemaPath.includes(e)&&(h.cycle=i.path),h.schema;const f={schema:{},count:1,cycle:void 0,path:i.path};n.seen.set(e,f);const b=e._zod.toJSONSchema?.();if(b)f.schema=b;else{const S={...i,schemaPath:[...i.schemaPath,e],path:i.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(n,f.schema,S);else{const C=f.schema,T=n.processors[u.type];if(!T)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${u.type}`);T(e,n,C,S)}const j=e._zod.parent;j&&(f.ref||(f.ref=j),on(j,n,S),n.seen.get(j).isParent=!0)}const v=n.metadataRegistry.get(e);return v&&Object.assign(f.schema,v),n.io==="input"&&Un(e)&&(delete f.schema.examples,delete f.schema.default),n.io==="input"&&f.schema._prefault&&((r=f.schema).default??(r.default=f.schema._prefault)),delete f.schema._prefault,n.seen.get(e).schema}function Qj(e,n){const i=e.seen.get(n);if(!i)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=new Map;for(const f of e.seen.entries()){const b=e.metadataRegistry.get(f[0])?.id;if(b){const v=r.get(b);if(v&&v!==f[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,f[0])}}const u=f=>{const b=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){const j=e.external.registry.get(f[0])?.id,C=e.external.uri??(z=>z);if(j)return{ref:C(j)};const T=f[1].defId??f[1].schema.id??`schema${e.counter++}`;return f[1].defId=T,{defId:T,ref:`${C("__shared")}#/${b}/${T}`}}if(f[1]===i)return{ref:"#"};const x=`#/${b}/`,S=f[1].schema.id??`__schema${e.counter++}`;return{defId:S,ref:x+S}},h=f=>{if(f[1].schema.$ref)return;const b=f[1],{ref:v,defId:x}=u(f);b.def={...b.schema},x&&(b.defId=x);const S=b.schema;for(const j in S)delete S[j];S.$ref=v};if(e.cycles==="throw")for(const f of e.seen.entries()){const b=f[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 f of e.seen.entries()){const b=f[1];if(n===f[0]){h(f);continue}if(e.external){const x=e.external.registry.get(f[0])?.id;if(n!==f[0]&&x){h(f);continue}}if(e.metadataRegistry.get(f[0])?.id){h(f);continue}if(b.cycle){h(f);continue}if(b.count>1&&e.reused==="ref"){h(f);continue}}}function Zj(e,n){const i=e.seen.get(n);if(!i)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=f=>{const b=e.seen.get(f);if(b.ref===null)return;const v=b.def??b.schema,x={...v},S=b.ref;if(b.ref=null,S){r(S);const C=e.seen.get(S),T=C.schema;if(T.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(v.allOf=v.allOf??[],v.allOf.push(T)):Object.assign(v,T),Object.assign(v,x),f._zod.parent===S)for(const q in v)q==="$ref"||q==="allOf"||q in x||delete v[q];if(T.$ref&&C.def)for(const q in v)q==="$ref"||q==="allOf"||q in C.def&&JSON.stringify(v[q])===JSON.stringify(C.def[q])&&delete v[q]}const j=f._zod.parent;if(j&&j!==S){r(j);const C=e.seen.get(j);if(C?.schema.$ref&&(v.$ref=C.schema.$ref,C.def))for(const T in v)T==="$ref"||T==="allOf"||T in C.def&&JSON.stringify(v[T])===JSON.stringify(C.def[T])&&delete v[T]}e.override({zodSchema:f,jsonSchema:v,path:b.path??[]})};for(const f of[...e.seen.entries()].reverse())r(f[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 f=e.external.registry.get(n)?.id;if(!f)throw new Error("Schema is missing an `id` property");u.$id=e.external.uri(f)}Object.assign(u,i.def??i.schema);const h=e.external?.defs??{};for(const f of e.seen.entries()){const b=f[1];b.def&&b.defId&&(h[b.defId]=b.def)}e.external||Object.keys(h).length>0&&(e.target==="draft-2020-12"?u.$defs=h:u.definitions=h);try{const f=JSON.parse(JSON.stringify(u));return Object.defineProperty(f,"~standard",{value:{...n["~standard"],jsonSchema:{input:im(n,"input",e.processors),output:im(n,"output",e.processors)}},enumerable:!1,writable:!1}),f}catch{throw new Error("Error converting schema to JSON.")}}function Un(e,n){const i=n??{seen:new Set};if(i.seen.has(e))return!1;i.seen.add(e);const r=e._zod.def;if(r.type==="transform")return!0;if(r.type==="array")return Un(r.element,i);if(r.type==="set")return Un(r.valueType,i);if(r.type==="lazy")return Un(r.getter(),i);if(r.type==="promise"||r.type==="optional"||r.type==="nonoptional"||r.type==="nullable"||r.type==="readonly"||r.type==="default"||r.type==="prefault")return Un(r.innerType,i);if(r.type==="intersection")return Un(r.left,i)||Un(r.right,i);if(r.type==="record"||r.type==="map")return Un(r.keyType,i)||Un(r.valueType,i);if(r.type==="pipe")return Un(r.in,i)||Un(r.out,i);if(r.type==="object"){for(const u in r.shape)if(Un(r.shape[u],i))return!0;return!1}if(r.type==="union"){for(const u of r.options)if(Un(u,i))return!0;return!1}if(r.type==="tuple"){for(const u of r.items)if(Un(u,i))return!0;return!!(r.rest&&Un(r.rest,i))}return!1}const bz=(e,n={})=>i=>{const r=Fj({...i,processors:n});return on(e,r),Qj(r,e),Zj(r,e)},im=(e,n,i={})=>r=>{const{libraryOptions:u,target:h}=r??{},f=Fj({...u??{},target:h,io:n,processors:i});return on(e,f),Qj(f,e),Zj(f,e)},vz={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},xz=(e,n,i,r)=>{const u=i;u.type="string";const{minimum:h,maximum:f,format:b,patterns:v,contentEncoding:x}=e._zod.bag;if(typeof h=="number"&&(u.minLength=h),typeof f=="number"&&(u.maxLength=f),b&&(u.format=vz[b]??b,u.format===""&&delete u.format,b==="time"&&delete u.format),x&&(u.contentEncoding=x),v&&v.size>0){const S=[...v];S.length===1?u.pattern=S[0].source:S.length>1&&(u.allOf=[...S.map(j=>({...n.target==="draft-07"||n.target==="draft-04"||n.target==="openapi-3.0"?{type:"string"}:{},pattern:j.source}))])}},wz=(e,n,i,r)=>{const u=i,{minimum:h,maximum:f,format:b,multipleOf:v,exclusiveMaximum:x,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 h=="number"&&(u.minimum=h,typeof S=="number"&&n.target!=="draft-04"&&(S>=h?delete u.minimum:delete u.exclusiveMinimum)),typeof x=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(u.maximum=x,u.exclusiveMaximum=!0):u.exclusiveMaximum=x),typeof f=="number"&&(u.maximum=f,typeof x=="number"&&n.target!=="draft-04"&&(x<=f?delete u.maximum:delete u.exclusiveMaximum)),typeof v=="number"&&(u.multipleOf=v)},Sz=(e,n,i,r)=>{i.type="boolean"},kz=(e,n,i,r)=>{n.target==="openapi-3.0"?(i.type="string",i.nullable=!0,i.enum=[null]):i.type="null"},jz=(e,n,i,r)=>{i.not={}},Az=(e,n,i,r)=>{},Nz=(e,n,i,r)=>{const u=e._zod.def,h=Aj(u.entries);h.every(f=>typeof f=="number")&&(i.type="number"),h.every(f=>typeof f=="string")&&(i.type="string"),i.enum=h},Cz=(e,n,i,r)=>{const u=e._zod.def,h=[];for(const f of u.values)if(f===void 0){if(n.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof f=="bigint"){if(n.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");h.push(Number(f))}else h.push(f);if(h.length!==0)if(h.length===1){const f=h[0];i.type=f===null?"null":typeof f,n.target==="draft-04"||n.target==="openapi-3.0"?i.enum=[f]:i.const=f}else h.every(f=>typeof f=="number")&&(i.type="number"),h.every(f=>typeof f=="string")&&(i.type="string"),h.every(f=>typeof f=="boolean")&&(i.type="boolean"),h.every(f=>f===null)&&(i.type="null"),i.enum=h},_z=(e,n,i,r)=>{if(n.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},Tz=(e,n,i,r)=>{if(n.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},Ez=(e,n,i,r)=>{const u=i,h=e._zod.def,{minimum:f,maximum:b}=e._zod.bag;typeof f=="number"&&(u.minItems=f),typeof b=="number"&&(u.maxItems=b),u.type="array",u.items=on(h.element,n,{...r,path:[...r.path,"items"]})},Rz=(e,n,i,r)=>{const u=i,h=e._zod.def;u.type="object",u.properties={};const f=h.shape;for(const x in f)u.properties[x]=on(f[x],n,{...r,path:[...r.path,"properties",x]});const b=new Set(Object.keys(f)),v=new Set([...b].filter(x=>{const S=h.shape[x]._zod;return n.io==="input"?S.optin===void 0:S.optout===void 0}));v.size>0&&(u.required=Array.from(v)),h.catchall?._zod.def.type==="never"?u.additionalProperties=!1:h.catchall?h.catchall&&(u.additionalProperties=on(h.catchall,n,{...r,path:[...r.path,"additionalProperties"]})):n.io==="output"&&(u.additionalProperties=!1)},Dz=(e,n,i,r)=>{const u=e._zod.def,h=u.inclusive===!1,f=u.options.map((b,v)=>on(b,n,{...r,path:[...r.path,h?"oneOf":"anyOf",v]}));h?i.oneOf=f:i.anyOf=f},zz=(e,n,i,r)=>{const u=e._zod.def,h=on(u.left,n,{...r,path:[...r.path,"allOf",0]}),f=on(u.right,n,{...r,path:[...r.path,"allOf",1]}),b=x=>"allOf"in x&&Object.keys(x).length===1,v=[...b(h)?h.allOf:[h],...b(f)?f.allOf:[f]];i.allOf=v},Iz=(e,n,i,r)=>{const u=i,h=e._zod.def;u.type="object";const f=h.keyType,v=f._zod.bag?.patterns;if(h.mode==="loose"&&v&&v.size>0){const S=on(h.valueType,n,{...r,path:[...r.path,"patternProperties","*"]});u.patternProperties={};for(const j of v)u.patternProperties[j.source]=S}else(n.target==="draft-07"||n.target==="draft-2020-12")&&(u.propertyNames=on(h.keyType,n,{...r,path:[...r.path,"propertyNames"]})),u.additionalProperties=on(h.valueType,n,{...r,path:[...r.path,"additionalProperties"]});const x=f._zod.values;if(x){const S=[...x].filter(j=>typeof j=="string"||typeof j=="number");S.length>0&&(u.required=S)}},Oz=(e,n,i,r)=>{const u=e._zod.def,h=on(u.innerType,n,r),f=n.seen.get(e);n.target==="openapi-3.0"?(f.ref=u.innerType,i.nullable=!0):i.anyOf=[h,{type:"null"}]},Pz=(e,n,i,r)=>{const u=e._zod.def;on(u.innerType,n,r);const h=n.seen.get(e);h.ref=u.innerType},qz=(e,n,i,r)=>{const u=e._zod.def;on(u.innerType,n,r);const h=n.seen.get(e);h.ref=u.innerType,i.default=JSON.parse(JSON.stringify(u.defaultValue))},Mz=(e,n,i,r)=>{const u=e._zod.def;on(u.innerType,n,r);const h=n.seen.get(e);h.ref=u.innerType,n.io==="input"&&(i._prefault=JSON.parse(JSON.stringify(u.defaultValue)))},Bz=(e,n,i,r)=>{const u=e._zod.def;on(u.innerType,n,r);const h=n.seen.get(e);h.ref=u.innerType;let f;try{f=u.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}i.default=f},Lz=(e,n,i,r)=>{const u=e._zod.def,h=n.io==="input"?u.in._zod.def.type==="transform"?u.out:u.in:u.out;on(h,n,r);const f=n.seen.get(e);f.ref=h},Uz=(e,n,i,r)=>{const u=e._zod.def;on(u.innerType,n,r);const h=n.seen.get(e);h.ref=u.innerType,i.readOnly=!0},Yj=(e,n,i,r)=>{const u=e._zod.def;on(u.innerType,n,r);const h=n.seen.get(e);h.ref=u.innerType},Vz=(e,n,i,r)=>{const u=e._zod.innerType;on(u,n,r);const h=n.seen.get(e);h.ref=u},$z=te("ZodISODateTime",(e,n)=>{B7.init(e,n),Xt.init(e,n)});function sm(e){return HD($z,e)}const Kz=te("ZodISODate",(e,n)=>{L7.init(e,n),Xt.init(e,n)});function Is(e){return FD(Kz,e)}const Gz=te("ZodISOTime",(e,n)=>{U7.init(e,n),Xt.init(e,n)});function Hz(e){return QD(Gz,e)}const Fz=te("ZodISODuration",(e,n)=>{V7.init(e,n),Xt.init(e,n)});function Qz(e){return ZD(Fz,e)}const Zz=(e,n)=>{Tj.init(e,n),e.name="ZodError",Object.defineProperties(e,{format:{value:i=>RR(e,i)},flatten:{value:i=>ER(e,i)},addIssue:{value:i=>{e.issues.push(i),e.message=JSON.stringify(e.issues,gg,2)}},addIssues:{value:i=>{e.issues.push(...i),e.message=JSON.stringify(e.issues,gg,2)}},isEmpty:{get(){return e.issues.length===0}}})},Ia=te("ZodError",Zz,{Parent:Error}),Yz=x0(Ia),Xz=w0(Ia),Jz=Im(Ia),Wz=Om(Ia),eI=IR(Ia),tI=OR(Ia),nI=PR(Ia),aI=qR(Ia),iI=MR(Ia),sI=BR(Ia),oI=LR(Ia),rI=UR(Ia),Ut=te("ZodType",(e,n)=>(Lt.init(e,n),Object.assign(e["~standard"],{jsonSchema:{input:im(e,"input"),output:im(e,"output")}}),e.toJSONSchema=bz(e,{}),e.def=n,e.type=n.type,Object.defineProperty(e,"_def",{value:n}),e.check=(...i)=>e.clone(Ms(n,{checks:[...n.checks??[],...i.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0}),e.with=e.check,e.clone=(i,r)=>Bs(e,i,r),e.brand=()=>e,e.register=((i,r)=>(i.add(e,r),e)),e.parse=(i,r)=>Yz(e,i,r,{callee:e.parse}),e.safeParse=(i,r)=>Jz(e,i,r),e.parseAsync=async(i,r)=>Xz(e,i,r,{callee:e.parseAsync}),e.safeParseAsync=async(i,r)=>Wz(e,i,r),e.spa=e.safeParseAsync,e.encode=(i,r)=>eI(e,i,r),e.decode=(i,r)=>tI(e,i,r),e.encodeAsync=async(i,r)=>nI(e,i,r),e.decodeAsync=async(i,r)=>aI(e,i,r),e.safeEncode=(i,r)=>iI(e,i,r),e.safeDecode=(i,r)=>sI(e,i,r),e.safeEncodeAsync=async(i,r)=>oI(e,i,r),e.safeDecodeAsync=async(i,r)=>rI(e,i,r),e.refine=(i,r)=>e.check(aO(i,r)),e.superRefine=i=>e.check(iO(i)),e.overwrite=i=>e.check(el(i)),e.optional=()=>vw(e),e.exactOptional=()=>VI(e),e.nullable=()=>xw(e),e.nullish=()=>vw(xw(e)),e.nonoptional=i=>QI(e,i),e.array=()=>y(e),e.or=i=>Fe([e,i]),e.and=i=>qI(e,i),e.transform=i=>vg(e,e2(i)),e.default=i=>GI(e,i),e.prefault=i=>FI(e,i),e.catch=i=>YI(e,i),e.pipe=i=>vg(e,i),e.readonly=()=>WI(e),e.describe=i=>{const r=e.clone();return Nc.add(r,{description:i}),r},Object.defineProperty(e,"description",{get(){return Nc.get(e)?.description},configurable:!0}),e.meta=(...i)=>{if(i.length===0)return Nc.get(e);const r=e.clone();return Nc.add(r,i[0]),r},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=i=>i(e),e)),Xj=te("_ZodString",(e,n)=>{S0.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(r,u,h)=>xz(e,r,u);const i=e._zod.bag;e.format=i.format??null,e.minLength=i.minimum??null,e.maxLength=i.maximum??null,e.regex=(...r)=>e.check(az(...r)),e.includes=(...r)=>e.check(oz(...r)),e.startsWith=(...r)=>e.check(rz(...r)),e.endsWith=(...r)=>e.check(lz(...r)),e.min=(...r)=>e.check(am(...r)),e.max=(...r)=>e.check(Gj(...r)),e.length=(...r)=>e.check(Hj(...r)),e.nonempty=(...r)=>e.check(am(1,...r)),e.lowercase=r=>e.check(iz(r)),e.uppercase=r=>e.check(sz(r)),e.trim=()=>e.check(uz()),e.normalize=(...r)=>e.check(cz(...r)),e.toLowerCase=()=>e.check(dz()),e.toUpperCase=()=>e.check(mz()),e.slugify=()=>e.check(pz())}),lI=te("ZodString",(e,n)=>{S0.init(e,n),Xj.init(e,n),e.email=i=>e.check(ND(cI,i)),e.url=i=>e.check(ED(dI,i)),e.jwt=i=>e.check(GD(NI,i)),e.emoji=i=>e.check(RD(mI,i)),e.guid=i=>e.check(pw(yw,i)),e.uuid=i=>e.check(Kj(Cc,i)),e.uuidv4=i=>e.check(CD(Cc,i)),e.uuidv6=i=>e.check(_D(Cc,i)),e.uuidv7=i=>e.check(TD(Cc,i)),e.nanoid=i=>e.check(DD(pI,i)),e.guid=i=>e.check(pw(yw,i)),e.cuid=i=>e.check(zD(hI,i)),e.cuid2=i=>e.check(ID(fI,i)),e.ulid=i=>e.check(OD(gI,i)),e.base64=i=>e.check(VD(kI,i)),e.base64url=i=>e.check($D(jI,i)),e.xid=i=>e.check(PD(yI,i)),e.ksuid=i=>e.check(qD(bI,i)),e.ipv4=i=>e.check(MD(vI,i)),e.ipv6=i=>e.check(BD(xI,i)),e.cidrv4=i=>e.check(LD(wI,i)),e.cidrv6=i=>e.check(UD(SI,i)),e.e164=i=>e.check(KD(AI,i)),e.datetime=i=>e.check(sm(i)),e.date=i=>e.check(Is(i)),e.time=i=>e.check(Hz(i)),e.duration=i=>e.check(Qz(i))});function s(e){return AD(lI,e)}const Xt=te("ZodStringFormat",(e,n)=>{Gt.init(e,n),Xj.init(e,n)}),cI=te("ZodEmail",(e,n)=>{E7.init(e,n),Xt.init(e,n)}),yw=te("ZodGUID",(e,n)=>{_7.init(e,n),Xt.init(e,n)}),Cc=te("ZodUUID",(e,n)=>{T7.init(e,n),Xt.init(e,n)});function uI(e){return Kj(Cc,e)}const dI=te("ZodURL",(e,n)=>{R7.init(e,n),Xt.init(e,n)}),mI=te("ZodEmoji",(e,n)=>{D7.init(e,n),Xt.init(e,n)}),pI=te("ZodNanoID",(e,n)=>{z7.init(e,n),Xt.init(e,n)}),hI=te("ZodCUID",(e,n)=>{I7.init(e,n),Xt.init(e,n)}),fI=te("ZodCUID2",(e,n)=>{O7.init(e,n),Xt.init(e,n)}),gI=te("ZodULID",(e,n)=>{P7.init(e,n),Xt.init(e,n)}),yI=te("ZodXID",(e,n)=>{q7.init(e,n),Xt.init(e,n)}),bI=te("ZodKSUID",(e,n)=>{M7.init(e,n),Xt.init(e,n)}),vI=te("ZodIPv4",(e,n)=>{$7.init(e,n),Xt.init(e,n)}),xI=te("ZodIPv6",(e,n)=>{K7.init(e,n),Xt.init(e,n)}),wI=te("ZodCIDRv4",(e,n)=>{G7.init(e,n),Xt.init(e,n)}),SI=te("ZodCIDRv6",(e,n)=>{H7.init(e,n),Xt.init(e,n)}),kI=te("ZodBase64",(e,n)=>{F7.init(e,n),Xt.init(e,n)}),jI=te("ZodBase64URL",(e,n)=>{Z7.init(e,n),Xt.init(e,n)}),AI=te("ZodE164",(e,n)=>{Y7.init(e,n),Xt.init(e,n)}),NI=te("ZodJWT",(e,n)=>{J7.init(e,n),Xt.init(e,n)}),k0=te("ZodNumber",(e,n)=>{Bj.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(r,u,h)=>wz(e,r,u),e.gt=(r,u)=>e.check(fw(r,u)),e.gte=(r,u)=>e.check(Tf(r,u)),e.min=(r,u)=>e.check(Tf(r,u)),e.lt=(r,u)=>e.check(hw(r,u)),e.lte=(r,u)=>e.check(_f(r,u)),e.max=(r,u)=>e.check(_f(r,u)),e.int=r=>e.check(bw(r)),e.safe=r=>e.check(bw(r)),e.positive=r=>e.check(fw(0,r)),e.nonnegative=r=>e.check(Tf(0,r)),e.negative=r=>e.check(hw(0,r)),e.nonpositive=r=>e.check(_f(0,r)),e.multipleOf=(r,u)=>e.check(gw(r,u)),e.step=(r,u)=>e.check(gw(r,u)),e.finite=()=>e;const i=e._zod.bag;e.minValue=Math.max(i.minimum??Number.NEGATIVE_INFINITY,i.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(i.maximum??Number.POSITIVE_INFINITY,i.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(i.format??"").includes("int")||Number.isSafeInteger(i.multipleOf??.5),e.isFinite=!0,e.format=i.format??null});function m(e){return YD(k0,e)}const CI=te("ZodNumberFormat",(e,n)=>{W7.init(e,n),k0.init(e,n)});function bw(e){return JD(CI,e)}const _I=te("ZodBoolean",(e,n)=>{eD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Sz(e,i,r)});function N(e){return WD(_I,e)}const TI=te("ZodNull",(e,n)=>{tD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>kz(e,i,r)});function de(e){return ez(TI,e)}const EI=te("ZodUnknown",(e,n)=>{nD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Az()});function kn(){return tz(EI)}const RI=te("ZodNever",(e,n)=>{aD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>jz(e,i,r)});function DI(e){return nz(RI,e)}const zI=te("ZodArray",(e,n)=>{iD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Ez(e,i,r,u),e.element=n.element,e.min=(i,r)=>e.check(am(i,r)),e.nonempty=i=>e.check(am(1,i)),e.max=(i,r)=>e.check(Gj(i,r)),e.length=(i,r)=>e.check(Hj(i,r)),e.unwrap=()=>e.element});function y(e,n){return hz(zI,e,n)}const Jj=te("ZodObject",(e,n)=>{oD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Rz(e,i,r,u),gt(e,"shape",()=>n.shape),e.keyof=()=>k(Object.keys(e._zod.def.shape)),e.catchall=i=>e.clone({...e._zod.def,catchall:i}),e.passthrough=()=>e.clone({...e._zod.def,catchall:kn()}),e.loose=()=>e.clone({...e._zod.def,catchall:kn()}),e.strict=()=>e.clone({...e._zod.def,catchall:DI()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=i=>AR(e,i),e.safeExtend=i=>NR(e,i),e.merge=i=>CR(e,i),e.pick=i=>kR(e,i),e.omit=i=>jR(e,i),e.partial=(...i)=>_R(t2,e,i[0]),e.required=(...i)=>TR(n2,e,i[0])});function d(e,n){const i={type:"object",shape:e??{},...qe(n)};return new Jj(i)}function II(e,n){return new Jj({type:"object",shape:e,catchall:kn(),...qe(n)})}const Wj=te("ZodUnion",(e,n)=>{Vj.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Dz(e,i,r,u),e.options=n.options});function Fe(e,n){return new Wj({type:"union",options:e,...qe(n)})}const OI=te("ZodDiscriminatedUnion",(e,n)=>{Wj.init(e,n),rD.init(e,n)});function Ue(e,n,i){return new OI({type:"union",options:n,discriminator:e,...qe(i)})}const PI=te("ZodIntersection",(e,n)=>{lD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>zz(e,i,r,u)});function qI(e,n){return new PI({type:"intersection",left:e,right:n})}const MI=te("ZodRecord",(e,n)=>{cD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Iz(e,i,r,u),e.keyType=n.keyType,e.valueType=n.valueType});function Ke(e,n,i){return new MI({type:"record",keyType:e,valueType:n,...qe(i)})}const bg=te("ZodEnum",(e,n)=>{uD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(r,u,h)=>Nz(e,r,u),e.enum=n.entries,e.options=Object.values(n.entries);const i=new Set(Object.keys(n.entries));e.extract=(r,u)=>{const h={};for(const f of r)if(i.has(f))h[f]=n.entries[f];else throw new Error(`Key ${f} not found in enum`);return new bg({...n,checks:[],...qe(u),entries:h})},e.exclude=(r,u)=>{const h={...n.entries};for(const f of r)if(i.has(f))delete h[f];else throw new Error(`Key ${f} not found in enum`);return new bg({...n,checks:[],...qe(u),entries:h})}});function k(e,n){const i=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new bg({type:"enum",entries:i,...qe(n)})}const BI=te("ZodLiteral",(e,n)=>{dD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Cz(e,i,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 E(e,n){return new BI({type:"literal",values:Array.isArray(e)?e:[e],...qe(n)})}const LI=te("ZodTransform",(e,n)=>{mD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Tz(e,i),e._zod.parse=(i,r)=>{if(r.direction==="backward")throw new kj(e.constructor.name);i.addIssue=h=>{if(typeof h=="string")i.issues.push(Bc(h,i.value,n));else{const f=h;f.fatal&&(f.continue=!1),f.code??(f.code="custom"),f.input??(f.input=i.value),f.inst??(f.inst=e),i.issues.push(Bc(f))}};const u=n.transform(i.value,i);return u instanceof Promise?u.then(h=>(i.value=h,i)):(i.value=u,i)}});function e2(e){return new LI({type:"transform",transform:e})}const t2=te("ZodOptional",(e,n)=>{$j.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Yj(e,i,r,u),e.unwrap=()=>e._zod.def.innerType});function vw(e){return new t2({type:"optional",innerType:e})}const UI=te("ZodExactOptional",(e,n)=>{pD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Yj(e,i,r,u),e.unwrap=()=>e._zod.def.innerType});function VI(e){return new UI({type:"optional",innerType:e})}const $I=te("ZodNullable",(e,n)=>{hD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Oz(e,i,r,u),e.unwrap=()=>e._zod.def.innerType});function xw(e){return new $I({type:"nullable",innerType:e})}const KI=te("ZodDefault",(e,n)=>{fD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>qz(e,i,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function GI(e,n){return new KI({type:"default",innerType:e,get defaultValue(){return typeof n=="function"?n():Cj(n)}})}const HI=te("ZodPrefault",(e,n)=>{gD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Mz(e,i,r,u),e.unwrap=()=>e._zod.def.innerType});function FI(e,n){return new HI({type:"prefault",innerType:e,get defaultValue(){return typeof n=="function"?n():Cj(n)}})}const n2=te("ZodNonOptional",(e,n)=>{yD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Pz(e,i,r,u),e.unwrap=()=>e._zod.def.innerType});function QI(e,n){return new n2({type:"nonoptional",innerType:e,...qe(n)})}const ZI=te("ZodCatch",(e,n)=>{bD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Bz(e,i,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function YI(e,n){return new ZI({type:"catch",innerType:e,catchValue:typeof n=="function"?n:()=>n})}const XI=te("ZodPipe",(e,n)=>{vD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Lz(e,i,r,u),e.in=n.in,e.out=n.out});function vg(e,n){return new XI({type:"pipe",in:e,out:n})}const JI=te("ZodReadonly",(e,n)=>{xD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Uz(e,i,r,u),e.unwrap=()=>e._zod.def.innerType});function WI(e){return new JI({type:"readonly",innerType:e})}const eO=te("ZodLazy",(e,n)=>{wD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Vz(e,i,r,u),e.unwrap=()=>e._zod.def.getter()});function tO(e){return new eO({type:"lazy",getter:e})}const nO=te("ZodCustom",(e,n)=>{SD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>_z(e,i)});function aO(e,n={}){return fz(nO,e,n)}function iO(e){return gz(e)}function Ya(e,n){return vg(e2(e),n)}const fe={custom:"custom"};function Ha(e){return XD(k0,e)}const a2=d({id:s(),name:s(),keyPrefix:s(),scopes:y(s()),projectId:s().nullable(),projectName:s().nullable(),readOnly:N(),operator:N().optional(),createdAt:s(),lastUsedAt:s().nullable(),revokedAt:s().nullable()});d({keys:y(a2)});d({name:s().min(1).max(100),scopes:y(s()).min(1).optional(),projectId:s().optional()});a2.extend({key:s()});const j0=k(["used","not-used","unknown","not-applicable"]);j0.enum;const A0=k(["native-auto-v1","search-required-v1"]);A0.enum;const sO=d({maxConcurrency:m().int().positive(),maxRequestsPerMinute:m().int().positive(),maxRequestsPerDay:m().int().positive()}),xg=["gemini","openai","claude","perplexity","muse","local","cdp:chatgpt"],bt=s().min(1),Mo=Ke(s(),s().trim().min(1));s().min(1);const Jt=d({label:s().min(1),city:s().min(1),region:s().min(1),country:s().length(2),timezone:s().optional()}),N0=k(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync","doctor"]);N0.enum;const qm=d({everyDays:m().int().min(1).max(3650),startDate:s().date(),time:s().regex(/^([01]\d|2[0-3]):[0-5]\d$/,"Time must be HH:mm")}).strict();d({id:s(),projectId:s(),kind:N0,cronExpr:s(),recurrence:qm.nullable().optional(),preset:s().nullable().optional(),timezone:s().default("UTC"),enabled:N().default(!0),providers:y(bt).default([]),sourceId:s().nullable().optional(),lastRunAt:s().nullable().optional(),nextRunAt:s().nullable().optional(),createdAt:s(),updatedAt:s()});const oO=s().datetime();d({kind:N0.optional(),preset:s().min(1).optional(),cron:s().min(1).optional(),recurrence:qm.optional(),timezone:s().optional().default("UTC"),enabled:N().optional().default(!0),providers:y(bt).optional().default([]),sourceId:s().optional(),expectedUpdatedAt:oO.nullable().optional()}).refine(e=>[e.preset,e.cron,e.recurrence].filter(n=>n!==void 0).length===1,{message:'Exactly one of "preset", "cron", or "recurrence" must be provided'});const Mm=k(["citation.lost","citation.gained","run.completed","run.failed","insight.critical","insight.high","health.degraded","health.recovered","health.urgent","health.urgent-resolved","review.negative","review.rating-dropped"]);d({id:s(),projectId:s(),channel:E("webhook"),url:s().url(),urlDisplay:s(),urlHost:s(),events:y(Mm),enabled:N().default(!0),source:s().optional(),webhookSecret:s().optional(),createdAt:s(),updatedAt:s()});d({channel:E("webhook"),url:s().url(),events:y(Mm).min(1),source:s().optional()});class rO extends Error{code;statusCode;details;constructor(n,i,r,u){super(i),this.name="AppError",this.code=n,this.statusCode=r,this.details=u}toJSON(){return{error:{code:this.code,message:this.message,...this.details?{details:this.details}:{}}}}}function wg(e,n){return new rO("VALIDATION_ERROR",e,400,n)}function Li(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"}}const tl={metrics:["7d","30d","90d","all"],gaMeasurementAnalysis:["30d","60d","90d"],gaSearchLanding:["7d","28d","90d"],googleAdsMetrics:["7d","14d","30d"],trafficAnalytics:["7d","14d","30d","90d"],organicEvidence:["60d","90d"]};function lO(e){if(e==="all")return"all";const n=String(e);if(!/^[1-9]\d*d?$/.test(n))return null;const i=Number(n.replace(/d$/,""));return Number.isSafeInteger(i)?{days:i}:null}function cO(e){const n=lO(e);if(n===null)throw wg(`Invalid window "${e}".`);return n==="all"?null:n.days}function i2(e){return e.map(n=>cO(n))}const Xn={openai:"openai.com",chatgpt:"chatgpt.com",chatgptLegacy:"chat.openai.com",claude:"claude.ai",perplexity:"perplexity.ai",gemini:"gemini.google.com",bard:"bard.google.com",copilotMicrosoft:"copilot.microsoft.com",copilot:"copilot.com",deepseek:"deepseek.com",metaAi:"meta.ai",grok:"grok.com",you:"you.com",phind:"phind.com"},uO="anthropic.com",dO=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,mO=/[\0-\x1F\x7F-\x9F]/,pO=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\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]/,hO=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;var fO=class{src_Any=dO.source;src_Cc=mO.source;src_Z=hO.source;src_P=pO.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,i=4){const r=this.escapeRE(e),u=this.escapeRE(n),h=`(?:(?!${this.src_ZCc}|${r}|${u}).)`;let f=`${r}${h}{0,1000}${u}`;for(let b=2;b<=i;b++)f=`${r}(?:${h}|${f}){0,1000}${u}`;return f}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")}},Ef={validate:(e,n,i)=>{const r=i.re.get_http_validator();r.lastIndex=n;const u=r.exec(e);return u?u[0].length:0},normalize:(e,n)=>n.normalize(e)},gO={"http:":Ef,"https:":Ef,"ftp:":Ef,"//":{validate:function(e,n,i){const r=i.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,i){const r=i.re.get_mailto_validator();r.lastIndex=n;const u=r.exec(e);return u?u[0].length:0},normalize:(e,n)=>n.normalize(e)}},yO="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",bO="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";function vO(){const e=bO.split("|");return yO.split("|").forEach(n=>{const i=n.indexOf(":"),r=n.slice(0,i);for(const u of n.slice(i+1))e.push(r+u)}),e}var xO={fuzzyLink:!1,fuzzyEmail:!0,fuzzyIP:!1,"---":!1,tlds:vO(),urlAuth:!1,maxLength:1e4},ww=class{schema;index;lastIndex;raw;text;url;constructor(e,n,i,r){const u=e.slice(i,r);this.schema=n.toLowerCase(),this.index=i,this.lastIndex=r,this.raw=u,this.text=u,this.url=u}},wO=class{__opts__;__schemas__;re;constructor(e={}){const{rebuilder:n,...i}=e;this.__opts__={...xO,...i},this.__schemas__={...gO},this.re=n||new fO,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)})}add(e,n=null){if(!n)delete this.__schemas__[e];else{const i={normalize:(r,u)=>u.normalize(r),...n};this.__schemas__[e]=i}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,i;for(i=this.re.get_schema_search(),i.lastIndex=0;(n=i.exec(e))!==null;)if(this.testSchemaAt(e,n[2],i.lastIndex))return!0;if(this.__opts__.fuzzyLink&&this.__schemas__["http:"]&&(i=this.re.get_fuzzy_link_search(),i.lastIndex=0,i.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 h=e.slice(Math.max(0,n.index-65),n.index);if(u.test(h))return!0}}return!1}testSchemaAt(e,n,i){return this.__schemas__[n.toLowerCase()]?this.__schemas__[n.toLowerCase()].validate(e.slice(0,i+this.__opts__.maxLength),i,this):0}match(e){const n=[],i=this.re.get_schema_search();let r,u,h,f,b,v,x=!1,S=!1,j=!1,C=0;if(!e.length)return null;for(i.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,h=this.re.get_mail_name_validator());;){const T=Math.max(C-1,0);if(u&&h&&!j&&(!b||b.index<C))for(u.lastIndex<T&&(u.lastIndex=T);;){const M=u.exec(e);if(!M){j=!0,b=void 0;break}const L=h.exec(e.slice(Math.max(0,M.index-65),M.index));if(L){if(b={schema:"mailto:",index:M.index-L[1].length,lastIndex:M.index+M[0].length},b.index>=C)break;u.lastIndex<T&&(u.lastIndex=T)}}if(r&&!S&&(!f||f.index<C))for(r.lastIndex<T&&(r.lastIndex=T);;){const M=r.exec(e);if(!M){S=!0,f=void 0;break}if(f={schema:"",index:M.index+M[1].length,lastIndex:M.index+M[0].length},f.index>=C)break;r.lastIndex<T&&(r.lastIndex=T)}let z=b;(!z||f&&(f.index<z.index||f.index===z.index&&f.lastIndex>z.lastIndex))&&(z=f);let q;if(!x)for(;;){if(!v){i.lastIndex<T&&(i.lastIndex=T);const $=i.exec(e);if(!$){x=!0;break}v={schema:$[2],index:$.index+$[1].length,lastIndex:$.index+$[0].length}}if(v.index<C){v=void 0;continue}if(z&&v.index>z.index)break;const M=v;v=void 0;const L=this.testSchemaAt(e,M.schema,M.lastIndex);if(L){q={schema:M.schema,index:M.index,lastIndex:M.lastIndex+L};break}}let R=q;if((!R||b&&(b.index<R.index||b.index===R.index&&b.lastIndex>R.lastIndex))&&(R=b),(!R||f&&(f.index<R.index||f.index===R.index&&f.lastIndex>R.lastIndex))&&(R=f),!R)break;R===b?b=void 0:R===f&&(f=void 0);const P=new ww(e,R.schema,R.index,R.lastIndex);P.schema?this.__schemas__[P.schema].normalize(P,this):this.normalize(P),n.push(P),C=R.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 i=this.testSchemaAt(e,n[2],n[0].length);if(!i)return null;const r=new ww(e,n[2],n.index+n[1].length,n.index+n[0].length+i);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 s2=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 SO(e,n){return e.endsWith(n)?e.length===n.length||e[e.length-n.length-1]===".":!1}function kO(e,n){const i=e.length-n.length-2,r=e.lastIndexOf(".",i);return r===-1?e:e.slice(r+1)}function jO(e,n,i){if(i.validHosts!==null){const u=i.validHosts;for(const h of u)if(SO(n,h))return h}let r=0;if(n.startsWith("."))for(;r<n.length&&n[r]===".";)r+=1;return e.length===n.length-r?null:kO(n,e)}function AO(e,n){return e.slice(0,-n.length-1)}const Rf=/[\t\n\r]/g;let Sg=!1;function Sw(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function kw(e,n,i){const r=i-n,u=e.charCodeAt(n)|32;if(r===2)return u===119&&(e.charCodeAt(n+1)|32)===115?1:0;if(r===3){const h=e.charCodeAt(n+1)|32,f=e.charCodeAt(n+2)|32;return u===119&&h===115&&f===115||u===102&&h===116&&f===112?1:0}else if(r===4){const h=e.charCodeAt(n+1)|32,f=e.charCodeAt(n+2)|32,b=e.charCodeAt(n+3)|32;return u===104&&h===116&&f===116&&b===112?1:u===102&&h===105&&f===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 _c(e,n,i=!1){let r=0,u=e.length,h=!1,f=!1;if(Sg=!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 R=e.indexOf(":/",r);if(R!==-1){const P=kw(e,r,R);if(P===1)for(f=!0,r=R+2;e.charCodeAt(r)===47||e.charCodeAt(r)===92;)r+=1;else if(P===2){f=!0,r=R+1;let M=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&M<2;)r+=1,M+=1;if(M<2)return null}else{for(let M=r;M<R;M+=1){const L=e.charCodeAt(M)|32;if(!(L>=97&&L<=122||L>=48&&L<=57||L===46||L===45||L===43)){const $=e.charCodeAt(M);return $===9||$===10||$===13?_c(e.replace(Rf,""),n,i):null}}if(e.charCodeAt(R+2)===47)r=R+3;else return null}}else if(e.charCodeAt(r)!==91){let P=-1;for(let M=r;M<u;M+=1){const L=e.charCodeAt(M);if(L===9||L===10||L===13)return _c(e.replace(Rf,""),n,i);if(L===58){P=M;break}if(L===47||L===92||L===63||L===35)break}if(P!==-1){let M=!1;for(let L=P+1;L<u;L+=1){const $=e.charCodeAt(L);if($===47||$===92||$===63||$===35)break;if($===64){M=!0;break}}if(!M){let L=!0,$=P+1;for(;$<u;$+=1){const Q=e.charCodeAt($);if(Q===47||Q===92||Q===63||Q===35)break;if(Q<48||Q>57){L=!1;break}}if($===P+1&&(L=!1),!L){const Q=kw(e,r,P);if(Q===0){let ae=!1;for(let V=P+1;V<u;V+=1){const Z=e.charCodeAt(V);if(Z===47||Z===92||Z===63||Z===35)break;if(Z===58){ae=!0;break}}if(!ae)return null}else if(f=!0,r=P+1,Q===2){let ae=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&ae<2;)r+=1,ae+=1;if(ae<2)return null}else for(;e.charCodeAt(r)===47||e.charCodeAt(r)===92;)r+=1}}}}}let v=-1,x=-1,S=-1,j=-1,C=!1,T=i,z=r-1,q=-1;if(i&&r<u){const R=e.charCodeAt(r);(!(Sw(R)||R===46||R===95)||R===45)&&(T=!1)}for(let R=r;R<u;R+=1){const P=e.charCodeAt(R);if(P<64)if(P===47||P===35||P===63){u=R;break}else P===58?(j===-1&&(j=R),S=R):P===9||P===10||P===13?C=!0:i&&(P===46?((R-z>64||q===46||q===45)&&(T=!1),z=R):(P<48||P>57)&&(P!==45||q===46)&&(T=!1));else if(f&&P===92){u=R;break}else P===64?(v=R,j=-1):P===93?x=R:P>=65&&P<=90?h=!0:i&&!Sw(P)&&(T=!1);i&&(q=P)}if(C)return _c(e.replace(Rf,""),n,i);if(v!==-1&&v>=r&&v<u&&(r=v+1),e.charCodeAt(r)===91)return x!==-1?e.slice(r+1,x).toLowerCase():null;if(S!==-1&&S>r&&S<u&&j===S&&(u=S),r>=u)return null;i&&T&&v===-1&&S===-1&&x===-1&&e.charCodeAt(u-1)!==46&&u-r<=255&&u-z-1<=63&&q!==45&&(Sg=!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 h?b.toLowerCase():b}function NO(e){if(e.length<7||e.length>15)return!1;let n=0;for(let i=0;i<e.length;i+=1){const r=e.charCodeAt(i);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 CO(e){if(e.length<3)return!1;let n=e.startsWith("[")?1:0,i=e.length;if(e[i-1]==="]"&&(i-=1),i-n>39)return!1;let r=!1;for(;n<i;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 _O(e){return CO(e)||NO(e)}const TO=["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 EO(e){for(const n of TO)if(e.endsWith(n)&&(e.length===n.length||e.charCodeAt(e.length-n.length-1)===46))return!0;return!1}function jw(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function Aw(e){if(e.length>255||e.length===0||!jw(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let n=-1,i=-1;const r=e.length;for(let u=0;u<r;u+=1){const h=e.charCodeAt(u);if(h===46){if(u-n>64||i===46||i===45)return!1;n=u}else if(!(jw(h)||h===45||h===95)||h===45&&i===46)return!1;i=h}return r-n-1<=63&&i!==45}function o2({allowIcannDomains:e=!0,allowPrivateDomains:n=!1,detectIp:i=!0,detectSpecialUse:r=!1,extractHostname:u=!0,mixedInputs:h=!0,validHosts:f=null,validateHostname:b=!0}){return{allowIcannDomains:e,allowPrivateDomains:n,detectIp:i,detectSpecialUse:r,extractHostname:u,mixedInputs:h,validHosts:f,validateHostname:b}}const RO=o2({});function DO(e){return e===void 0?RO:o2(e)}function zO(e,n){return n.length===e.length?"":e.slice(0,-n.length-1)}function IO(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function C0(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 _0(e,n,i,r,u){const h=DO(r);if(typeof e!="string")return u;let f=!1;return h.extractHostname?h.mixedInputs?(f=Aw(e),u.hostname=_c(e,f,h.validateHostname)):u.hostname=_c(e,!1,h.validateHostname):u.hostname=e,h.detectIp&&u.hostname!==null&&(u.isIp=_O(u.hostname),u.isIp)?u:h.validateHostname&&h.extractHostname&&u.hostname!==null&&!(f&&u.hostname===e)&&!Sg&&!Aw(u.hostname)?(u.hostname=null,u):(n===0||u.hostname===null||(n===5&&h.detectSpecialUse&&(u.isSpecialUse=EO(u.hostname)),i(u.hostname,h,u),n===2||u.publicSuffix===null)||(u.domain=jO(u.publicSuffix,u.hostname,h),n===3||u.domain===null)||(u.subdomain=zO(u.hostname,u.domain),n===4)||(u.domainWithoutSuffix=AO(u.domain,u.publicSuffix)),u)}function OO(e,n,i){if(!n.allowPrivateDomains&&e.length>3){const r=e.length-1,u=e.charCodeAt(r),h=e.charCodeAt(r-1),f=e.charCodeAt(r-2),b=e.charCodeAt(r-3);if(u===109&&h===111&&f===99&&b===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="com",!0;if(u===103&&h===114&&f===111&&b===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="org",!0;if(u===117&&h===100&&f===101&&b===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="edu",!0;if(u===118&&h===111&&f===103&&b===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="gov",!0;if(u===116&&h===101&&f===110&&b===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="net",!0;if(u===101&&h===100&&f===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="de",!0}return!1}const Ao=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]),om=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]),rm=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]),Nw=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]),kg="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",PO=621,qO=625,r2=Ao.length,l2=rm.length,c2=new Uint32Array(l2),Fd=new Uint32Array(l2),jg=new Int32Array(r2).fill(-1);for(let e=0,n=0;e<r2;e+=1)for(let i=om[e];i<om[e+1];i+=1){c2[i]=n;const r=n+rm[i];let u=5381;for(let h=r-1;h>=n;h-=1)u=u*33^kg.charCodeAt(h);Fd[i]=u>>>0,rm[i]===1&&kg.charCodeAt(n)===42&&(jg[e]=i),n=r}let Ui=-1,Ag=0,Ng=0;function Cw(e,n,i,r){if(rm[e]!==r)return!1;const u=c2[e];for(let h=0;h<r;h+=1)if(kg.charCodeAt(u+h)!==n.charCodeAt(i+h))return!1;return!0}function _w(e,n,i,r,u){let h=om[e],f=om[e+1];for(;h<f;){const b=h+f>>>1,v=Fd[b];if(v<n)h=b+1;else if(v>n)f=b;else{for(let x=b;x>=h&&Fd[x]===n;x-=1)if(Cw(x,i,r,u))return x;for(let x=b+1;x<f&&Fd[x]===n;x+=1)if(Cw(x,i,r,u))return x;return-1}}return-1}function Tw(e,n,i){let r=n,u=e.length,h=5381;Ui=-1;for(let b=e.length-1;b>=0;b-=1){const v=e.charCodeAt(b);if(v===46){const x=b+1;let S=_w(r,h>>>0,e,x,u-x);if(S===-1&&(S=jg[r]),S===-1)return Ui!==-1;r=Nw[S],(Ao[r]&i)!==0&&(Ui=r,Ag=x,Ng=u),u=b,h=5381}else h=h*33^v}let f=_w(r,h>>>0,e,0,u);return f===-1&&(f=jg[r]),f!==-1&&(r=Nw[f],(Ao[r]&i)!==0&&(Ui=r,Ag=0,Ng=u)),Ui!==-1}function T0(e,n,i){if(OO(e,n,i))return;const r=(n.allowPrivateDomains?2:0)|(n.allowIcannDomains?1:0);if(Tw(e,qO,r)){i.isIcann=(Ao[Ui]&1)!==0,i.isPrivate=(Ao[Ui]&2)!==0,i.publicSuffix=e.slice(Ng+1);return}if(Tw(e,PO,r)){i.isIcann=(Ao[Ui]&1)!==0,i.isPrivate=(Ao[Ui]&2)!==0,i.publicSuffix=e.slice(Ag);return}i.isIcann=!1,i.isPrivate=!1;const u=e.lastIndexOf(".");i.publicSuffix=u===-1?e:e.slice(u+1)}const Hr=IO();function MO(e,n){return C0(Hr),_0(e,0,T0,n,Hr).hostname}function BO(e,n){return C0(Hr),_0(e,3,T0,n,Hr).domain}function LO(e,n){return C0(Hr),_0(e,5,T0,n,Hr).domainWithoutSuffix}function u2(e,n){return e<n?-1:e>n?1:0}const d2={allowPrivateDomains:!0};new wO({fuzzyLink:!0,fuzzyEmail:!1}).tlds(s2);function Wc(e){if(e==null)return null;const n=e.trim();if(!n)return null;const i=MO(n);return i?i.replace(/^www\./i,"").toLowerCase():null}function UO(e){return e==null||e.trim()===""?"":BO(e,d2)?.toLowerCase()??""}function Lc(e){return Wc(e)??e.trim().toLowerCase().replace(/^www\./,"")}function E0(e){return e==null||e.trim()===""?"":LO(e,d2)?.toLowerCase()??""}function Sae(e){return E0(e)||e}const m2=k(["chatgpt","perplexity","gemini","claude","copilot","grok","deepseek","meta-ai","phind","you-com"]),ri=m2.enum,R0=[{engine:ri.chatgpt,label:"ChatGPT",domains:[Xn.chatgpt,Xn.chatgptLegacy,Xn.openai],tokens:["chatgpt","openai"],labels:["chatgpt","openai"]},{engine:ri.perplexity,label:"Perplexity",domains:[Xn.perplexity],tokens:["perplexity"],labels:["perplexity"]},{engine:ri.gemini,label:"Gemini",domains:[Xn.gemini,Xn.bard],tokens:["gemini","bard"],labels:[]},{engine:ri.claude,label:"Claude",domains:[Xn.claude,uO],tokens:["claude","anthropic"],labels:["claude","anthropic"]},{engine:ri.copilot,label:"Copilot",domains:[Xn.copilotMicrosoft,Xn.copilot],tokens:["copilot"],labels:[]},{engine:ri.grok,label:"Grok",domains:[Xn.grok],tokens:["grok"],labels:[]},{engine:ri.deepseek,label:"DeepSeek",domains:[Xn.deepseek],tokens:["deepseek"],labels:["deepseek"]},{engine:ri["meta-ai"],label:"Meta AI",domains:[Xn.metaAi],tokens:[],labels:[]},{engine:ri.phind,label:"Phind",domains:[Xn.phind],tokens:["phind"],labels:["phind"]},{engine:ri["you-com"],label:"You.com",domains:[Xn.you],tokens:[],labels:[]}];new Map(R0.flatMap(e=>e.tokens.map(n=>[n,e.engine])));new Map(R0.flatMap(e=>e.labels.map(n=>[n,e.engine])));new Map(R0.map(e=>[e.engine,e.label]));const VO=k(["fraction","percent"]),Fa=VO.enum,$O="x-unit";function p2(e,n){return e.meta({[$O]:n})}function we(e=m()){return p2(e,Fa.fraction)}function ot(e=m()){return p2(e,Fa.percent)}Fa.fraction+"",Fa.percent+"";function Df(e,n=!1){const i=new Set,r=[];for(const u of e){const h=n?u.toLowerCase():u;i.has(h)||(i.add(h),r.push(u))}return r}function Ew(e){try{const n=e.includes("://"),i=new URL(n?e:`https://${e}`);if(!n&&(i.pathname!=="/"||i.search||i.hash)||i.username||i.password||i.port)return null;const r=i.hostname.trim().toLowerCase().replace(/^www\./,"");return!r||r.includes("/")||r.includes("?")||r.includes("#")?null:r}catch{return null}}const KO=s().trim().min(1).refine(e=>Ew(e)!==null,{message:"Marketing hosts must be valid hostnames without credentials or ports"}).overwrite(e=>Ew(e)??e),GO=s().trim().min(1),HO=s().trim().regex(/^[a-z]\w{0,39}$/i,{message:"GA4 event names must start with a letter and contain only letters, numbers, or underscores"}),ui=d({marketingHosts:y(KO).overwrite(e=>Df(e,!0)),brandTerms:y(GO).overwrite(e=>Df(e,!0)),leadEventNames:y(HO).overwrite(e=>Df(e))});function FO(){return{marketingHosts:[],brandTerms:[],leadEventNames:["generate_lead"]}}const zf=Object.freeze({marketingHosts:Object.freeze([]),brandTerms:Object.freeze([]),leadEventNames:Object.freeze(["generate_lead"])}),h2=()=>FO(),Cg=k(["never-synced","ready","error"]),QO=k(["landing-page","channel"]),ZO=k(tl.gaMeasurementAnalysis),YO=k(["marketing","all"]),Tc=Is(),nl=d({label:k(["earliest","middle","previous","latest"]),startDate:Tc,endDate:Tc}),If=nl.extend({sessions:m().int().nonnegative()}),Rw=nl.extend({eventCount:m().int().nonnegative()}),Dw=nl.extend({clicks:m().int().nonnegative(),impressions:m().int().nonnegative()}),XO=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()}),Of=nl.extend({eventCount:m().int().nonnegative(),sessions:m().int().nonnegative(),leadRate:we(m().nonnegative()).nullable()}),f2=k(["no-data","sync-not-ready","channel-leads-unfiltered","paid-split-needs-landing-page","sessions-behind-leads","sessions-missing-on-lead-days"]);f2.enum;const zw=d({periods:y(Of),engines:y(d({engine:m2,label:s(),sources:y(s()),periods:y(Of)})),unattributed:d({sources:y(s()),periods:y(Of)})}),JO=d({leadRateAvailable:N(),leadRateUnavailableReason:f2.nullable(),organic:zw,paid:zw}),WO=nl.extend({sessions:m().int().nonnegative(),engagementRate:we(m().min(0).max(1)).nullable(),dailyTotalUsers:m().int().nonnegative().nullable(),dailyNewUsers:m().int().nonnegative().nullable(),metricsAvailable:N(),daysInPeriod:m().int().nonnegative(),daysWithEngagementRate:m().int().nonnegative(),daysWithUserSplit:m().int().nonnegative()}),e9=d({window:ZO,bucketDays:E(30),filters:d({hostScope:YO,marketingHosts:y(s()),pathPrefix:s().nullable(),brandTerms:y(s()),queryMixScope:E("property")}),acquisition:d({status:Cg,error:s().nullable(),syncedAt:s().datetime().nullable(),periods:y(If),channels:y(d({channelGroup:s(),periods:y(If)})),pages:y(d({hostName:s(),landingPage:s(),periods:y(If)}))}),leads:d({status:Cg,error:s().nullable(),syncedAt:s().datetime().nullable(),attributionScope:QO.nullable(),hostAndPathFiltersApplied:N(),periods:y(Rw),channels:y(d({channelGroup:s(),periods:y(Rw)})),aiEngines:JO}),engagement:d({status:k(["ready","unavailable"]),availableFromDate:Tc.nullable(),latestDate:Tc.nullable(),periods:y(WO)}),searchDemand:d({status:k(["ready","unavailable"]),periods:y(XO),queries:y(d({query:s(),classification:k(["branded","non-branded"]),periods:y(Dw)})),pages:y(d({hostName:s(),landingPage:s(),periods:y(Dw)})),latestDate:Tc.nullable()})}),eu=k(["sync","batch"]);eu.enum;const al=Ke(s(),eu),g2=k(["submitting","submitted","ended","ingested","cancelled","failed","unknown"]),Iw=g2.enum;Iw.submitted,Iw.ended;const D0=k(["standard","batch"]),Ow=D0.enum,t9=d({inputTokens:m().int().nonnegative(),cachedInputTokens:m().int().nonnegative(),cacheWriteTokens:m().int().nonnegative(),outputTokens:m().int().nonnegative(),searchCount:m().int().nonnegative()}),n9=t9.extend({pricingTier:D0,estimatedCostMicros:m().int().nonnegative().nullable(),priceSource:Fe([k(["default","override"]),de()])}),y2=d({inputPerMTok:m().nonnegative(),cachedInputPerMTok:m().nonnegative().optional(),cacheWritePerMTok:m().nonnegative().optional(),outputPerMTok:m().nonnegative(),searchPer1k:m().nonnegative().optional(),searchUnit:k(["query","prompt"]).optional(),batchTokenDiscount:m().min(0).max(1).optional()}).strict();d({models:Ke(s().min(1),y2).default({})}).strict();d({enabled:N().default(!1),maxRequestsPerBatch:m().int().positive().optional(),deadlineHours:m().positive().optional()}).strict();const a9=new Intl.Segmenter("en",{granularity:"word"}),i9=/[^\p{L}\p{N}]+/gu,s9=/[\p{L}\p{N}]+/gu,o9=/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}]/u,r9=new RegExp("\\P{ASCII}","u");function l9(e){if(!r9.test(e))return e;let n="";for(const i of e){if(i.charCodeAt(0)<128){n+=i;continue}const r=i.normalize("NFD"),u=r[0];n+=r.length>1&&o9.test(u)?u:i}return n}function b2(e){return l9(e.normalize("NFKC")).toLocaleLowerCase("en")}function v2(e){const n=[];for(const i of a9.segment(e))if(i.isWordLike)for(const r of i.segment.match(s9)??[])n.push(r);return n}function c9(e){return v2(b2(e))}function za(e){return c9(e).join("")}const Pw=new WeakMap;function u9(e){if(!e)return null;const n=b2(e);return{normalized:n,stripped:n.replace(i9,"")}}function d9(e){const n=Pw.get(e);if(n)return n;const i=v2(e.normalized);return Pw.set(e,i),i}function m9(e){const n=new Set;let i=0;for(const r of e){if(!r)continue;const u=za(r);u&&(n.add(u),u.length>i&&(i=u.length))}return{keys:n,longest:i}}function p9(e,n){if(!n||e.keys.size===0)return!1;const i=typeof n=="string"?u9(n):n;if(!i)return!1;let r=!1;for(const h of e.keys)if(i.stripped.includes(h)){r=!0;break}if(!r)return!1;const u=d9(i);for(let h=0;h<u.length;h++){let f="";for(let b=h;b<u.length;b++){if(f+=u[b],e.keys.has(f))return!0;if(f.length>=e.longest)break}}return!1}const h9=d({name:s(),accountName:s().nullable(),type:s().nullable(),role:s().nullable()});d({accounts:y(h9),total:m().int().nonnegative()});const f9=d({id:s(),projectId:s(),accountName:s(),locationName:s(),displayName:s(),primaryCategoryDisplayName:s().nullable(),storefrontAddress:s().nullable(),websiteUri:s().nullable(),placeId:s().nullable(),mapsUri:s().nullable(),additionalCategories:y(s()),description:s().nullable(),serviceArea:Ke(s(),kn()).nullable(),regularHours:Ke(s(),kn()).nullable(),primaryPhone:s().nullable(),openStatus:s().nullable(),openingDate:s().nullable(),selected:N(),syncedAt:s().nullable(),createdAt:s(),updatedAt:s()});d({locations:y(f9),totalDiscovered:m().int().nonnegative(),totalSelected:m().int().nonnegative()});d({selectAllNew:N().default(!0),accountName:s().optional(),switchAccount:N().default(!1)});d({selected:N()});d({locationNames:y(s()).optional(),daysOfMetrics:m().int().positive().max(540).optional(),monthsOfKeywords:m().int().positive().max(18).optional()});d({runId:s(),status:s()});const g9=d({locationName:s(),date:s(),metric:s(),value:m().int()});d({metrics:y(g9),total:m().int().nonnegative()});const y9=d({locationName:s(),periodStart:s(),periodEnd:s(),keyword:s(),valueCount:m().int().nullable(),valueThreshold:m().int().nullable()});d({keywords:y(y9),total:m().int().nonnegative(),thresholdedPct:ot(m().min(0).max(100))});const b9=d({locationName:s(),placeActionLinkName:s(),placeActionType:s(),uri:s().nullable(),isPreferred:N(),providerType:s().nullable()});d({placeActions:y(b9),total:m().int().nonnegative()});const v9=d({locationName:s(),populatedGroupCount:m().int().nonnegative(),syncedAt:s(),attributes:Ke(s(),kn())});d({lodging:y(v9),total:m().int().nonnegative()});const x9=d({name:s(),valueType:s(),values:y(Fe([N(),s()])),unsetValues:y(s()),uris:y(s())}),w9=d({locationName:s(),attributeCount:m().int().nonnegative(),syncedAt:s(),attributes:y(x9)});d({attributes:y(w9),total:m().int().nonnegative()});const S9=d({locationName:s(),placeId:s(),tier:s(),amenities:y(s()),syncedAt:s(),place:Ke(s(),kn())});d({places:y(S9),total:m().int().nonnegative()});const x2=k(["gbp","places"]),Bm=m().int().min(1).max(4),k9=k(["ok","unavailable","error"]),w2=k(["none","baseline","stale","pending","sent","skipped","suppressed"]);w2.enum;const j9=d({locationName:s(),origin:x2,reviewName:s(),starRating:m().int().min(1).max(5).nullable(),negative:N(),comment:s().nullable(),reviewerName:s().nullable(),createTime:s().nullable(),updateTime:s(),replied:N().nullable(),replyComment:s().nullable(),replyUpdateTime:s().nullable(),reviewUri:s().nullable(),firstSeenAt:s(),lastSeenAt:s(),alertState:w2,alertStateAt:s().nullable()}),A9=d({locationName:s(),displayName:s(),reviewsAccess:k9.nullable(),reviewsAccessReason:s().nullable(),reviewsCheckedAt:s().nullable(),rating:m().nullable(),reviewCount:m().int().nonnegative().nullable(),ratingOrigin:x2.nullable(),ratingObservedAt:s().nullable()});d({negativeMaxStars:m().int().min(1).max(4),locations:y(A9),reviews:y(j9),total:m().int().nonnegative()});d({scope:d({locationName:s().nullable(),locationCount:m().int().nonnegative()}),performance:d({totals:Ke(s(),m()),recent7d:Ke(s(),m()),prior7d:Ke(s(),m()),deltaPct:Ke(s(),ot().nullable())}),freshness:d({dataThroughDate:s().nullable(),latestStoredDate:s().nullable(),pendingDays:m().int().nonnegative()}),timeseries:y(d({date:s(),pending:N(),metrics:Ke(s(),m())})),keywords:d({total:m().int().nonnegative(),thresholdedCount:m().int().nonnegative(),thresholdedPct:ot(m().min(0).max(100))}),placeActions:d({total:m().int().nonnegative(),hasReservationCta:N(),hasBookingCta:N(),hasDirectMerchantCta:N()}),lodging:d({lodgingLocationCount:m().int().nonnegative(),populatedLodgingCount:m().int().nonnegative(),emptyLodgingCount:m().int().nonnegative()}),profileCompleteness:d({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 N9={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 C9(e){const n=e.replace(/^BUSINESS_/,"").split("_").filter(Boolean).map(r=>r.toLowerCase());if(n.length===0)return e;const i=n.join(" ");return i.charAt(0).toUpperCase()+i.slice(1)}function kae(e){return N9[e]??C9(e)}const _9=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],T9=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function jae(e){return _9.includes(e)?"conversion":T9.includes(e)?"reach":"other"}const pt=s().trim().min(1),qw=s().regex(/^[a-f0-9]{64}$/i);function E9(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 jn=s().refine(E9,{message:"Expected a calendar date as YYYY-MM-DD."});function R9(e,n){const i=Date.parse(`${e}T00:00:00.000Z`),r=Date.parse(`${n}T00:00:00.000Z`);return Math.floor((r-i)/864e5)+1}const D9=k(["not-connected","selection-required","connected","stale"]),Td=D9.enum,S2=k(["enabled","suspended","closed","canceled","unspecified","unknown"]);S2.enum;const z0=k(["enabled","paused","removed","unknown"]);z0.enum;const k2=k(["enabled","hidden","removed","unknown"]);k2.enum;const I0=k(["customer","campaign"]);I0.enum;const j2=k(["customer-goal","campaign-goal","custom-goal"]);j2.enum;const A2=d({loginCustomerId:pt.nullable(),customerId:pt.nullable(),selectedAt:s().nullable()}).strict(),Pf=d({id:pt,projectId:pt,scopes:y(s()).default([]),selection:A2,lastValidatedAt:s().nullable(),lastInventorySnapshotAt:s().nullable(),lastMetricsSnapshotAt:s().nullable(),createdAt:s(),updatedAt:s()}).strict(),_g=d({resourceName:pt,customerId:pt,parentCustomerId:pt.nullable(),descriptiveName:s().nullable(),currencyCode:s().nullable(),timeZone:s().nullable(),manager:N(),hidden:N(),testAccount:N(),level:m().int().nonnegative(),status:S2}).strict(),z9=d({customers:y(_g),totalAccessible:m().int().nonnegative(),truncated:N(),selection:A2,fetchedAt:s()}).strict();Ue("status",[d({connected:E(!1),status:E(Td["not-connected"]),connection:de(),selectedCustomer:de()}).strict(),d({connected:E(!0),status:E(Td["selection-required"]),connection:Pf,selectedCustomer:de()}).strict(),d({connected:E(!0),status:E(Td.connected),connection:Pf,selectedCustomer:_g}).strict(),d({connected:E(!0),status:E(Td.stale),connection:Pf,selectedCustomer:_g}).strict()]);const I9=d({id:pt,resourceName:pt,name:s(),status:z0,advertisingChannelType:s().nullable(),biddingStrategyType:s().nullable()}).strict(),O9=d({id:pt,resourceName:pt,name:s(),status:k2,category:s(),origin:s(),primaryForGoal:N(),includeInConversionsMetric:N()}).strict(),P9=d({category:s(),origin:s(),biddable:N()}).strict(),q9=d({campaignId:pt,category:s(),origin:s(),biddable:N()}).strict(),M9=d({id:pt,name:s(),conversionActionIds:y(pt)}).strict(),B9=d({campaignId:pt,goalConfigLevel:I0,customGoalId:pt.nullable()}).strict(),L9=d({customerId:pt,fetchedAt:s(),campaigns:y(I9),conversionActions:y(O9),customerConversionGoals:y(P9),campaignConversionGoals:y(q9),campaignConversionGoalsComplete:N().optional(),customConversionGoals:y(M9),campaignGoalConfigurations:y(B9)}).strict(),U9=d({source:j2,category:s().nullable(),origin:s().nullable(),customGoalId:pt.nullable(),biddable:N().nullable(),conversionActionIds:y(pt),primaryConversionActionIds:y(pt),secondaryConversionActionIds:y(pt),missingConversionActionIds:y(pt)}).strict(),V9=d({campaignId:pt,goalConfigLevel:I0,customGoalId:pt.nullable(),missingCustomGoalId:pt.nullable(),goals:y(U9)}).strict();d({customerId:pt,derivedAt:s(),campaigns:y(V9)}).strict();const N2=50,Tg=31,$9=N2*Tg,K9=d({campaignIds:y(pt).min(1).max(N2),startDate:jn,endDate:jn}).strict().superRefine((e,n)=>{if(new Set(e.campaignIds).size!==e.campaignIds.length&&n.addIssue({code:fe.custom,path:["campaignIds"],message:"Campaign IDs must be unique."}),e.endDate<e.startDate){n.addIssue({code:fe.custom,path:["endDate"],message:"endDate must not precede startDate."});return}R9(e.startDate,e.endDate)>Tg&&n.addIssue({code:fe.custom,path:["endDate"],message:`Campaign metrics may cover at most ${Tg} calendar days.`})}),G9=d({campaignId:pt,date:jn,impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),conversionValueMicros:m().int().nonnegative().nullable()}).strict(),H9=d({query:K9,rows:y(G9).max($9),truncated:N(),fetchedAt:s()}).strict(),C2=k(["accessible-customers","inventory","campaign-metrics"]),qf=C2.enum,O0=d({id:pt,projectId:pt,connectionId:pt,runId:pt,kind:C2,customerId:pt.nullable(),payloadChecksum:qw,rawPayloadSha256:qw.nullable(),rawPayloadBytes:m().int().nonnegative().nullable(),redactedFieldCount:m().int().nonnegative(),capturedAt:s(),createdAt:s()}).strict(),F9=Ue("kind",[d({kind:E(qf["accessible-customers"]),data:z9}).strict(),d({kind:E(qf.inventory),data:L9}).strict(),d({kind:E(qf["campaign-metrics"]),data:H9}).strict()]),Q9=d({metadata:O0,payload:F9}).strict().superRefine((e,n)=>{e.metadata.kind!==e.payload.kind&&n.addIssue({code:fe.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),Z9=k(tl.googleAdsMetrics),P0=d({impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),conversionValueMicros:m().int().nonnegative().nullable(),ctr:we().nullable(),cpcMicros:m().int().nonnegative().nullable(),conversionRate:we().nullable(),costPerConversionMicros:m().int().nonnegative().nullable()}),Y9=d({date:jn,origin:k(["provider","filled"]),impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),ctr:we().nullable()}),X9=d({campaignId:pt,name:s().nullable(),status:z0,totals:P0}),J9=d({snapshotId:pt,capturedAt:s(),customerId:pt,currencyCode:s().nullable(),timeZone:s().nullable(),asOfDate:jn,openDate:jn.nullable(),truncated:N(),campaignsQueried:m().int().nonnegative(),campaignsInInventory:m().int().nonnegative()}),W9=d({startDate:jn,endDate:jn,days:m().int().positive(),totals:P0}),eP=d({days:m().int().positive(),prior:W9,change:d({impressions:we().nullable(),clicks:we().nullable(),costMicros:we().nullable(),conversions:we().nullable(),ctr:we().nullable(),conversionRate:we().nullable()})});d({window:Z9,startDate:jn,endDate:jn,days:m().int().positive(),totals:P0,daily:y(Y9),campaigns:y(X9),comparison:eP.nullable(),comparisonUnavailableReason:k(["insufficient-history","no-snapshot"]).nullable(),source:J9.nullable()});const Lm=k(["complete","partial","failed","unsupported"]);Lm.enum;const tP=["branded","non-brand"],Bo=k(tP),q0=k(["all","branded","non-brand"]);function nP(e){const n=e.filter(r=>za(r).length>0);if(n.length===0)return null;const i=m9(n);return i.keys.size===0?null:{matcher:i,classify(r){return p9(i,r)?"branded":"non-brand"}}}const aP=2,iP=s().regex(/^[a-f0-9]{64}$/),Um=s().trim().min(1).max(256),Mw=k(["sensitive","insensitive"]),ge=s().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),sP=s().trim().min(1).refine(e=>Wc(e)!==null,"A competitor domain must be a valid hostname"),oP=Ue("kind",[d({kind:E("exact"),url:s().min(1),pathCase:Mw}).strict(),d({kind:E("prefix"),host:s().min(1),pathPrefix:s().min(1),pathCase:Mw}).strict(),d({kind:E("host"),host:s().min(1)}).strict()]),rP=d({canonicalHost:s().min(1),ownedHosts:y(s().min(1)),names:y(s().min(1))}).strict(),lP=d({projectBrand:rP}).strict(),cP=d({stableKey:ge,label:s().trim().min(1),aliases:y(s().min(1)),identityAliases:y(s().trim().min(1)).optional(),urlMatchers:y(oP),mentionNotApplicable:N(),discoveryIdentity:s().min(1).nullable()}).strict(),_2=d({stableKey:ge,label:s().trim().min(1),domain:sP,aliases:y(s().min(1))}).strict(),uP=d({stableKey:ge,label:s().trim().min(1),parentGroupKey:ge.optional(),targetKeys:y(ge),competitors:y(_2)}).strict(),dP=k(["manual","query-set","template","discovery","research"]),mP=d({templateId:s().trim().min(1).max(256),templateVersion:s().trim().min(1).max(256),template:s().trim().min(1).max(4e3),bindings:Ke(s().trim().min(1).max(128),s().trim().min(1).max(128)),output:s().trim().min(1).max(4e3)}).strict(),T2=d({source:dP,sourceId:s().min(1).nullable(),capturedAt:s().datetime(),template:mP.optional()}).strict(),pP=d({queryId:Um,queryText:s().min(1),provenance:T2}).strict(),Vm=d({providers:y(bt).min(1),models:Ke(bt,s().min(1)),location:Jt.nullable()}).strict(),hP=d({stableKey:s().min(1),queryId:Um,queryText:s().min(1),context:Vm,expectedSnapshots:m().int().nonnegative()}).strict(),M0=Bo,fP=d({targetKey:ge,queryId:Um,queryClass:M0,classificationSource:k(["server","operator"]).optional(),executionNodeKey:s().min(1)}).strict(),B0=d({executionNodeKey:s().min(1),targetKey:ge,queryId:Um}).strict(),E2=d({stableKey:ge,label:s().trim().min(1),kind:E("market"),groupKey:ge.optional(),usageEdges:y(B0)}).strict();function Bw(e){return[e.executionNodeKey,e.targetKey,e.queryId].join("\0")}const $m=d({schemaVersion:E(aP),identities:lP,targets:y(cP),groups:y(uP),querySnapshots:y(pP),assignments:y(fP),executionNodes:y(hP),usageEdges:y(B0),reportingScopes:y(E2).optional(),compiledChecksum:iP}).strict().superRefine((e,n)=>{const i=new Set;for(const b of e.executionNodes)i.has(b.stableKey)&&n.addIssue({code:fe.custom,path:["executionNodes"],message:`Duplicate execution node key "${b.stableKey}"`}),i.add(b.stableKey);const r=new Set(e.targets.map(b=>b.stableKey));e.usageEdges.forEach((b,v)=>{i.has(b.executionNodeKey)||n.addIssue({code:fe.custom,path:["usageEdges",v,"executionNodeKey"],message:`Usage edge references unknown execution node "${b.executionNodeKey}"`}),r.has(b.targetKey)||n.addIssue({code:fe.custom,path:["usageEdges",v,"targetKey"],message:`Usage edge references unknown Target "${b.targetKey}"`})});const u=new Set(e.usageEdges.map(Bw)),h=new Set;e.reportingScopes?.forEach((b,v)=>{if(h.has(b.stableKey)&&n.addIssue({code:fe.custom,path:["reportingScopes",v,"stableKey"],message:`Duplicate reporting scope key "${b.stableKey}"`}),h.add(b.stableKey),b.groupKey!==void 0){const S=e.groups.find(j=>j.stableKey===b.groupKey);(!S||b.usageEdges.some(j=>!S.targetKeys.includes(j.targetKey)))&&n.addIssue({code:fe.custom,path:["reportingScopes",v,"groupKey"],message:"A market must link to an existing group containing all its assigned properties."})}const x=new Set;b.usageEdges.forEach((S,j)=>{const C=Bw(S);u.has(C)||n.addIssue({code:fe.custom,path:["reportingScopes",v,"usageEdges",j],message:`Reporting scope "${b.stableKey}" references a usage edge that this revision does not contain.`}),x.has(C)&&n.addIssue({code:fe.custom,path:["reportingScopes",v,"usageEdges",j],message:`Reporting scope "${b.stableKey}" repeats a usage edge.`}),x.add(C)})}),e.assignments.forEach((b,v)=>{r.has(b.targetKey)||n.addIssue({code:fe.custom,path:["assignments",v,"targetKey"],message:`Assignment references unknown Target "${b.targetKey}"`})});const f=new Map;e.groups.forEach((b,v)=>{f.has(b.stableKey)&&n.addIssue({code:fe.custom,path:["groups",v,"stableKey"],message:"Duplicate group stable key "+b.stableKey}),f.set(b.stableKey,b)}),e.groups.forEach((b,v)=>{const x=b.parentGroupKey;if(x===void 0)return;if(x===b.stableKey){n.addIssue({code:fe.custom,path:["groups",v,"parentGroupKey"],message:"A group cannot be its own parent."});return}const S=f.get(x);if(!S){n.addIssue({code:fe.custom,path:["groups",v,"parentGroupKey"],message:"Group parent does not exist: "+x});return}const j=new Set(S.targetKeys);b.targetKeys.forEach((z,q)=>{j.has(z)||n.addIssue({code:fe.custom,path:["groups",v,"targetKeys",q],message:"Group target membership must be a subset of its parent."})});const C=new Set([b.stableKey]);let T=S;for(;T.parentGroupKey!==void 0;){if(C.has(T.stableKey)){n.addIssue({code:fe.custom,path:["groups",v,"parentGroupKey"],message:"Group parent relationships cannot contain a cycle."});break}C.add(T.stableKey);const z=f.get(T.parentGroupKey);if(!z)break;T=z}});for(const b of e.groups)for(const v of b.targetKeys)r.has(v)||n.addIssue({code:fe.custom,path:["groups"],message:`Group "${b.stableKey}" references unknown Target "${v}"`})}),L0=100;function _o(e){return d({items:y(e),nextCursor:s().min(1).nullable(),totalEstimate:m().int().nonnegative().optional()}).strict()}const tu=k(["no_completed_run","plan_v1","no_population","evidence_incomplete","identity_ambiguous","not_applicable"]),pn=Ue("state",[d({state:E("available"),value:we(),numerator:m().int().nonnegative().optional(),denominator:m().int().positive().optional(),unattributed:m().int().positive().optional(),unchecked:m().int().positive().optional()}).strict().superRefine((e,n)=>{e.unattributed!==void 0&&e.unchecked!==void 0&&n.addIssue({code:"custom",path:["unchecked"],message:"A metric reads one signal: unattributed (mention) and unchecked (citation) cannot share it"})}),d({state:E("unavailable"),reason:tu}).strict()]),Eo=Ue("state",[d({state:E("available"),value:m().int().nonnegative(),numerator:m().int().nonnegative().optional(),denominator:m().int().positive().optional()}).strict(),d({state:E("unavailable"),reason:tu}).strict()]),R2=k(["all","group","market","property"]),ea=q0,gP="non-brand",yP=k(["label-asc","label-desc","citationCoverage-asc","citationCoverage-desc","mentionCoverage-asc","mentionCoverage-desc"]),U0=k(["not_measured","queued","running","complete","partial","failed"]),bP=k(["run_measurement","review_flags","complete_setup","republish_setup","none"]);d({scope:R2,groupKey:ge.optional(),marketKey:ge.optional(),targetKey:ge.optional(),queryClass:ea.optional(),provider:bt.optional(),location:s().trim().min(1).optional(),from:s().trim().min(1).optional(),to:s().trim().min(1).optional(),runId:s().trim().min(1).optional(),search:s().optional(),sort:yP.optional(),cursor:s().trim().min(1).optional(),limit:m().int().positive().max(L0).optional(),compact:N().optional()}).strict();const vP=d({provider:bt,mentionCoverage:pn,citationCoverage:pn}).strict(),xP=d({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(),Eg=d({groupKey:ge,label:s().trim().min(1)}).strict(),wP=d({targetKey:ge,label:s().min(1),metro:Eg.nullable().optional(),otherMetros:y(Eg).min(1).optional(),mentionCoverage:pn,citationCoverage:pn,providers:y(vP),flags:m().int().nonnegative()}).strict(),SP=d({kind:k(["project","competitor"]),stableKey:s().min(1),label:s().min(1),domain:s().min(1),credits:m().int().nonnegative(),share:we(m().min(0).max(1))}).strict(),kP=d({groupKey:ge,queryClass:E("non-brand"),denominator:m().int().positive(),entries:y(SP)}).strict();d({mode:k(["active-v1","active-v2"]),scope:d({kind:R2,key:s().min(1).optional(),label:s().min(1)}).strict(),queryClass:ea,measurement:d({state:U0,currentRunId:s().min(1).optional(),displayedRunId:s().min(1).optional(),completed:m().int().nonnegative(),expected:m().int().nonnegative(),completedAt:s().datetime().optional(),includesHistoricalData:N().optional()}).strict(),nextAction:d({kind:bP,count:m().int().nonnegative().optional()}).strict(),metrics:d({propertiesMentioned:Eo,mentionCoverage:pn,citationCoverage:pn,brandPresence:pn,sov:pn.describe("Deprecated alias of brandPresence carrying the identical value. Remove once the browser migrates.")}).strict(),properties:_o(wP),outcomes:xP,flags:d({total:m().int().nonnegative()}).strict(),namedShareOfVoice:kP.optional(),detailsOmitted:y(s()).optional()}).strict();const D2=k(["sources","answers","other-queries"]),jP=D2.enum;jP.sources;d({targetKey:ge,queryClass:ea.optional(),provider:bt.optional(),location:s().trim().min(1).optional(),runId:s().trim().min(1).optional(),shape:D2.optional(),cursor:s().trim().min(1).optional(),limit:m().int().positive().max(L0).optional()}).strict();const z2=1,nu=m().int().positive(),bn=s().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),au=s().trim().min(1).max(256),Lw=k(["sensitive","insensitive"]);function lm(e){const n=Wc(e);if(!n)throw new Error(`Invalid measurement host: ${e}`);return n}function AP(e){const n=[];let i=!1;for(let r=0;r<e.length;r++){const u=e[r];u==="/"?(i||n.push(u),i=!0):(n.push(u),i=!1)}for(;n.length>1&&n.at(-1)==="/";)n.pop();return n.length?n.join(""):"/"}function Uw(e){try{return decodeURI(e).normalize("NFC").toLowerCase()}catch{return e.normalize("NFC").toLowerCase()}}function I2(e){const n=new URL(`https://measurement.invalid${e}`).pathname;return AP(n.replace(/%[0-9a-f]{2}/gi,i=>i.toUpperCase()))}function Rg(e){const n=e.trim();if(!n||n.includes("?")||n.includes("#")||n.includes("://")||n.includes("\\"))throw new Error(`Invalid measurement path prefix: ${e}`);const i=n.startsWith("/")?n:`/${n}`;for(const r of i.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 I2(i)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}}function NP(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 Vw(e){const n=e.trim();if(!n||n.includes("\\"))throw new Error(`Invalid exact measurement URL: ${e}`);let i;try{i=new URL(n)}catch{throw new Error(`Invalid exact measurement URL: ${e}`)}if(i.protocol!=="http:"&&i.protocol!=="https:"||i.username||i.password||i.port||i.search||i.hash)throw new Error(`Invalid exact measurement URL: ${e}`);const r=lm(i.hostname),u=Rg(NP(n));return`https://${r}${u}`}const Uc=s().trim().min(1).refine(e=>{try{return lm(e),!0}catch{return!1}},"A target URL matcher host must be a valid hostname").overwrite(e=>lm(e)),CP=s().trim().min(1).refine(e=>{try{return Rg(e),!0}catch{return!1}},"A target URL matcher pathPrefix must be an absolute path without query or fragment").overwrite(e=>Rg(e)),_P=s().trim().min(1).refine(e=>{try{return Vw(e),!0}catch{return!1}},"A target exact matcher must be an HTTP(S) URL without credentials, port, query, or fragment").overwrite(e=>Vw(e)),TP=Ue("kind",[d({kind:E("exact"),url:_P,pathCase:Lw}).strict(),d({kind:E("prefix"),host:Uc,pathPrefix:CP,pathCase:Lw}).strict(),d({kind:E("host"),host:Uc}).strict()]),O2=s().trim().min(1).max(256).refine(e=>za(e).length>0,"A target alias must contain mention text"),EP=Ke(s().trim().min(1),s()),RP=Uc,P2=d({stableKey:bn,label:s().trim().min(1),urls:y(TP).min(1),aliases:y(O2),metadata:EP.optional()}).strict(),V0=d({stableKey:bn,label:s().trim().min(1),targetKeys:y(bn).min(1),competitors:y(RP).optional()}).strict(),q2=d({targetKey:bn,queryIds:y(au).min(1),context:Jt.nullable().optional()}).strict();function DP(e,n=i=>i){const i=new Set,r=new Set;for(const u of e){const h=n(u);i.has(h)&&r.add(h),i.add(h)}return r}function Mf(e,n,i,r,u){for(const h of DP(n,u))e.addIssue({code:"custom",path:[...i],message:`Duplicate ${r}: ${h}`})}function $w(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:lm(n.hostname),pathname:I2(n.pathname||"/")}}function zP(e,n,i,r){return e===i||(n==="insensitive"||r==="insensitive")&&Uw(e)===Uw(i)}function IP(e,n){if(e.kind!==n.kind)return!1;const i=$w(e),r=$w(n);return i.host!==r.host?!1:e.kind==="host"||n.kind==="host"?!0:zP(i.pathname,e.pathCase,r.pathname,n.pathCase)}function OP(e){const n=new Set;return[...e].sort(u2).filter(i=>{const r=za(i);return n.has(r)?!1:(n.add(r),!0)})}const M2=d({schemaVersion:E(z2),targets:y(P2).min(1),groups:y(V0).optional(),targetQuerySelections:y(q2).optional()}).strict().superRefine((e,n)=>{const i=e.groups??[],r=e.targetQuerySelections??[];Mf(n,e.targets.map(v=>v.stableKey),["targets"],"target stable key"),Mf(n,i.map(v=>v.stableKey),["groups"],"group stable key");const u=new Set(e.targets.map(v=>v.stableKey)),h=new Set(i.map(v=>v.stableKey));for(const v of u)h.has(v)&&n.addIssue({code:"custom",path:["groups"],message:`Target and group stable keys must be globally unique: ${v}`});const f=new Map,b=[];e.targets.forEach((v,x)=>{for(const S of OP(v.aliases)){const j=za(S),C=f.get(j);C&&C!==v.stableKey&&n.addIssue({code:"custom",path:["targets",x,"aliases"],message:`Target alias is already assigned to target ${C}: ${S}`}),f.set(j,v.stableKey)}v.urls.forEach((S,j)=>{b.find(T=>T.targetKey!==v.stableKey&&IP(T.matcher,S))&&n.addIssue({code:"custom",path:["targets",x,"urls",j],message:"Target URL matcher has an equal-specificity cross-target tie"}),b.push({targetKey:v.stableKey,matcher:S})})}),i.forEach((v,x)=>{Mf(n,v.targetKeys,["groups",x,"targetKeys"],"group target key");for(let S=0;S<v.targetKeys.length;S++){const j=v.targetKeys[S];u.has(j)||n.addIssue({code:"custom",path:["groups",x,"targetKeys",S],message:`Unknown target: ${j}`})}}),r.forEach((v,x)=>{u.has(v.targetKey)||n.addIssue({code:"custom",path:["targetQuerySelections",x,"targetKey"],message:`Unknown target: ${v.targetKey}`})})});M2.transform(e=>({...e,groups:e.groups??[],targetQuerySelections:e.targetQuerySelections??[]}));d({expectedActiveRevision:nu.nullable(),plan:M2}).strict();const PP=d({queryId:au,queryText:s().min(1)}).strict(),$0=d({stableKey:s().min(1),queryText:s().min(1),context:Jt.nullable(),expectedSnapshots:m().int().nonnegative()}).strict(),qP=d({kind:E("baseline"),executionNodeKey:s().min(1),queryId:au}).strict(),MP=d({kind:E("target"),executionNodeKey:s().min(1),queryId:au,targetKey:bn}).strict(),Dg=Ue("kind",[qP,MP]),B2=d({code:E("target-alias-prefix-overlap"),message:s().min(1),targetKeys:y(bn).min(1),aliases:y(s().min(1)).min(1)}).strict(),L2=P2.extend({mentionNotApplicable:N()}),U2=d({schemaVersion:E(z2),defaultContext:Jt.nullable(),effectiveOwnedHosts:y(Uc),projectCanonicalHost:Uc,projectBrandNames:y(O2),targets:y(L2),groups:y(V0),targetQuerySelections:y(q2),querySnapshots:y(PP),executionNodes:y($0),usageEdges:y(Dg),warnings:y(B2)}).strict(),BP=U2,V2=Ue("schemaVersion",[U2,$m]),K0=s().regex(/^[a-f0-9]{64}$/),G0=s().datetime(),$2=d({schemaVersion:E(1),language:s().min(1).optional(),providers:y(s().min(1)).min(1),models:Ke(s().min(1),s().min(1)),checksum:s().regex(/^[a-f0-9]{64}$/)}).strict(),LP=d({groups:y(bn).optional(),targets:y(bn).optional()}).strict(),UP=d({groups:y(bn),targets:y(bn),queries:y(s().min(1)),resolvedTargets:y(bn)}).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"})});d({stableKey:bn,retiredAt:s().datetime()});d({active:d({revision:nu,checksum:K0,createdAt:G0,plan:V2}).nullable()});d({versions:y(d({revision:nu,checksum:K0,createdAt:G0,active:N()}))});d({version:d({revision:nu,checksum:K0,createdAt:G0,active:N(),plan:V2})});const Qd=d({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(),VP=k(["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"]),K2=d({id:VP,severity:k(["fail","warn"]),message:s().min(1),path:y(Fe([s(),m().int()]))}).strict(),$P=d({baseline:m().int().nonnegative(),target:m().int().nonnegative()}).strict(),G2=d({ok:E(!0),checks:y(K2),executionNodes:y($0),dedupSaved:m().int().nonnegative(),usageEdges:$P,estCostUsd:de(),plan:BP,warnings:y(B2),counts:Qd}).strict(),H2=d({ok:E(!1),checks:y(K2).min(1),executionNodes:y($0).length(0),dedupSaved:E(0),usageEdges:d({baseline:E(0),target:E(0)}).strict(),estCostUsd:de()}).strict();Ue("ok",[G2,H2]);const Ed=d({targetKey:bn,context:Jt.nullable(),queryIds:y(au)}).strict();function Kw(e){return d({added:y(e),removed:y(e),changed:y(d({stableKey:bn,before:e,after:e}).strict()),unchanged:y(bn)}).strict()}const KP=G2.extend({diff:d({activeRevision:nu.nullable(),targets:Kw(L2),groups:Kw(V0),querySelections:d({added:y(Ed),removed:y(Ed),changed:y(d({targetKey:bn,before:Ed,after:Ed}).strict()),unchanged:y(d({targetKey:bn,context:Jt.nullable()}).strict())}).strict(),execution:d({addedNodeKeys:y(s().min(1)),removedNodeKeys:y(s().min(1)),addedUsageEdges:y(Dg),removedUsageEdges:y(Dg),counts:d({before:Qd.nullable(),after:Qd,delta:Qd.nullable()}).strict()}).strict()}).strict()}).strict(),GP=H2.extend({diff:de()}).strict();Ue("ok",[KP,GP]);const H0=k(["PROVIDER_AUTH","PROVIDER_BILLING","RATE_LIMITED","PROVIDER_UNAVAILABLE","NETWORK","TIMEOUT","PARSE_ERROR","UNKNOWN"]),Aae=H0.enum,ta=k(["queued","running","completed","partial","failed","cancelled"]),Nt=ta.enum,No=k(["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"]),Oe=No.enum;d({kind:No.optional(),excludeKind:No.optional(),excludeKinds:Ya(e=>{const n=typeof e=="string"?[e]:Array.isArray(e)?e:null;return n?[...new Set(n.flatMap(i=>typeof i=="string"?i.split(",").map(r=>r.trim()):[i]))]:e},y(No).max(No.options.length)).optional(),status:ta.optional()});const Km=k(["manual","scheduled","config-apply","backfill","probe"]),Ga=Km.enum,Ki=k(["cited","not-cited"]),Ec=Ki.enum,cm=k(["visible","not-visible"]);cm.enum;const Vc=k(["mentioned","not-mentioned"]);Vc.enum;const F2=k(["new","cited","lost","emerging","not-cited"]);F2.enum;const HP=k(["new","mentioned","lost","emerging","not-mentioned"]);HP.enum;const FP=k([Ga.manual,Ga.probe]);d({kind:E(Oe["answer-visibility"]).optional(),trigger:FP.optional(),providers:y(bt).optional(),queries:y(s().min(1)).min(1).optional(),measurementScope:LP.optional(),location:s().min(1).optional(),allLocations:N().optional(),noLocation:N().optional(),dispatchMode:eu.optional(),force:N().optional()}).refine(e=>+!!e.location+ +!!e.allLocations+ +!!e.noLocation<=1,{message:'Only one of "location", "allLocations", or "noLocation" may be provided'});const Q2=d({code:H0,consecutiveRuns:m().int().positive(),since:s(),latestRunId:s(),retryAfter:s()}),QP=d({message:s(),raw:kn().optional(),code:H0.optional(),skipped:N().optional()}),ZP=d({message:s().optional(),providers:Ke(s(),QP).optional()}),YP=Ke(s(),E(eu.enum.batch)),XP=d({id:s(),provider:s(),model:s(),status:g2,requestCount:m().int().nonnegative(),ingestedCount:m().int().nonnegative(),recordedCount:m().int().nonnegative(),submittedAt:s().nullable(),endedAt:s().nullable(),deadlineAt:s(),error:s().nullable()}),JP=d({provider:s(),pricingTier:D0,answers:m().int().nonnegative(),inputTokens:m().int().nonnegative(),cachedInputTokens:m().int().nonnegative(),cacheWriteTokens:m().int().nonnegative(),outputTokens:m().int().nonnegative(),searchCount:m().int().nonnegative(),estimatedCostMicros:m().int().nonnegative().nullable(),unpricedAnswers:m().int().nonnegative()}),WP=d({sourceId:s().nullable().optional(),id:s(),projectId:s(),kind:No,status:ta,trigger:Km.default("manual"),measurementPlanVersionId:s().nullable().optional(),measurementManifest:Ke(s(),kn()).nullable().optional(),measurementScope:UP.nullable().optional(),measurementExecutionIdentity:$2.nullable().optional(),location:s().nullable().optional(),queries:y(s()).nullable().optional(),startedAt:s().nullable().optional(),finishedAt:s().nullable().optional(),error:ZP.nullable().optional(),queryBasketRevision:m().int().nullable().optional(),dispatchModes:YP.optional(),skippedProviders:Ke(s(),Q2).optional(),createdAt:s()}),Gw=d({refused:N(),retryAfter:s().nullable(),providers:Ke(s(),Q2)});function F0(e){if(e.providers){const n=Object.entries(e.providers);if(n.length===1){const[i,r]=n[0];return`${i}: ${r.message}`}if(n.length>1)return n.map(([i,r])=>`${i}: ${r.message}`).join(" • ")}return e.message??"Run failed."}const Gm=d({uri:s(),title:s()}),eq=d({status:k(["applied","ignored","browser-implicit","unknown"]),resolved:Jt.nullable().optional()}),Z2=d({id:s(),runId:s(),queryId:s(),query:s().optional(),provider:bt,citationState:Ki,answerMentioned:N().optional(),visibilityState:cm.optional(),mentionState:Vc.optional(),transition:F2.optional(),answerText:s().nullable().optional(),citedDomains:y(s()).default([]),citedUrls:y(s()).nullable().default(null),captureStatus:Fe([Lm,de()]).default(null),sourceCount:m().int().nonnegative().nullable().default(null),resolvedCount:m().int().nonnegative().nullable().default(null),captureVersion:m().int().positive().nullable().default(null),retrievalStatus:Fe([j0,de()]).default(null),retrievalContract:Fe([A0,de()]).default(null),competitorOverlap:y(s()).default([]),citedCompetitorDomains:y(s()).default([]),mentionedCompetitorDomains:y(s()).default([]),mentionedCompetitorTerms:y(s()).default([]),recommendedCompetitors:y(s()).default([]),matchedTerms:y(s()).default([]),groundingSources:y(Gm).default([]),searchQueries:y(s()).default([]),model:s().nullable().optional(),servedModel:s().nullable().optional(),location:s().nullable().optional(),requestedContext:Jt.nullable().optional(),supportedContext:eq.nullable().optional(),dispatchMode:Fe([eu,de()]).optional(),stopReason:s().nullable().optional(),usage:n9.nullable().optional(),createdAt:s()});d({snapshots:y(Z2),total:m().int().nonnegative()});const tq=d({queryId:s().nullable(),query:s().nullable(),run1State:Ki.nullable(),run2State:Ki.nullable(),run1AnswerMentioned:N().nullable(),run2AnswerMentioned:N().nullable(),run1VisibilityState:cm.nullable(),run2VisibilityState:cm.nullable(),run1MentionState:Vc.nullable().optional(),run2MentionState:Vc.nullable().optional(),changed:N(),visibilityChanged:N()});d({run1:s(),run2:s(),diff:y(tq)});const nq=d({totalQueries:m().int().nonnegative(),citedQueries:m().int().nonnegative(),mentionedQueries:m().int().nonnegative()}),aq=WP.extend({snapshots:y(Z2).optional(),queryCounts:nq.nullable().optional(),providerBatches:y(XP).optional(),usage:y(JP).optional()}),iq=d({totalRuns:m().int().nonnegative(),run:aq.nullable(),admission:Gw.optional(),manualAdmission:Gw.optional()}),Hw=s().refine(e=>!Number.isNaN(Date.parse(e)),"Must be a valid ISO 8601 timestamp");d({limit:Fe([s(),m()]).optional(),offset:Fe([s(),m()]).optional(),since:Hw.optional().describe("Inclusive ISO 8601 lower bound."),until:Hw.optional().describe("Inclusive ISO 8601 upper bound."),action:s().trim().min(1).optional().describe("Exact audit action filter."),actionPrefix:s().trim().min(1).optional().describe("Literal audit action prefix; percent and underscore are not wildcards."),actor:s().trim().min(1).optional().describe("Exact actor, or api for legacy API, API-key, and user actors."),entityType:s().trim().min(1).optional().describe("Exact entity type filter."),entityId:s().trim().min(1).optional().describe("Exact entity identity filter."),excludeEntityTypes:Ya(e=>{const n=typeof e=="string"?[e]:Array.isArray(e)?e:null;return n?[...new Set(n.flatMap(i=>typeof i=="string"?i.split(",").map(r=>r.trim()):[i]))]:e},y(s().min(1))).optional()});d({id:s(),project:s().nullable().optional(),projectId:s().nullable().optional(),actor:s(),action:s(),entityType:s(),entityId:s().nullable().optional(),diff:kn().optional(),userAgent:s().nullable().optional(),actorSession:s().nullable().optional(),requestId:s().nullable().optional(),credentialId:s().nullable().optional(),createdAt:s()});const Q0=Fe([ta,de()]),Z0=k(["pass","partial","fail"]),Nae=Z0.enum,Y2=k(["up","down","flat"]);Y2.enum;const sq=d({id:s(),name:s(),weight:m(),sharePct:ot(m().min(0).max(100)).nullable().default(null),avgScore:m(),status:Z0,pagesPassing:m().int().nonnegative(),pagesPartial:m().int().nonnegative(),pagesFailing:m().int().nonnegative()}),oq=d({factorId:s(),factorName:s(),avgScore:m(),affectedPages:m().int().nonnegative(),totalPages:m().int().nonnegative(),affectedPct:ot(m().nonnegative()),topRecommendations:y(s()).default([])}),Ea=d({reason:k(["explicit-run","latest-date-complete","latest-date-most-pages","latest-scored-scan","requested-date-complete","requested-date-most-pages"]),date:s(),sameDateRunCount:m().int().nonnegative(),ambiguousDate:N(),candidates:y(d({runId:s(),createdAt:s(),complete:N(),pages:m().int().nonnegative()})).max(10),candidatesTruncated:N()});d({project:s(),hasData:N(),runId:s().nullable(),runStatus:Q0,sitemapUrl:s().nullable(),auditedAt:s().nullable(),aggregateScore:m(),pagesDiscovered:m().int().nonnegative(),pagesAudited:m().int().nonnegative(),pagesSkipped:m().int().nonnegative(),pagesErrored:m().int().nonnegative(),deltaScore:m().nullable(),trend:Fe([Y2,de()]),previousScore:m().nullable(),previousAuditedAt:s().nullable(),runSelection:Ea.optional(),factors:y(sq).default([]),affectedPageRanking:d({basis:E("pages-below-pass"),scope:E("audited-pages"),pagesAudited:m().int().nonnegative(),items:y(d({factorId:s(),pagesBelowPass:m().int().nonnegative(),pagesFailing:m().int().nonnegative(),pagesPartial:m().int().nonnegative()})),unavailableFactorIds:y(s())}).optional(),crossCuttingIssues:y(oq).default([]),prioritizedFixes:y(s()).default([])});const X2=d({id:s(),name:s(),weight:m(),score:m(),sharePct:ot(m().min(0).max(100)).nullable().default(null)}),rq=d({url:s(),overallScore:m(),status:k(["success","error"]),error:s().nullable().optional(),factors:y(X2).default([])});d({project:s(),runId:s().nullable(),auditedAt:s().nullable(),runSelection:Ea.optional(),total:m().int().nonnegative(),pages:y(rq).default([])});const lq=d({runId:s(),auditedAt:s(),aggregateScore:m(),pagesAudited:m().int().nonnegative()});d({project:s(),points:y(lq).default([])});const cq=k(["disabled","complete","partial","unavailable"]);cq.enum;const il=k(["indexable","redirect-terminal","canonical-to-other","robots-disallow","noindex","non-html","fetch-error","not-fetched","unknown"]);il.enum;const J2=d({healthReason:il,pages:m().int().nonnegative(),exampleUrl:s()}),W2=d({scope:E("selected-snapshot"),total:m().int().nonnegative(),eligible:m().int().nonnegative(),excluded:m().int().nonnegative(),excludedReasons:y(J2).max(il.options.length)}),e3=d({recentDates:y(jn).max(10),totalDates:m().int().nonnegative(),matchingMonthDayDates:y(jn).max(10),matchingMonthDayTotal:m().int().nonnegative()}),uq=d({pagesDiscovered:m().int().nonnegative(),pagesFetched:m().int().nonnegative(),pagesEligible:m().int().nonnegative(),edges:m().int().nonnegative(),findings:m().int().nonnegative()}),dq=Ue("state",[d({state:E("unavailable")}),d({state:E("disabled")}),d({state:E("complete"),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative()}),d({state:E("partial"),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative()})]);d({project:s(),hasCrawlData:N(),legacyAuditAvailable:N(),runId:s().nullable(),runSelection:Ea.optional(),requestedDate:jn.optional(),availableScanDates:e3.optional(),inventorySummary:W2.nullable().optional(),runStatus:Q0,requestedRootUrl:s().nullable(),rootUrl:s().nullable(),crawlSchemaVersion:s().nullable().optional(),engineVersion:s().nullable().optional(),normalizationVersion:s().nullable().optional(),indexabilityVersion:s().nullable().optional(),linkScoreVersion:s().nullable().optional(),effectiveOptions:Ke(s(),kn()).default({}),complete:N(),termination:s().nullable(),detailsAvailable:N(),counts:uq,deadLinks:dq});k(["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 Hm=k(["eligible","hidden","resource","redirect","failed","unchecked"]),Cae=Hm.enum,_ae=Hm.options,Or={discovered:"discovered",robotsBlocked:"robots-blocked",html:"html",redirect:"redirect",nonHtml:"non-html",fetchError:"fetch-error"},Rd={indexable:"indexable",noindex:"noindex",blocked:"blocked",unknown:"unknown"},mq={robotsDisallow:"robots-disallow",redirectTerminal:"redirect-terminal",metaRobotsNoindex:"meta-robots-noindex",xRobotsNoindex:"x-robots-noindex",canonicalToOther:"canonical-to-other",notHtmlOrUnavailable:"not-html-or-unavailable"};function pq(e){return e.indexabilityReasons?.some(n=>n===mq.canonicalToOther)===!0||e.nodeKey!==void 0&&e.canonicalNodeKey!==null&&e.canonicalNodeKey!==void 0&&e.canonicalNodeKey!==e.nodeKey}function Tae(e){switch(e.fetchState){case Or.fetchError:return"failed";case Or.discovered:return"unchecked";case Or.nonHtml:return"resource";case Or.redirect:return"redirect";case Or.robotsBlocked:return"hidden";case Or.html:break;default:return"unchecked"}if(pq(e))return"hidden";switch(e.indexabilityState){case Rd.indexable:return"eligible";case Rd.noindex:case Rd.blocked:return"hidden";case Rd.unknown:default:return"unchecked"}}const Eae=15,hq=k(["navigation","content","unknown"]);hq.enum;const fq=d({navigation:m().int().nonnegative(),content:m().int().nonnegative(),unknown:m().int().nonnegative()}),t3=k(["placement","ubiquity","unmeasured"]);t3.enum;const Fm=k(["applied","applied-placement","applied-placement-with-ubiquity","applied-placement-partial","unavailable-too-few-pages","unavailable-legacy-scan"]);Fm.enum;function Rae(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 Qm=k(["all","content","template"]);Qm.enum;const gq=k(["anchor","redirect","canonical","link"]);gq.enum;const $c=d({nodeKey:s(),url:s(),finalUrl:s().nullable(),path:s(),parentPath:s(),discoverySource:s(),fetchState:s(),httpStatus:m().int().nullable(),canonicalUrl:s().nullable(),indexabilityState:s(),indexabilityReasons:y(s()).default([]),auditState:s(),auditScore:m().nullable(),inventoryEligible:N(),depth:m().int().nullable(),inboundUniqueEdges:m().int().nonnegative(),outboundUniqueEdges:m().int().nonnegative(),inboundOccurrences:m().int().nonnegative(),outboundOccurrences:m().int().nonnegative(),linkScoreRaw:m().nullable(),linkScoreNormalized:ot().nullable(),healthState:Hm,healthReason:il.optional()}),n3=d({type:k(["found","missing","info","timeout","unreachable"]),code:s().min(1),message:s().min(1)}),Fw=X2.extend({status:Z0,applicable:N().nullable(),findings:y(n3).default([]),recommendations:y(s()).default([]),advisoryRecommendations:y(s()).optional()}),Qw=d({id:s().min(1),severity:k(["critical","warning"]),detail:s().min(1),recommendation:s().min(1)}),Dd=d({project:s(),runId:s(),complete:N(),termination:s().nullable(),runSelection:Ea.optional()}),Zw=d({nodeKey:s(),url:s(),auditState:s()});Ue("state",[d({state:E("no-crawl"),project:s(),runId:de()}),Dd.extend({state:E("details-unavailable")}),Dd.extend({state:E("not-found")}),Dd.merge(Zw).extend({state:E("not-audited"),auditScore:de(),factors:y(Fw).length(0).default([]),criticalDefects:y(Qw).length(0).default([])}),Dd.merge(Zw).extend({state:E("ready"),auditScore:m(),evidenceState:k(["complete","scores-only"]),factors:y(Fw).default([]),criticalDefects:y(Qw).default([])})]);const yq=k(["applied","unavailable-legacy-scan"]),iu={complete:N(),termination:s().nullable(),runSelection:Ea.optional()};d({project:s(),hasCrawlData:N(),runId:s().nullable(),...iu,requestedDate:jn.optional(),availableScanDates:e3.optional(),inventorySummary:W2.nullable().optional(),healthReasonCounts:y(J2).max(il.options.length).nullable().optional(),total:m().int().nonnegative(),nextCursor:s().nullable(),healthStateFilter:Fe([yq,de()]).default(null),pages:y($c).default([])});const bq=d({path:s(),url:s().nullable(),hasPage:N(),pageCount:m().int().positive(),inventoryEligibleCount:m().int().nonnegative(),fetchedCount:m().int().nonnegative()});d({project:s(),hasCrawlData:N(),runId:s().nullable(),...iu,parentPath:s(),nextCursor:s().nullable(),children:y(bq).default([])});const Ro=d({edgeKey:s(),sourceNodeKey:s(),sourceUrl:s(),targetNodeKey:s().nullable(),targetUrl:s(),relation:s(),internal:N(),followable:N(),occurrences:m().int().positive(),followableOccurrences:m().int().nonnegative(),nofollowOccurrences:m().int().nonnegative(),anchors:y(s()).default([]),isTemplate:Fe([N(),de()]),templateRatio:Fe([we(),de()]),templateSource:t3,placementOccurrences:Fe([fq,de()])}),vq=d({nodeKey:s(),url:s(),path:s(),depth:m().int().nonnegative().nullable(),indexabilityState:s(),fetchState:s(),auditState:s(),auditScore:m().nullable(),inventoryEligible:N(),inboundUniqueEdges:m().int().nonnegative(),outboundUniqueEdges:m().int().nonnegative(),linkScoreNormalized:ot().nullable(),healthState:Hm,healthReason:il.optional(),x:m(),y:m()}),xq=d({edgeKey:s(),sourceNodeKey:s(),targetNodeKey:s(),followable:N(),occurrences:m().int().positive(),isTemplate:N()}),wq=k(["no-crawl","legacy-snapshot","details-unavailable","layout-failed","empty-crawl"]),Sq=Ue("state",[d({state:E("ready"),version:s().min(1),computedAt:s().min(1),templateLinksExcluded:N()}),d({state:E("unavailable"),version:de(),reason:wq})]);d({project:s(),hasCrawlData:N(),runId:s().nullable(),rootNodeKey:s().nullable(),...iu,layout:Sq,templateDetection:Fm,linkKind:Qm,totalNodes:m().int().nonnegative(),totalEdges:m().int().nonnegative(),totalTemplateEdges:m().int().nonnegative(),totalContentEdges:m().int().nonnegative(),nodes:y(vq).default([]),edges:y(xq).default([]),omittedNodes:m().int().nonnegative(),omittedEdges:m().int().nonnegative(),sampled:N()});const Dae=2e4,zae=5e4,kq=k(["focus","inbound","outbound","both","transitive"]),jq=$c.extend({distance:m().int().nonnegative(),relationToFocus:kq});d({project:s(),hasCrawlData:N(),runId:s().nullable(),complete:N(),termination:s().nullable(),runSelection:Ea.optional(),state:k(["no-crawl","details-unavailable","ready"]),focusNodeKey:s().nullable(),focusUrl:s().nullable(),hops:m().int().min(0).max(3),totalNodes:m().int().nonnegative(),totalEdges:m().int().nonnegative(),nodes:y(jq).default([]),edges:y(Ro).default([]),omittedNodes:m().int().nonnegative(),omittedEdges:m().int().nonnegative(),countAccuracy:k(["exact","lower-bound"]),truncated:N()});const Yw=d({nodeKey:s(),url:s(),path:s()});d({project:s(),runId:s().nullable(),complete:N(),termination:s().nullable(),runSelection:Ea.optional(),state:k(["no-crawl","details-unavailable","found","unreachable","truncated"]),from:Yw.nullable(),to:Yw.nullable(),maxDepth:m().int().positive(),visitedNodes:m().int().nonnegative(),nodes:y($c).default([]),edges:y(Ro).default([])});const a3=k(["added","removed","changed"]),Aq=d({entity:E("page"),change:a3,key:s(),changedFields:y(s()).default([]),before:$c.nullable(),after:$c.nullable()}),Nq=d({entity:E("link"),change:a3,key:s(),changedFields:y(s()).default([]),before:Ro.nullable(),after:Ro.nullable()}),Cq=Ue("entity",[Aq,Nq]),Xw=d({added:m().int().nonnegative(),removed:m().int().nonnegative(),changed:m().int().nonnegative()}),_q=d({scope:k(["all","pages","links"]),change:k(["all","added","removed","changed"])});Ue("state",[d({project:s(),state:E("unavailable"),reason:k(["no-crawl","insufficient-history","details-unavailable","partial-not-comparable"]),fromRunId:s().nullable(),toRunId:s().nullable()}),d({project:s(),state:E("incompatible"),reason:E("incompatible-versions"),fromRunId:s(),toRunId:s(),mismatchedVersions:y(s()).min(1)}),d({project:s(),state:E("ready"),fromRunId:s(),toRunId:s(),versions:d({crawlSchema:s(),normalization:s(),indexability:s(),linkScore:s()}),filters:_q,summaryState:k(["exact","omitted-on-continuation"]),summary:d({pages:Xw,links:Xw}).nullable(),total:m().int().nonnegative().nullable(),nextCursor:s().nullable(),changes:y(Cq).default([])})]);d({project:s(),hasCrawlData:N(),runId:s().nullable(),...iu,total:m().int().nonnegative(),nextCursor:s().nullable(),templateDetection:Fm,linkKind:Qm,edges:y(Ro).default([])});d({project:s(),hasCrawlData:N(),runId:s().nullable(),...iu,nodeKey:s().nullable(),url:s().nullable(),templateDetection:Fm,linkKind:Qm,inbound:y(Ro).default([]),outbound:y(Ro).default([]),inboundTruncated:N(),outboundTruncated:N()});const Jw=d({findingKey:s(),severity:s(),sourceNodeKey:s().nullable(),sourceUrl:s().nullable(),targetNodeKey:s().nullable(),targetUrl:s().nullable(),evidence:Ke(s(),kn()).default({})});Ue("state",[d({project:s(),runId:s().nullable(),state:E("unavailable"),legacyAuditAvailable:N(),runSelection:Ea.optional()}),d({project:s(),runId:s(),state:E("disabled"),checkDeadLinks:E(!1),runSelection:Ea.optional()}),d({project:s(),runId:s(),state:E("complete"),checkDeadLinks:E(!0),runSelection:Ea.optional(),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative(),total:m().int().nonnegative(),nextCursor:s().nullable(),deadLinks:y(Jw).default([])}),d({project:s(),runId:s(),state:E("partial"),checkDeadLinks:E(!0),runSelection:Ea.optional(),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative(),total:m().int().nonnegative(),nextCursor:s().nullable(),deadLinks:y(Jw).default([])})]);const i3=5e4,su=m().int().min(1).max(i3);function Tq(e){return`${e.toLocaleString("en-US")} ${e===1?"page":"pages"}`}function Iae(e){return`full site (up to ${Tq(i3)})`}const Oae=10,s3=100;d({sitemapUrl:s().url().optional(),limit:m().int().positive().max(2e3).optional(),maxPages:su.optional(),maxEdges:m().int().positive().max(1e6).optional(),maxDepth:m().int().min(0).max(100).optional(),checkDeadLinks:N().default(!1),includeGeo:N().default(!1),includeAgentSkills:N().default(!0)});d({runId:s(),status:ta});const Eq=d({runId:s(),status:ta,createdAt:s(),startedAt:s().nullable(),finishedAt:s().nullable(),hasCrawlData:N()});d({project:s(),preferredRunId:s().nullable().optional(),scans:y(Eq).default([])});const Rq=k(["queued","discovering","checking","arranging-map","completed","partial","failed","cancelled"]),Dq=d({state:k(["pending","ready","unavailable"]),layoutVersion:s().nullable(),failureCode:s().nullable(),updatedAt:s().nullable()}),zq=d({id:s(),state:s(),pagesDiscovered:m().int().nonnegative(),pagesFetched:m().int().nonnegative(),pagesEligible:m().int().nonnegative(),pagesErrored:m().int().nonnegative(),edgesDiscovered:m().int().nonnegative(),lastUpdatedAt:s(),startedAt:s().nullable(),finishedAt:s().nullable(),error:s().nullable()});d({project:s(),runId:s(),status:ta,phase:Rq,attempt:zq.nullable(),layout:Dq,error:s().nullable()});const Iq=k(["waiting","collecting","terminal"]),Oq=d({nodeKey:s(),url:s(),auditScore:m(),checksNeedingAttention:m().int().nonnegative()});d({project:s(),runId:s(),status:ta,state:Iq,attemptId:s().nullable(),pagesAudited:m().int().nonnegative(),updatedAt:s().nullable(),examples:y(Oq).max(12).default([])});d({schemaVersion:E("1.0"),groupIdentityVersion:E("duplicate-metadata-v1"),siteIssues:y(d({key:s().min(1).nullable(),code:s().min(1),message:s(),affectedUrls:y(s().min(1))}))});const Y0=100;d({runId:s().min(1).max(128).optional(),cursor:s().min(1).max(2048).optional(),limit:m().int().min(1).max(Y0).optional()}).strict();const Pq=k(["actionable","advisory","unverified","informational"]),o3=d({nodeKey:s().nullable(),url:s(),message:s().max(400),messageTruncated:N(),recommendations:y(s().max(400)).max(3),recommendationsScope:k(["factor","issue","none"]),recommendationsTruncated:N()}),qq=d({id:s(),stableIdentity:N(),code:s(),source:k(["page-finding","cross-page","critical-defect"]),severity:k(["critical","warning"]).nullable(),factorId:s().nullable(),findingType:n3.shape.type,disposition:Pq,message:s().max(400),messageTruncated:N(),affectedPages:m().int().nonnegative(),examples:y(o3).max(3),examplesTruncated:N()}),Mq=d({pageFindings:k(["available","partial","unavailable"]),crossPage:k(["available","unavailable"]),auditedPages:m().int().nonnegative(),pagesWithFindingEvidence:m().int().nonnegative(),pagesWithoutFindingEvidence:m().int().nonnegative(),omittedFindings:m().int().nonnegative()}),r3=d({project:s(),runId:s().nullable(),attemptId:s().nullable(),auditedAt:s().nullable(),runStatus:Q0,complete:N(),termination:s().nullable(),runSelection:Ea.optional(),state:k(["no-crawl","unavailable","partial","available"]),coverage:Mq,total:m().int().nonnegative().nullable(),nextCursor:s().nullable()});r3.extend({issues:y(qq).max(Y0)});r3.extend({issueId:s(),pages:y(o3).max(Y0)});new Set(s2.map(e=>e.toLowerCase()));const Bq=4,l3=3;function Pae(e){return e.filter(n=>za(n).length>=l3)}const Lq=10,qae=24,Uq="bulk-add-unacknowledged";k([Uq]);const Vq=80,c3=k(["too-long","too-short","project-brand","other-competitor","market-competitor","claimed-by-alias"]);c3.enum;const u3=k(["too-long","too-short","blocked","already-matched","subsumed","project-brand","other-competitor","over-limit"]);u3.enum;const d3=y(s()).describe(`Operator-curated names this competitor goes by in answer text (at most ${Lq}, each ${Vq} characters or fewer, at least ${l3} letters or digits).`);d({aliases:d3});const Kc=s().trim().min(1).refine(e=>!!UO(e),{message:"Competitor domain must be a valid domain or URL"}),$q=d({domain:Kc,aliases:d3.optional()}),X0=Fe([Kc,$q]),Ww=d({domain:s(),before:y(s()),after:y(s())}).strict(),Kq=d({domain:s(),alias:s(),reason:c3,conflictsWith:s().optional(),conflictingName:s().optional(),markets:y(s()).optional(),supersededRevision:m().int().optional()}).strict(),Gq=d({domain:s(),alias:s(),reason:u3,stored:N(),conflictsWith:s().optional(),conflictingName:s().optional()}).strict();function m3(e,n){return Number((n===Fa.percent?e:e*100).toFixed(6))}function p3(e){return Math.round(Number((e*10).toFixed(4)))/10}function um(e,n=Fa.fraction){if(e==null||!Number.isFinite(e))return"—";const i=m3(e,n);if(i===0)return"0%";const r=i<0?"-":"",u=Math.abs(i);if(u===100)return`${r}100%`;const h=p3(u);return h===0?`${r}<0.1%`:h===100&&u<100?`${r}>99.9%`:`${r}${h.toFixed(1)}%`}function Mae(e){return Number.isFinite(e)?Math.abs(e)>=1e6?`${(e/1e6).toFixed(1)}M`:Math.abs(e)>=1e3?`${(e/1e3).toFixed(1)}K`:e.toLocaleString("en-US"):"—"}function Bae(e){if(!e)return"—";try{const n=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e),i={month:"short",day:"numeric",year:"numeric"},r=n&&n[1]&&n[2]&&n[3]?new Date(Date.UTC(Number(n[1]),Number(n[2])-1,Number(n[3]))):new Date(e);return Number.isNaN(r.getTime())?e:r.toLocaleDateString("en-US",n?{...i,timeZone:"UTC"}:i)}catch{return e}}const Hq=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Rc(e,n=new Date){const i=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e),r=i?Hq[Number(i[2])-1]:void 0;if(!i||!r)return e;const u=`${r} ${Number(i[3])}`;return Number(i[1])===n.getFullYear()?u:`${u}, ${i[1]}`}function Lae(e,n,i=800){const r=[];if(!/^\d{4}-\d{2}-\d{2}$/.test(e)||!/^\d{4}-\d{2}-\d{2}$/.test(n))return r;for(let u=e;u<=n&&(r.push(u),!(r.length>=i));u=Fq(u,1));return r}function Fq(e,n){if(!Number.isFinite(n))return e;const i=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);if(!i?.[1]||!i[2]||!i[3])return e;const r=new Date(Date.UTC(Number(i[1]),Number(i[2])-1,Number(i[3])+Math.trunc(n)));if(Number.isNaN(r.getTime()))return e;const u=r.getUTCFullYear(),h=String(r.getUTCMonth()+1).padStart(2,"0"),f=String(r.getUTCDate()).padStart(2,"0");return`${u}-${h}-${f}`}function Uae(e,n=Fa.fraction){const i=m3(e,n);if(i===0)return{direction:"none",magnitude:"0"};const r=p3(Math.abs(i));return{direction:i>0?"up":"down",magnitude:r===0?"<0.1":r.toFixed(1)}}function Vae(e,n="UTC"){const i=new Date(e);if(!Number.isFinite(i.getTime()))return null;const r={weekday:"short",year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"2-digit",timeZoneName:"short"};try{return i.toLocaleString("en-US",{...r,timeZone:n})}catch{return i.toLocaleString("en-US",{...r,timeZone:"UTC"})}}const Qq=d({basis:k(["tracked","observed"]).nullable(),availability:k(["measured","not-measured","unavailable"]),reason:k(["select-query-class","answer-selection","no-competitors","insufficient-observed","no-answers","no-mentions","unavailable"]).nullable()}),J0=Qq.partial().shape,h3=k(["introduced","repointed","retired"]),Zq=h3.enum;d({modelId:s().trim().min(1),date:s().regex(/^\d{4}-\d{2}-\d{2}$/,"date must be YYYY-MM-DD"),kind:h3,confirmed:N(),sourceUrl:s().url(),note:s().min(1)});const Yq=[{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.'}];Zq.repointed;new Set(Yq.map(e=>e.modelId.toLowerCase()));const Xq=k(["not-exposed","no-known-change","known-change"]);Xq.enum;const Jq=d({modelId:s().trim().min(1),date:s().regex(/^\d{4}-\d{2}-\d{2}$/),confirmed:N(),sourceUrl:s().url()}),Wq=d({status:k(["no-known-change","known-change"]),modelIds:y(s().trim().min(1)).min(1),changes:y(Jq),changeCount:m().int().nonnegative(),unverifiedChangeCount:m().int().nonnegative(),firstChangeDate:s().optional(),lastChangeDate:s().optional(),knownGoodAsOf:s(),checkedThroughPeriodEnd:N()}),eM={openai:"ChatGPT",chatgpt:"ChatGPT",anthropic:"Claude",claude:"Claude",google:"Gemini",gemini:"Gemini",perplexity:"Perplexity"};function tM(e){const n=e.trim().toLowerCase();return eM[n]??e.charAt(0).toUpperCase()+e.slice(1)}function Bf(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):0}function bc(e){return typeof e=="string"&&e.trim().length>=10?e.trim().slice(0,10):null}function Lf(e){return[...new Set(e.filter(n=>n!==null))].sort()}function nM(e,n,i){const r=i(e),u=Array.isArray(n.changes)?n.changes:[],h=Bf(n.changeCount)||u.length,f=Math.min(h,Bf(n.unverifiedChangeCount)||Bf(n.unconfirmedChangeCount)||u.filter(j=>j.confirmed===!1).length),b=bc(n.knownGoodAsOf),v=n.checkedThroughPeriodEnd!==!1,x={engine:r,confirmedCount:h-f,unconfirmedCount:f,knownGoodAsOf:b,checkedThroughPeriodEnd:v};if(u.length>0)return{...x,confirmedDates:Lf(u.filter(j=>j.confirmed!==!1).map(j=>bc(j.date))),unconfirmedDates:Lf(u.filter(j=>j.confirmed===!1).map(j=>bc(j.date)))};const S=Lf([bc(n.firstChangeDate),bc(n.lastChangeDate)]);return h===0?{...x,confirmedDates:[],unconfirmedDates:[]}:f===0?{...x,confirmedDates:S,unconfirmedDates:[]}:x.confirmedCount===0?{...x,confirmedDates:[],unconfirmedDates:S}:{...x,confirmedDates:[],unconfirmedDates:[]}}function aM(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 eS(e,n){return e.length===0?null:e.length===1&&n<=1?`on ${Rc(e[0])}`:`more than once between ${Rc(e[0])} and ${Rc(e[e.length-1])}`}function iM(e){const n=eS(e.confirmedDates,e.confirmedCount),i=eS(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 i?`${r} may have been updated ${i}, inside this period, though that is not confirmed.`:`${r} may have been updated inside this period, though that is not confirmed.`;if(n&&i)return`${r} was updated ${n}, inside this period, and may also have been updated ${i}.`;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 tS(e){const n=e.filter(r=>!r.checkedThroughPeriodEnd&&r.knownGoodAsOf!==null);if(n.length===0)return null;const i=n.map(r=>r.knownGoodAsOf).sort()[0];return`We last checked for model updates on ${Rc(i)}, and this period runs past that date, so there may be later updates we do not know about.`}function $ae(e,n={}){const i=n.engineName??tM,r=Object.entries(e??{}).map(([S,j])=>nM(S,j??{},i)).sort((S,j)=>S.engine.localeCompare(j.engine));if(r.length===0)return null;const u=r.filter(S=>S.confirmedCount+S.unconfirmedCount>0);if(u.length===0){const S=[...new Set(r.map(q=>q.engine))],j=S.length>1,C=tS(r),T=[...new Set(r.map(q=>q.knownGoodAsOf).filter(q=>q!==null))].sort(),z=C??(T.length>0?`We last checked for model updates on ${Rc(T[0])}.`:null);return{kind:"no-known-change",text:`No model updates are on record for ${aM(S)} in this period.`,detail:`${j?"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.${z?` ${z}`:""}`}}const h=u.reduce((S,j)=>S+j.confirmedCount+j.unconfirmedCount,0),f=u.some(S=>S.confirmedCount>0),b=h===1?"this update":"these updates",v=f?`Some of the movement in these numbers may come from ${b} 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 ${b} rather than from a real change in how AI answers about you, so compare periods carefully.`,x=tS(r);return{kind:"change",text:`${u.map(iM).join(" ")} ${v}${x?` ${x}`:""}`}}const W0=k(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);W0.enum;const e1=k(["cited","aspirational","wasted-surface"]),nS=e1.enum;nS.cited,nS.aspirational;const ou=k(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),sM=ou.enum;sM["direct-competitor"];const Zm=k(["queued","seeding","probing","completed","failed"]);Zm.enum;const f3=d({domain:s().min(1),hits:m().int().positive(),competitorType:ou.default("unknown")}),oM=d({id:s(),sessionId:s(),projectId:s(),query:s(),bucket:e1.nullable().default(null),citationState:Ki,citedDomains:y(s()).default([]),answerMentioned:N().nullable().default(null),createdAt:s()}),rM=d({id:s(),projectId:s(),status:Zm,icpDescription:s().nullable().optional(),seedProvider:s().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:s().nullable().optional(),locations:y(Jt).nullable().optional(),seedRawCandidates:y(s()).nullable().optional(),dedupClusterMinSims:y(m()).nullable().optional(),dedupBandPairFraction:we().nullable().optional(),dedupPairsTotal:m().int().nullable().optional(),seedProviders:y(s()).nullable().optional(),seedProviderCounts:Ke(s(),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(f3).default([]),warning:s().nullable().optional(),error:s().nullable().optional(),startedAt:s().nullable().optional(),finishedAt:s().nullable().optional(),createdAt:s()});rM.extend({probes:y(oM).default([])});const lM=500,cM=8,uM=["gemini","openai"],dM=k(uM);d({icpDescription:s().min(1).optional(),buyerDescription:s().min(1).optional(),seedProviders:y(dM).min(1).transform(e=>[...new Set(e)].sort()).optional(),dedupThreshold:m().min(0).max(1).optional(),maxProbes:m().int().positive().max(lM).optional(),probeConcurrency:m().int().min(1).max(cM).optional(),locations:y(s().min(1)).optional()});d({buckets:y(e1).min(1).optional(),includeCompetitors:N().optional(),competitorTypes:y(ou).min(1).optional()});const t1=d({domain:s().min(1),hits:m().int().positive(),competitorType:ou,sources:y(f3)}),g3=k(["already-tracked","project-domain","shared-host","claimed-by-alias"]);g3.enum;const y3=t1.extend({reason:g3,message:s()});d({sessionId:s(),projectId:s(),status:Zm,queriesByBucket:d({cited:y(s()),aspirational:y(s()),"wasted-surface":y(s())}),suggestedCompetitors:y(t1),skippedCompetitors:y(y3)});d({sessionId:s(),projectId:s(),promoted:d({queries:y(s()),competitors:y(s())}),skipped:d({queries:y(s()),competitors:y(s())}),competitorDetails:d({promoted:y(t1),skipped:y(y3)})});Fe([E("cli"),s().regex(/^discovery:.+$/)]);const mM=d({query:s().min(1),probeHits:m().int().positive()}),pM=d({rawCandidates:m().int().nonnegative(),admitted:m().int().nonnegative(),rejected:d({belowFloor:m().int().nonnegative(),length:m().int().nonnegative(),navigational:m().int().nonnegative(),duplicate:m().int().nonnegative(),offAnchor:m().int().nonnegative(),semanticDuplicate:m().int().nonnegative()})});d({sessionId:s(),projectId:s(),provider:s(),status:Zm,minProbeHits:m().int().positive(),anchorApplied:N(),semanticNoveltyApplied:N(),candidates:y(mM),stats:pM});const n1=k(["own","direct-competitor","ota-aggregator","editorial-media","other"]);n1.enum;const Ls=k(tl.metrics),aS=k(["improving","declining","stable"]),hM=k(["mentioned","cited"]);hM.enum;const zg=d({citationRate:we(),cited:m().int(),total:m().int(),mentionRate:we(),mentionedCount:m().int()}),sl=s().trim().min(1),fM=y(sl).min(1).superRefine((e,n)=>{for(let i=1;i<e.length;i+=1)e[i-1]>=e[i]&&n.addIssue({code:"custom",message:"mixed model IDs must be sorted and unique",path:[i]})}),Do=Ue("status",[d({status:E("known"),model:sl}),d({status:E("unknown")}),d({status:E("mixed"),models:fM,includesUnknown:N()})]),gM=d({observedAt:s(),bucketStartDate:s(),from:Do,to:Do,fromPreWindowAnchor:N().optional(),anchorObservedAt:s().optional()}),b3=d({latestObservation:d({observedAt:s(),state:Do}),events:y(gM),eventTotal:m().int().nonnegative().optional(),anchorUnavailable:N().optional()}),yM=Ke(s(),b3),bM=b3.extend({latestServedModelIds:y(sl).default([])}),vM=Ke(s(),bM),xM=d({observedAt:s(),configured:Do,served:Do}),wM=d({scope:k(["non-brand","pooled"]),rate:we().nullable(),projectMentionSnapshots:m().int().nonnegative(),competitorMentionSnapshots:m().int().nonnegative()}),SM=d({startDate:s(),endDate:s(),dataStartDate:s(),dataEndDate:s(),sweepCount:m().int().nonnegative(),citationRate:we(),cited:m().int(),total:m().int(),queryCount:m().int(),mentionRate:we(),mentionedCount:m().int(),mentionShare:wM,byProvider:Ke(s(),zg),modelEvidenceByProvider:Ke(s(),Do).default({}),basketRevision:m().int().nullable().default(null)}),Uf=d({first:we(m().min(0).max(1)),latest:we(m().min(0).max(1)),delta:we(m().min(-1).max(1))}),kM=d({citationRate:Uf.nullable(),mentionRate:Uf.nullable(),mentionShare:Uf.nullable()}),jM=d({revision:m().int(),at:s(),added:y(s()),removed:y(s())}),AM=d({date:s(),delta:m().int(),label:s()}),NM=d({at:s(),identity:$2}),a1=s().nullable().describe("When the names the project's competitors are matched by last changed: a tracked competitor's curated or stored auto-detected names (a block counts only when it removes a stored name), a detection pass that stored or removed a market-only competitor's learned names, a write that claimed, released or dropped a market-only competitor's learned names, or a published revision that renamed a market pin; null if never. The competitor landscape reads every period with the current names, so a figure for any period quoted before this time was restated at this time. Analytics mention share and project-frame visibility-compare share of voice read only tracked competitors' names, so a market pin or learned-name change moves this time without changing them. Adding or removing a competitor or a pin is a names change only when it moves a stored or learned name."),i1=s().nullable().describe("When the tracked competitor set last changed: a non-empty competitor add, removal, replacement, or discovery promotion. Older replacement audit rows without added/removed fields count conservatively; an identical replacement with both arrays empty does not. Null when the set never changed.");d({window:Ls,mentionShareScope:k(["non-brand","pooled"]),buckets:y(SM),overall:zg,byProvider:Ke(s(),zg),trend:aS,mentionTrend:aS,windowChange:kM.default(()=>({citationRate:null,mentionRate:null,mentionShare:null})),queryChanges:y(AM),basketChanges:y(jM).default([]),executionIdentityChanges:y(NM).default([]),referenceBasketRevision:m().int().nullable().default(null),modelAttribution:yM.default({}),servedModelAttribution:vM.default({}),modelServiceMismatch:Ke(s(),xM).default({}),modelPointerChanges:Ke(s(),Wq).default({}),competitorIdentityChangedAt:a1.optional(),competitorSetChangedAt:i1.optional()});const iS=d({category:W0,label:s(),count:m().int(),percentage:we(),topDomains:y(d({domain:s(),count:m().int()}))}),CM=d({domain:s(),rank:m().int().positive().optional(),count:m().int(),percentage:we(),answerShare:we().optional(),category:W0,label:s(),surfaceClass:n1}),_M=d({surfaceClass:n1,label:s(),count:m().int(),percentage:we(),domainCount:m().int()}),sS=d({totalCitedSlots:m().int(),answerTotal:m().int().optional(),answersWithSources:m().int().optional(),domainTotal:m().int(),entries:y(CM),truncatedDomainCount:m().int(),truncatedCitedSlots:m().int(),bySurfaceClass:y(_M)}),TM=d({answers:y(s()),distinctDomains:y(s()),answerDomainPairs:y(s()),runs:y(s())}),EM=k(["measurement-plan","query-text"]);d({runId:s().trim().min(1).optional(),queryClass:q0.optional(),includeByQuery:k(["true","false","1","0"]).optional()});d({ranked:sS,byProvider:Ke(s(),sS),providersWithoutSources:y(s()).optional(),answerTotal:m().int().optional(),runCount:m().int().optional(),pooledAcrossRuns:N().optional(),unclassifiedAnswers:m().int().optional(),filters:d({runId:s().nullable(),queryClass:q0,queryClassBasis:Fe([EM,de()]),includeByQuery:N()}).optional(),runId:s(),runIds:y(s()).optional(),countUnits:TM.optional(),window:Ls,limit:m().int().nullable(),overall:y(iS),byQuery:Ke(s(),y(iS)).optional()});const v3=k(["own","direct-competitor","ota-aggregator","editorial-media","other","unknown"]),x3=Ue("kind",[d({kind:E("project")}).strict(),d({kind:E("group"),groupKey:s().trim().min(1)}).strict(),d({kind:E("all-markets")}).strict()]),w3=k(["all","branded","non-brand"]),S3=k(["project","all-markets"]);d({window:Ls.optional(),groupKey:s().trim().min(1).optional(),scope:S3.optional(),provider:s().trim().min(1).optional(),model:sl.optional(),groupBy:E("model").optional(),queryClass:w3.optional(),location:s().trim().min(1).optional(),runId:s().trim().min(1).optional(),answers:k(["all","not-mentioned"]).optional()}).strict().superRefine((e,n)=>{e.scope==="all-markets"&&e.groupKey!==void 0&&n.addIssue({code:"custom",path:["groupKey"],message:"groupKey cannot be combined with scope=all-markets"}),e.model!==void 0&&e.provider===void 0&&n.addIssue({code:"custom",path:["provider"],message:"provider is required when filtering by model"})});const Ts=d({domain:s().trim().min(1),label:s().trim().min(1),surfaceClass:v3,pinned:N(),mentionCount:m().int().nonnegative(),shareOfVoice:ot(m().min(0).max(100)).nullable(),citationCount:m().int().nonnegative(),answeredResults:m().int().nonnegative(),firstSeenAt:s().datetime().nullable(),lastSeenAt:s().datetime().nullable(),sampleUrls:y(s().url()).max(3)}).strict(),k3=d({answeredResults:m().int().nonnegative(),sourceResults:m().int().nonnegative(),missingAnswerTextResults:m().int().nonnegative(),mentionCredits:m().int().nonnegative(),incompleteSourceResults:m().int().nonnegative(),excludedProbeResults:m().int().nonnegative(),excludedNonCompletedResults:m().int().nonnegative()}).strict(),RM=d({answers:y(s()),distinctNames:y(s()),runs:y(s())}).strict(),DM=50,zM=d({...J0,comparison:y(d({domain:s(),mentions:m().int().nonnegative()})).optional(),observedNames:y(d({name:s(),answerCount:m().int().nonnegative()})).optional(),observedNamesTotal:m().int().nonnegative().optional(),provider:s().trim().min(1),model:sl.nullable(),servedModels:Do,snapshotCount:m().int().positive(),project:Ts,pinned:y(Ts),observed:y(Ts),otherSources:y(Ts),evidence:k3,truncated:N()}).strict(),IM=d({basis:E("requested-model"),groups:y(zM).max(DM),totalGroups:m().int().nonnegative(),truncated:N()}).strict();d({...J0,comparison:y(d({domain:s(),mentions:m().int().nonnegative()})).optional(),observedNames:y(d({name:s(),answerCount:m().int().nonnegative()})).optional(),observedNamesTotal:m().int().nonnegative().optional(),answerSelection:d({answers:E("not-mentioned"),populationSize:m().int().nonnegative(),answerCount:m().int().nonnegative(),unknownMentionAnswers:m().int().nonnegative()}).strict().optional(),window:Ls,scope:x3,project:Ts,pinned:y(Ts),observed:y(Ts),otherSources:y(Ts),evidence:k3,modelComparison:IM.optional(),marketState:d({activeRevision:m().int().positive(),draft:d({etag:s().trim().min(1),pendingCompetitorDomains:y(s().trim().min(1))}).strict().nullable()}).strict().nullable(),filters:d({scope:S3,groupKey:s().nullable(),provider:s().nullable(),model:sl.optional(),groupBy:E("model").optional(),queryClass:w3,location:s().nullable(),runId:s().nullable(),answers:k(["all","not-mentioned"]).optional()}).strict(),truncated:N(),runCount:m().int().nonnegative().optional(),runIds:y(s()).optional(),countUnits:RM.optional(),competitorIdentityChangedAt:a1.optional(),competitorSetChangedAt:i1.optional(),competitorListRestated:N().optional()}).strict();const s1=d({total:m().int(),checked:m().int(),mentioned:m().int(),cited:m().int(),mentionRate:we().nullable(),citedRate:we().nullable()}),j3=s1.extend({provider:s(),firstObserved:s(),lastObserved:s()}),OM=s1.extend({queryId:s().nullable(),query:s(),firstObserved:s(),lastObserved:s(),providers:y(j3).optional()}),PM=d({since:s().nullable(),until:s().nullable(),lastRuns:m().int().nullable(),runCount:m().int()}),qM=k(["provider"]),Ig=d({domain:s(),mentions:m().int()}),Og=d({...J0,measurementScope:k(["project","all-markets"]).optional(),queryClass:k(["branded","non-brand","pooled"]),percent:ot().nullable(),competitorCount:m().int().nonnegative(),projectMentions:m().int(),competitorMentions:m().int(),snapshotsWithAnswerText:m().int(),perCompetitor:y(Ig)});d({project:s(),groupBy:qM.optional(),window:PM,totals:s1,byProvider:y(j3).optional(),queries:y(OM),shareOfVoice:Og.optional()});const MM=k(["within-noise","moved","insufficient-data","model-discontinuous","model-unknown"]),BM=k(["up","down","flat"]),oS=d({availability:k(["available","no-observations","no-competitive-frame","classification-unavailable"]),point:we().nullable(),ciLow:we().nullable(),ciHigh:we().nullable(),numerator:m().int(),denominator:m().int(),excludedUnknown:m().int().nonnegative().optional()}),LM=k(["mention-share-of-voice","cited-share-of-voice","mention-rate","cited-rate","mention-rate-branded","cited-rate-branded","mention-rate-non-brand","cited-rate-non-brand"]),UM=d({key:LM,label:s(),queryClass:k(["all","branded","non-brand","pooled"]),driftRobust:N(),from:oS,to:oS,rateRatio:m().nullable(),direction:Fe([BM,de()]),verdict:MM}),dm=d({month:s(),since:s(),until:s(),runCount:m().int(),lowRunCount:N()}),A3=d({queryCount:m().int(),excludedFromOnly:m().int(),excludedToOnly:m().int(),providers:y(s()),excludedProviders:y(s())}),N3=d({provider:s(),fromModels:y(s()),toModels:y(s())}),VM=k(["included","model-discontinuous","model-unknown"]),$M=d({provider:s(),status:VM,fromModels:y(s()),toModels:y(s())}),KM=k(["comparable","model-discontinuous","model-unknown","insufficient-data"]),C3=d({status:KM,comparedProviders:y(s()),providers:y($M)}),GM=d({provider:s(),from:d({checked:m().int(),mentioned:m().int(),cited:m().int()}),to:d({checked:m().int(),mentioned:m().int(),cited:m().int()})}),HM=d({from:d({count:m().int(),of:m().int()}),to:d({count:m().int(),of:m().int()})}),FM=d({scope:k(["project","group","market","property"]).optional(),scopeKey:s().min(1).optional(),marketKey:s().min(1).optional(),provider:s().min(1).optional(),location:s().min(1).optional()}),QM=d({from:dm,to:dm,basket:A3,continuity:C3,modelChanges:y(N3)});d({project:s(),selection:FM.optional(),classComparison:QM.optional(),from:dm,to:dm,basket:A3,metrics:y(UM),queriesMentioned:HM,byProvider:y(GM),modelChanges:y(N3),continuity:C3,competitors:d({from:y(Ig),to:y(Ig)}),competitorIdentityChangedAt:a1.optional(),competitorSetChangedAt:i1.optional()});const _3=k(["add","remove","replace","aliases"]),zd=_3.enum,T3=k(["basis-changed","auto-alias-rescan-pending","no-latest-sweep","pooled"]);T3.enum;Ue("change",[d({change:E(zd.add),competitors:y(X0).min(1)}).strict(),d({change:E(zd.remove),competitors:y(s().trim().min(1)).min(1)}).strict(),d({change:E(zd.replace),competitors:y(Kc)}).strict(),d({change:E(zd.aliases),domain:Kc,aliases:y(s().trim().min(1)),mode:k(["set","add"])}).strict()]);const E3=d({instrument:E("competitor-landscape"),queryClass:k(["non-brand","pooled"]),scope:k(["project","all-markets"]),runIds:y(s()),runCount:m().int().nonnegative(),sweepAt:s().datetime().nullable(),before:Og,after:Og,deltaPercent:ot().nullable(),restatesHistory:E(!0),caveats:y(T3)}).strict(),ZM=d({limit:m().int().positive(),count:m().int().nonnegative(),acknowledgementRequired:N()}).strict();d({project:s().trim().min(1),change:_3,plan:d({added:y(s()),alreadyTracked:y(s()),removed:y(s()),aliasChanges:y(Ww),droppedAliases:y(Kq),autoAliasChanges:y(Ww),droppedAutoAliases:y(Gq)}).strict(),bulkAdd:ZM,impact:E3}).strict();const R3=k(["openai-annotation","claude-citation","gemini-support","perplexity-marker","answer-link","answer-host"]);R3.enum;const D3=d({name:s(),directPairs:m().int().nonnegative(),cooccurrences:m().int().nonnegative(),namingAnswers:m().int().nonnegative(),precision:we(m().min(0).max(1)),lift:m().nonnegative().nullable().optional(),nameCasedAnswers:m().int().nonnegative().optional(),runs:m().int().nonnegative(),firstSeen:s(),lastSeen:s(),addedAt:s()}),YM=k(["added","kept","removed","review","rejected"]),z3=k(["name-shape","too-few-pairs","too-few-runs","too-few-naming-answers","low-precision","low-lift","lowercase-usage","other-competitor-dominates","no-label-affinity","needs-approval","subsumed","too-long","too-short","blocked","already-matched","project-brand","other-competitor","over-limit"]),XM=d({name:s(),status:YM,reason:z3.optional(),conflictsWith:s().optional(),directPairs:m().int().nonnegative(),runs:m().int().nonnegative(),cooccurrences:m().int().nonnegative(),namingAnswers:m().int().nonnegative(),citingAnswers:m().int().nonnegative(),nameCasedAnswers:m().int().nonnegative(),precision:we(m().min(0).max(1)).nullable(),lift:m().nonnegative().nullable(),otherCompetitorPairs:m().int().nonnegative(),labelAffinity:N(),via:y(R3),firstSeen:s(),lastSeen:s()}),JM=d({domain:s(),marketKeys:y(s()).optional(),aliases:y(s()),autoAliases:y(D3),blockedAliases:y(s()),added:y(s()),removed:y(d({name:s(),reason:z3,conflictsWith:s().optional()})),candidates:y(XM)});d({project:s(),applied:N(),changed:N(),scan:d({runs:m().int().nonnegative(),snapshots:m().int().nonnegative(),answers:m().int().nonnegative(),maxRuns:m().int().positive(),maxSnapshots:m().int().positive(),providerCitations:N()}),thresholds:d({minDirectPairs:m().int().positive(),minRuns:m().int().positive(),minNamingAnswers:m().int().positive(),minPrecision:we(m().min(0).max(1)),minLift:m().positive(),minNameCasedShare:we(m().min(0).max(1)),minKeyLength:m().int().positive(),dominanceMultiple:m().positive(),removeBelowPrecision:we(m().min(0).max(1)),removeBelowLift:m().nonnegative(),removeBelowNameCasedShare:we(m().min(0).max(1))}),competitors:y(JM),impact:E3.optional()});d({aliases:y(s().trim().min(1)).min(1).describe("Names to block from (or release back to) answer-derived auto-detection for this competitor. Compared by brand key, so case, spacing and punctuation variants are one name.")});const Ym=k(["cli","api","config-file"]);function WM(e){const n=new Set,i=new Set;for(const r of e){if(n.has(r.label)){i.add(r.label);continue}n.add(r.label)}return[...i]}function eB(e,n){return n?e.some(i=>i.label===n):!0}const o1=k(["off","preview","apply"]);o1.options;const r1=o1.optional().describe("Answer-derived competitor alias detection mode for the unattended passes queued after a completed or partial sweep, a competitor add, an unblock or a market pin write that changes pins: `off` (no pass), `preview` (the pass logs what it would add or remove and stores nothing; a new project starts here) or `apply` (the pass stores detected names and removes stored ones it no longer keeps, which restates every period's competitor counts). Omit to keep the stored mode. An explicit apply (POST /projects/{name}/competitor-auto-aliases) stores in every mode."),l1=20,c1=200,tB=d({displayName:s().min(1),canonicalDomain:s().min(1),ownedDomains:y(s().min(1)).optional(),aliases:y(s()).optional(),country:s().length(2),language:s().min(2),tags:y(s()).optional(),labels:Ke(s(),s()).optional(),providers:y(bt).optional(),providerModels:Mo.optional(),providerDispatchModes:al.optional(),locations:y(Jt).optional(),defaultLocation:s().nullable().optional(),measurement:ui.optional(),autoExtractBacklinks:N().optional(),qualifiedAliases:y(s().trim().min(1).max(c1)).max(l1).optional(),negativeReviewMaxStars:Bm.nullable().optional(),siteAuditMaxPages:su.nullable().optional(),competitorAutoAliases:r1,configSource:Ym.optional()});d({displayName:s().min(1).optional(),canonicalDomain:s().min(1).optional(),ownedDomains:y(s().min(1)).optional(),aliases:y(s()).optional(),country:s().length(2).optional(),language:s().min(2).optional(),tags:y(s()).optional(),labels:Ke(s(),s()).optional(),providers:y(bt).optional(),providerModels:Mo.optional(),providerDispatchModes:al.optional(),locations:y(Jt).optional(),defaultLocation:s().nullable().optional(),measurement:ui.partial().strict().optional(),autoExtractBacklinks:N().optional(),qualifiedAliases:y(s().trim().min(1).max(c1)).max(l1).optional(),negativeReviewMaxStars:Bm.nullable().optional(),siteAuditMaxPages:su.nullable().optional(),competitorAutoAliases:r1,expectedConfigRevision:m().int().positive().optional()}).strict();tB.extend({name:s().trim().min(1).max(120)});const nB=d({id:s(),name:s(),displayName:s().optional(),canonicalDomain:s(),ownedDomains:y(s()).default([]),aliases:y(s()).default([]),qualifiedAliases:y(s()).default([]),country:s().length(2),language:s().min(2),tags:y(s()).default([]),labels:Ke(s(),s()).default({}),providers:y(s()).default([]),providerModels:Mo.default({}),providerDispatchModes:al.default({}),locations:y(Jt).default([]),defaultLocation:s().nullable().optional(),measurement:ui.default(h2),autoExtractBacklinks:N().default(!1),negativeReviewMaxStars:Bm.nullable().optional(),siteAuditMaxPages:su.nullable().optional(),competitorAutoAliases:o1.optional().describe("Answer-derived competitor alias detection mode for the unattended passes queued after a completed or partial sweep, a competitor add, an unblock or a market pin write that changes pins. `preview` (every project's default): the pass scores the stored answers and logs what it would add or remove, storing nothing. `apply`: the pass stores the detected names and removes stored ones it no longer keeps; the read-time competitor matchers then use them, restating every period's competitor counts (see competitorIdentityChangedAt). `off`: no pass runs. An explicit apply (POST /projects/{name}/competitor-auto-aliases) stores in every mode; switching to preview or off keeps names already stored. Absent only from a server that predates the setting."),answerFieldsRecompute:k(["full","competitors"]).nullable().optional(),configSource:Ym.default("cli"),configRevision:m().int().positive().default(1),createdAt:s().optional(),updatedAt:s().optional()});d({defaultLocation:s()});d({id:s(),query:s(),createdAt:s(),queryClass:Bo.nullable().optional()});d({id:s(),keyword:s(),createdAt:s()});d({queries:y(s().trim().min(1)).min(1)});d({keywords:y(s().trim().min(1)).min(1)});d({provider:bt,count:m().int().min(1).max(20).optional()});d({queries:y(s()),provider:s()});d({keywords:y(s()),provider:s()});d({id:s(),domain:s(),aliases:y(s()),autoAliases:y(D3).optional(),blockedAliases:y(s()).optional(),marketKeys:y(s()).optional(),createdAt:s()});d({competitors:y(s().trim().min(1)).min(1)});d({competitors:y(X0).min(1),acknowledgeBulkAdd:N().optional()});d({competitors:y(Kc),acknowledgeBulkAdd:N().optional()});function I3(e){const n=[e.canonicalDomain,...e.ownedDomains??[]],i=new Set,r=[];for(const u of n){const h=u.trim();if(!h)continue;const f=Lc(h);i.has(f)||(i.add(f),r.push(h))}return r}function aB(e,n){if(!n||n.length===0)return[];const i=e?.trim().toLowerCase()??"",r=new Set,u=[];for(const h of n){const f=h.trim();if(!f)continue;const b=f.toLowerCase();b!==i&&(r.has(b)||(r.add(b),u.push(f)))}return u}function iB(e){const n=[],i=new Set,r=h=>{const f=za(h);!f||i.has(f)||(i.add(f),n.push(h))},u=e.displayName?.trim()??"";u&&r(u);for(const h of aB(e.displayName,e.aliases))r(h);for(const h of I3({canonicalDomain:e.canonicalDomain??"",ownedDomains:e.ownedDomains??[]})){const f=E0(h);if(za(f).length>=Bq)r(f);else{const b=Lc(h);b.includes(".")&&r(b)}}return n}const sB=d({name:s().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:Ke(s(),s()).optional().default({})}),O3=d({preset:s().min(1).optional(),cron:s().min(1).optional(),recurrence:qm.optional(),timezone:s().optional().default("UTC"),providers:y(bt).optional().default([]),enabled:N().optional()});function P3(e){return[e.preset,e.cron,e.recurrence].filter(n=>n!==void 0).length===1}const q3={message:'Exactly one of "preset", "cron", or "recurrence" must be provided'},oB=O3.refine(P3,q3).optional(),rB=d({id:s().min(1).optional(),channel:E("webhook"),url:s().url(),events:y(Mm).min(1)}),lB=d({gsc:d({propertyUrl:s()}).optional(),syncSchedule:d({preset:s().optional(),cron:s().optional()}).optional()}).optional(),Pg=y(s().min(1)),M3={displayName:s().min(1),canonicalDomain:s().min(1),ownedDomains:y(s().min(1)).optional().default([]),aliases:y(s().min(1)).optional().default([]),qualifiedAliases:y(s().min(1).max(c1)).max(l1).optional(),country:s().length(2),language:s().min(2),queries:Pg.optional(),keywords:Pg.optional(),competitors:y(X0).optional().default([]),providers:y(bt).optional().default([]),providerModels:Mo.optional().default({}),providerDispatchModes:al.optional(),locations:y(Jt).optional().default([]),defaultLocation:s().optional(),measurement:ui.optional().default(h2),schedule:oB,notifications:y(rB).optional().default([]),google:lB,autoExtractBacklinks:N().optional().default(!1),negativeReviewMaxStars:Bm.optional(),siteAuditMaxPages:su.nullable().optional(),competitorAutoAliases:r1};function B3(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 i=WM(e.locations);i.length>0&&n.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${i.join(", ")}`,path:["locations"]}),eB(e.locations,e.defaultLocation)||n.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})}const cB=d(M3).superRefine(B3),uB=d({apiVersion:E("canonry/v1"),kind:E("Project"),metadata:sB,spec:cB});uB.extend({spec:d({...M3,queries:Pg,providerModels:Mo.optional(),schedule:O3.extend({enabled:N()}).refine(P3,q3).optional(),autoExtractBacklinks:N().optional()}).superRefine(B3)});function sn(e){return d({before:e.nullable(),after:e.nullable()})}const dB=d({displayName:s().optional(),canonicalDomain:s().optional(),ownedDomains:y(s()).optional(),aliases:y(s()).optional(),qualifiedAliases:y(s()).optional(),country:s().optional(),language:s().optional(),labels:Ke(s(),s()).optional(),providers:y(s()).optional(),providerModels:Mo.optional(),providerDispatchModes:al.optional(),"measurement.marketingHosts":ui.shape.marketingHosts.optional(),"measurement.brandTerms":ui.shape.brandTerms.optional(),"measurement.leadEventNames":ui.shape.leadEventNames.optional(),locations:y(Jt).optional(),defaultLocation:s().nullable().optional(),autoExtractBacklinks:N().optional(),negativeReviewMaxStars:m().int().nullable().optional(),siteAuditMaxPages:m().int().nullable().optional(),competitorAutoAliases:k(["off","preview","apply"]).optional(),configSource:Ym.optional()}).strict(),mB=d({displayName:sn(s()).optional(),canonicalDomain:sn(s()).optional(),ownedDomains:sn(y(s())).optional(),aliases:sn(y(s())).optional(),qualifiedAliases:sn(y(s())).optional(),country:sn(s()).optional(),language:sn(s()).optional(),labels:sn(Ke(s(),s())).optional(),providers:sn(y(s())).optional(),providerModels:sn(Mo).optional(),providerDispatchModes:sn(al).optional(),"measurement.marketingHosts":sn(ui.shape.marketingHosts).optional(),"measurement.brandTerms":sn(ui.shape.brandTerms).optional(),"measurement.leadEventNames":sn(ui.shape.leadEventNames).optional(),locations:sn(y(Jt)).optional(),defaultLocation:sn(s()).optional(),autoExtractBacklinks:sn(N()).optional(),negativeReviewMaxStars:sn(m().int()).optional(),siteAuditMaxPages:sn(m().int().nullable()).optional(),competitorAutoAliases:sn(k(["off","preview","apply"])).optional(),configSource:sn(Ym).optional()}).strict(),qg=d({cron:s().optional(),preset:s().optional(),recurrence:qm.optional(),timezone:s(),providers:y(s()),enabled:N()}).strict(),pB=d({domain:s(),alias:s(),reason:k(["too-long","too-short","project-brand","other-competitor","market-competitor","claimed-by-alias"]),conflictsWith:s().optional(),conflictingName:s().optional(),markets:y(s()).optional()}).strict(),hB=d({id:s(),url:s().optional(),urlHost:s(),events:y(s()),enabled:N(),source:s().optional()});d({project:d({id:s(),name:s()}),configRevision:m().int(),fields:dB,queries:y(d({id:s(),text:s()})),competitors:y(d({id:s(),domain:s(),aliases:y(s())})),schedule:qg.nullable(),notifications:y(hB),managed:d({queries:N(),competitors:N(),schedule:N(),notifications:N()}),detachedSnapshotCount:m().int().nonnegative()});const L3=d({urlHost:s(),events:y(s())}),fB=L3.extend({id:s()}),gB=d({id:s(),urlHost:s(),urlChanged:N(),eventsBefore:y(s()),eventsAfter:y(s())});d({project:d({id:s().nullable(),name:s()}),action:k(["create","update","none"]),changed:N(),configRevision:d({before:m().int().nullable(),after:m().int()}),fields:mB,queries:d({managed:N(),added:y(s()),removed:y(s()),unchangedCount:m().int().nonnegative(),snapshotsDetached:m().int().nonnegative()}),competitors:d({managed:N(),added:y(s()),removed:y(s()),aliasChanges:y(d({domain:s(),before:y(s()),after:y(s())})),droppedAliases:y(pB)}),schedule:d({managed:N(),action:k(["create","update","delete","none"]),before:qg.nullable(),after:qg.nullable()}),notifications:d({managed:N(),added:y(L3),removed:y(fB),kept:y(gB),secretsRotated:m().int().nonnegative()}),effects:y(k(["mention-backfill","competitor-rescore","competitor-auto-alias-rescan","schedule-reload","gsc-property-update"]))});const U3=k(["stored","live","write"]);Object.freeze(U3.enum);const yB=1,bB=s().refine(e=>e.trim().length>0,{message:"Must not be blank"}),V3=d({displayName:s(),aliases:y(s()),canonicalDomain:s(),ownedDomains:y(s()),qualifiedAliases:y(s()).optional()}).strict(),$3=d({provider:bt.refine(e=>e.trim().length>0,{message:"Provider must not be blank"}),requestedModel:s().nullable()}).strict(),K3=d({domain:s(),label:s(),aliases:y(s())}).strict(),G3=d({queryId:bB,queryText:s(),provenance:s().nullable()}).strict(),vB=G3.extend({queryClass:Bo.nullable()}).strict();function H3(e,n){const i=new Set;e.engines.forEach((h,f)=>{const b=h.provider.trim().toLocaleLowerCase("en");i.has(b)&&n.addIssue({code:fe.custom,path:["engines",f,"provider"],message:`Duplicate engine provider "${h.provider}"`}),i.add(b)});const r=new Set;e.queries.forEach((h,f)=>{r.has(h.queryId)&&n.addIssue({code:fe.custom,path:["queries",f,"queryId"],message:`Duplicate query id "${h.queryId}"`}),r.add(h.queryId)});const u=new Set;e.competitors?.forEach((h,f)=>{const b=h.domain;u.has(b)&&n.addIssue({code:fe.custom,path:["competitors",f,"domain"],message:`Duplicate competitor domain "${h.domain}"`}),u.add(b)})}d({capturedAt:s().datetime(),identity:V3,country:s(),language:s(),location:Jt.nullable(),engines:y($3).min(1),competitors:y(K3).optional(),queries:y(G3)}).strict().superRefine(H3);d({schemaVersion:E(yB),capturedAt:s().datetime(),identity:V3,country:s(),language:s(),location:Jt.nullable(),engines:y($3).min(1),competitors:y(K3).optional(),queries:y(vB)}).strict().superRefine(H3);const xB=k(["auto","simple","advanced"]),wB=k(["simple","advanced"]),F3=k(["branded","non-brand","unknown","all"]),SB=k(["branded","non-brand","unknown"]),u1=k(["project","group","market","property"]),Q3=Ue("kind",[d({kind:E("all")}).strict(),d({kind:E("none")}).strict(),d({kind:E("exact"),value:s().trim().min(1)}).strict()]);function kB(e){if(e===void 0||e==="")return{kind:"all"};const n=e.normalize("NFKC").trim();return n===""?{kind:"all"}:n.toLocaleLowerCase("en")==="none"?{kind:"none"}:{kind:"exact",value:n}}const St=s().trim().min(1),Gi=s().datetime(),jB={mode:xB.default("auto"),queryClass:F3.default("non-brand"),scope:u1.default("project"),scopeKey:St.optional(),marketKey:St.optional(),provider:St.optional(),model:St.optional(),location:s().trim().min(1).optional(),from:Gi.optional(),to:Gi.optional(),revision:m().int().positive().optional(),runId:St.optional(),queryKey:St.optional(),queryId:St.optional(),search:s().trim().min(1).optional(),cursor:St.optional(),limit:m().int().min(1).max(100).default(50)},mm=d(jB).strict().superRefine((e,n)=>{e.scope!=="project"&&e.scopeKey===void 0&&n.addIssue({code:fe.custom,path:["scopeKey"],message:`scopeKey is required for ${e.scope} scope`}),e.scope==="project"&&e.scopeKey!==void 0&&n.addIssue({code:fe.custom,path:["scopeKey"],message:"scopeKey is not valid for project scope"}),e.scope==="market"&&e.marketKey!==void 0&&n.addIssue({code:fe.custom,path:["marketKey"],message:"marketKey is not valid for market scope"}),e.from!==void 0&&e.to!==void 0&&e.from>e.to&&n.addIssue({code:fe.custom,path:["to"],message:"to must be on or after from"}),e.queryKey!==void 0&&e.queryId!==void 0&&n.addIssue({code:fe.custom,path:["queryId"],message:"queryKey and queryId cannot both be supplied"})});mm.transform(e=>({...e,location:kB(e.location)}));const Da=d({numerator:m().int().nonnegative().nullable(),denominator:m().int().nonnegative().nullable(),rate:we(m().min(0).max(1)).nullable(),reason:k(["no-population","incomplete","evidence-incomplete","identity-ambiguous","not-applicable"]).optional(),unattributed:m().int().positive().optional(),unchecked:m().int().positive().optional()}).strict().superRefine((e,n)=>{if(e.numerator===null||e.denominator===null||e.rate===null){(e.numerator!==null||e.denominator!==null||e.rate!==null||e.reason===void 0)&&n.addIssue({code:fe.custom,message:"Unavailable rates require null values and a reason"}),e.unattributed!==void 0&&n.addIssue({code:fe.custom,path:["unattributed"],message:"Only an available rate can leave answers out"}),e.unchecked!==void 0&&n.addIssue({code:fe.custom,path:["unchecked"],message:"Only an available rate can leave answers out"});return}e.reason!==void 0&&n.addIssue({code:fe.custom,message:"Available rates cannot carry a reason"}),e.unattributed!==void 0&&e.unchecked!==void 0&&n.addIssue({code:fe.custom,path:["unchecked"],message:"A rate reads one signal: unattributed (mention) and unchecked (citation) cannot share it"});const{numerator:r,denominator:u}=e;u===null||r===null||(u===0&&n.addIssue({code:fe.custom,path:["denominator"],message:"Available rates require a positive denominator"}),r>u&&n.addIssue({code:fe.custom,path:["numerator"],message:"Numerator cannot exceed denominator"}))}),Z3=Ue("kind",[d({kind:E("frozen-simple"),definitionRevision:de()}).strict(),d({kind:E("legacy-simple"),definitionRevision:de()}).strict(),d({kind:E("frozen-advanced"),definitionRevision:m().int().positive()}).strict(),d({kind:E("unsupported-advanced-v1"),definitionRevision:m().int().positive()}).strict()]),pm=d({id:St,label:s().trim().min(1),kind:u1,targetCount:m().int().nonnegative(),parentGroupIds:y(St).optional(),marketKeys:y(St).optional()}).strict(),AB=d({provider:St,model:St}).strict(),NB=d({providers:y(St),models:y(AB),locations:y(Q3)}).strict(),CB=d({queryCount:m().int().nonnegative(),answerCount:m().int().nonnegative(),mentionCoverage:Da,citationCoverage:Da,propertyReach:Da,outcomes:d({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().superRefine((e,n)=>{e.bothSignals+e.mentionedOnly+e.citedOnly+e.neither+e.notMeasured!==e.total&&n.addIssue({code:fe.custom,message:"Outcome partition must sum to total"})}),notMeasuredUnchecked:m().int().positive().optional()}).strict().superRefine((e,n)=>{e.notMeasuredUnchecked!==void 0&&e.notMeasuredUnchecked>e.outcomes.notMeasured&&n.addIssue({code:fe.custom,path:["notMeasuredUnchecked"],message:"notMeasuredUnchecked is a subset of outcomes.notMeasured"})}),_B=d({runId:St,createdAt:Gi,revision:m().int().positive().nullable(),provenance:Z3,queryCount:m().int().nonnegative(),answerCount:m().int().nonnegative(),mentionCoverage:Da,citationCoverage:Da,continuity:d({state:k(["first","comparable","definition-changed","model-changed","legacy-unknown"]),comparedRunId:s().nullable()}).strict()}).strict(),TB=d({sourceSnapshotIds:y(St).default([]),queryKey:St,queryId:s().nullable(),query:s(),provider:St,model:s().nullable(),location:s().nullable(),targetKeys:y(St),marketKeys:y(St).optional(),answerCount:m().int().nonnegative(),mentionCoverage:Da,citationCoverage:Da,uncheckedSources:d({answers:m().int().positive(),citedAnswers:m().int().nonnegative(),citedTargetKeys:y(St)}).strict().superRefine((e,n)=>{e.citedAnswers>e.answers&&n.addIssue({code:fe.custom,path:["citedAnswers"],message:"citedAnswers cannot exceed answers"}),e.citedAnswers===0!=(e.citedTargetKeys.length===0)&&n.addIssue({code:fe.custom,path:["citedTargetKeys"],message:"citedTargetKeys is empty exactly when no saved link cites a Property"})}).optional()}).strict(),EB=d({answerId:St,runId:St,queryKey:St,query:s(),provider:St,model:s().nullable(),location:s().nullable(),targetKeys:y(St),mentioned:N().nullable(),mentionUnavailableReason:E("identity-ambiguous").optional(),cited:N().nullable(),answerText:s().nullable(),createdAt:Gi,sources:y(s()),observedCompetitors:y(St)}).strict(),RB=d({domain:St,answerCount:m().int().nonnegative(),mentionCoverage:Da,citationCoverage:Da}).strict(),DB=d({name:St,answerCount:m().int().nonnegative()}).strict(),zB=Ue("state",[d({state:E("available")}).strict(),d({state:E("unavailable"),reason:E("frozen-competitor-identity-missing")}).strict()]),rS=d({id:St,label:s().trim().min(1),queryCount:m().int().nonnegative(),mentionCoverage:Da,citationCoverage:Da}).strict();function lS(e){return d({items:y(e),nextCursor:s().nullable(),total:m().int().nonnegative()}).strict()}const Y3=k(["current-unavailable","previous-unavailable","not-applicable"]),Kae=Y3.enum,Vf=Ue("state",[d({state:E("available"),previous:Da,delta:we(m().min(-1).max(1))}).strict(),d({state:E("unavailable"),reason:Y3}).strict()]),cS=d({id:St,createdAt:Gi,completedAt:Gi.nullable()}).strict(),X3=k(["no-selected-run","no-previous-run","scoped-run","partial-run","definition-changed","model-changed","legacy-unknown"]),Gae=X3.enum,IB=Ue("state",[d({state:E("available"),previousRun:cS,mentionCoverage:Vf,citationCoverage:Vf,propertyReach:Vf}).strict(),d({state:E("unavailable"),reason:X3,previousRun:cS.nullable()}).strict()]),OB=d({queryClass:SB,summary:CB,trend:y(_B),comparison:IB.optional(),queries:lS(TB),evidence:lS(EB),competitorAvailability:zB,competitors:y(RB),observedCompetitors:y(DB),breakdown:d({properties:y(rS),groups:y(rS)}).strict()}).strict(),PB=k(["measured","not-measured","partial"]),qB=d({state:PB,activeRevision:m().int().positive().nullable(),measuredRevision:m().int().positive().nullable(),awaitingSweep:N(),pendingAssignmentCount:m().int().nonnegative(),completedAt:Gi.nullable()}).strict(),MB=d({mode:wB,queryClass:F3,scope:pm,market:pm.optional(),provider:s().nullable(),model:s().nullable(),location:Q3,time:d({from:Gi.nullable(),to:Gi.nullable()}).strict(),revision:m().int().positive().nullable(),run:d({id:s().nullable(),explicit:N()}).strict(),provenance:Z3,measurement:qB,availability:Ue("state",[d({state:E("available")}).strict(),d({state:E("unsupported"),reason:E("advanced-v1")}).strict()])}).strict();d({selection:MB,scopeOptions:y(pm),filterOptions:NB,populations:y(OB).min(1)}).strict().superRefine((e,n)=>{const i=e.selection.queryClass==="all"?["branded","non-brand","unknown"]:[e.selection.queryClass],r=e.populations.map(u=>u.queryClass);(r.length!==i.length||r.some((u,h)=>u!==i[h]))&&n.addIssue({code:fe.custom,path:["populations"],message:"Populations must exactly match the selected query class order"});for(const[u,h]of e.populations.entries()){const f=h.comparison;if(f?.state==="available")for(const b of["mentionCoverage","citationCoverage","propertyReach"]){const v=f[b];if(v.state!=="available")continue;const x=["populations",u,"comparison",b],S=h.summary[b].rate,j=v.previous.rate;S===null&&n.addIssue({code:fe.custom,path:x,message:"Available changes require a current rate"}),j===null&&n.addIssue({code:fe.custom,path:[...x,"previous","rate"],message:"Available changes require a previous rate"}),S!==null&&j!==null&&Math.abs(v.delta-(S-j))>Number.EPSILON&&n.addIssue({code:fe.custom,path:[...x,"delta"],message:"Delta must equal current minus previous"}),e.selection.run.id===null&&n.addIssue({code:fe.custom,path:x,message:"Available changes require a selected run"})}}});const J3=k(["retired-scope","retired-market"]),BB=J3.enum,LB=d({reason:J3,kind:u1.exclude(["project"]),key:St}).strict().superRefine((e,n)=>{e.reason===BB["retired-market"]&&e.kind!=="market"&&n.addIssue({code:fe.custom,path:["kind"],message:"retired-market details must name a market"})});function Hae(e){const n=LB.safeParse(e);return n.success?n.data:void 0}function UB(e,n){let i=e;for(const[r,u]of Object.entries(n))i=i.split(`{${r}}`).join(u);return i.trim()}const d1=s().regex(/^[a-f0-9]{64}$/),pa=s().trim().min(1).max(256),Qa=s().trim().min(1).max(4e3),m1=s().datetime(),Xm=s().regex(/^qtw_[a-f0-9]{64}$/),W3=s().regex(/^qtp_[a-f0-9]{64}$/),p1=k(["simple","advanced"]),eA=d({templateId:pa,templateVersion:s().trim().min(1).max(256),template:Qa,bindings:Ke(s().trim().min(1).max(128),s().trim().min(1).max(128)),output:Qa}).strict(),VB=d({source:k(["manual","query-set","template","research","discovery"]),sourceId:pa.nullable(),capturedAt:s().datetime(),template:eA.optional()}).strict().superRefine((e,n)=>{e.source==="template"&&e.template===void 0&&n.addIssue({code:fe.custom,path:["template"],message:"Template provenance is required for a template query."}),e.source!=="template"&&e.template!==void 0&&n.addIssue({code:fe.custom,path:["template"],message:"Only a template query may carry template provenance."})}),$B=Ue("source",[d({source:E("manual"),text:Qa}).strict(),d({source:E("template"),templateId:pa,templateVersion:s().trim().min(1).max(256),template:Qa}).strict(),d({source:E("research"),researchRunQueryId:pa}).strict(),d({source:E("discovery"),discoveryProbeId:pa}).strict()]),h1=d({targetKeys:y(ge).optional(),groupKeys:y(ge).optional(),marketKeys:y(ge).optional()}).strict(),KB=d({providers:y(bt).min(1),models:Ke(bt,s().trim().min(1)),location:s().trim().min(1).nullable()}).strict(),GB=d({input:$B,audience:h1.optional(),contexts:y(KB).min(1).optional(),queryClass:Bo.optional()}).strict(),HB=d({queryId:pa.optional(),queryText:Qa.optional(),audience:h1.optional()}).strict().superRefine((e,n)=>{e.queryId===void 0==(e.queryText===void 0)&&n.addIssue({code:fe.custom,message:"Provide exactly one of queryId or queryText."})}),FB=d({queryId:pa,audience:h1.optional(),text:Qa.optional(),queryClass:Fe([Bo,de()]).optional()}).strict().superRefine((e,n)=>{e.text===void 0&&e.queryClass===void 0&&n.addIssue({code:fe.custom,message:"Provide query text or a classification change."})}),QB=d({additions:y(GB),removals:y(HB),edits:y(FB).optional()}).strict(),ZB=QB.extend({expectedWorkspaceVersion:Xm}).strict();ZB.extend({previewToken:W3,reviewedAt:m1}).strict();const YB=d({stableKey:ge,label:s().trim().min(1)}).strict(),XB=d({stableKey:ge,parentGroupKey:ge.optional(),label:s().trim().min(1),targetKeys:y(ge)}).strict(),JB=d({stableKey:ge,groupKey:ge.optional(),label:s().trim().min(1),usageEdges:y(B0)}).strict(),WB=d({targetKey:ge,groupKeys:y(ge),marketKeys:y(ge),queryClass:Bo.nullable(),classificationSource:k(["frozen","server","operator"]),contexts:y(Vm).min(1)}).strict(),tA=d({queryId:pa,queryText:Qa,normalizedText:Qa,provenance:VB.nullable(),state:k(["tracked","awaiting-sweep"]),lastMeasuredAt:s().datetime().nullable(),assignments:y(WB)}).strict(),eL=d({researchRunId:pa,researchRunQueryId:pa,queryText:Qa,createdAt:s().datetime()}).strict(),tL=d({discoverySessionId:pa,discoveryProbeId:pa,queryText:Qa,createdAt:s().datetime()}).strict();d({mode:p1,workspaceVersion:Xm,active:d({revision:m().int().positive(),compiledChecksum:d1}).strict().nullable(),defaultContexts:y(Vm),targets:y(YB),groups:y(XB),markets:y(JB),scopeOptions:y(pm).optional(),tracked:y(tA),savedSources:d({research:y(eL),discovery:y(tL)}).strict()}).strict();const Id=d({queryId:pa,queryText:Qa,assignmentCount:m().int().nonnegative()}).strict(),nA=d({added:y(Id),removed:y(Id),reused:y(Id),unchanged:y(Id),noOp:N()}).strict(),aA=d({existingNodes:m().int().nonnegative(),existingProviderCalls:m().int().nonnegative(),nextSweepNodes:m().int().nonnegative(),nextSweepProviderCalls:m().int().nonnegative(),addedNodes:m().int().nonnegative(),addedProviderCalls:m().int().nonnegative(),removedNodes:m().int().nonnegative(),removedProviderCalls:m().int().nonnegative()}).strict();d({mode:p1,workspaceVersion:Xm,previewToken:W3,reviewedAt:m1,active:d({revision:m().int().positive(),compiledChecksum:d1}).strict().nullable(),tracked:y(tA),diff:nA,workload:aA}).strict();d({committed:N(),mode:p1,workspaceVersion:Xm,reviewedAt:m1,active:d({revision:m().int().positive(),compiledChecksum:d1}).strict().nullable(),diff:nA,workload:aA}).strict();k(["proposed","alias","shared","unmatched","excluded"]);k(["primary-match","exact-slug-match","excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"]);const nL=k(["invalid-url","unowned-host","duplicate-url","url-cap-reached"]),aL=d({kind:k(["exact","prefix","suffix","contains"]),value:s().trim().min(1)}).strict(),uS=d({host:s().trim().min(1),pathTemplate:s().trim().min(1)}).strict(),f1=d({primary:uS,aliases:y(uS).optional(),excludedSlugSuffixes:y(s().trim().min(1)).optional(),excludedSlugPatterns:y(aL).optional()}).strict();d({sitemapUrl:s().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:f1,maxUrls:m().int().positive().max(1e4).optional()}).strict();const $f=d({url:s(),canonicalUrl:s().nullable(),classification:k(["shared","unmatched","excluded"]),reason:k(["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"})}),iL=d({classification:E("proposed"),reason:E("primary-match"),stableKey:bn,slug:s().trim().min(1),label:s().trim().min(1),primaryUrl:s().url(),aliasCoverageUrls:y(s().url())}).strict(),sL=d({classification:E("alias"),reason:E("exact-slug-match"),slug:s().trim().min(1),url:s().url(),targetStableKey:bn}).strict(),oL=d({kind:nL,url:s(),canonicalUrl:s().nullable(),duplicateOf:s().optional()}).strict();d({proposed:y(iL),aliases:y(sL),shared:y($f),unmatched:y($f),excluded:y($f),diagnostics:y(oL)}).strict().superRefine((e,n)=>{const i=[["shared",["shared"]],["unmatched",["unmatched"]],["excluded",["excluded"]]];for(const[r,u]of i)for(const h of e[r])u.includes(h.classification)||n.addIssue({code:"custom",path:[r],message:"Discovery item is in the wrong result bucket"})});const g1=k(["assigned","sibling","ownedUnmapped","external","ambiguous","invalid"]),iA=k(["baseline","target"]),sA=k(["incomplete","evidence-incomplete","identity-ambiguous","no-population","aliasless","no-competitors","no-project-aliases"]),zo=Fe([d({numerator:m().int().nonnegative(),denominator:m().int().positive(),rate:we(m().min(0).max(1)),unattributed:m().int().positive().optional(),unchecked:m().int().positive().optional()}).strict(),d({numerator:de(),denominator:de(),rate:de(),reason:sA}).strict()]).superRefine((e,n)=>{e.numerator!==null&&e.numerator>e.denominator&&n.addIssue({code:"custom",path:["numerator"],message:"Rate numerator cannot exceed denominator"}),e.numerator!==null&&e.unattributed!==void 0&&e.unchecked!==void 0&&n.addIssue({code:"custom",path:["unchecked"],message:"A rate reads one signal: unattributed (mention) and unchecked (citation) cannot share it"})}),rL=s().trim().min(1).overwrite(e=>e.toLocaleLowerCase("en")),lL=d({executionId:s().trim().min(1),queryText:s().trim().min(1),provider:rL,context:Jt.nullable(),requestedModel:s().trim().min(1).optional()}).strict();d({schemaVersion:E(1),expectedSlots:y(lL)}).strict().superRefine((e,n)=>{const i=new Set;for(const[r,u]of e.expectedSlots.entries()){const h=[u.executionId,u.provider].join("\0");i.has(h)&&n.addIssue({code:"custom",path:["expectedSlots",r],message:"Duplicate expected provider slot"}),i.add(h)}});const Jm=d({executed:m().int().nonnegative(),expected:m().int().nonnegative(),complete:N(),sourceComplete:N(),sourceCompleteObservations:m().int().nonnegative(),answerComplete:N()}).strict(),dS=Fe([d({domain:s().trim().min(1),own:N(),presentIn:m().int().nonnegative(),of:m().int().positive()}).strict(),d({domain:s().trim().min(1),own:N(),presentIn:de(),of:de(),reason:sA}).strict()]),cL=d({domains:y(dS),providers:y(d({provider:bt,domains:y(dS)}).strict())}).strict(),uL=d({provider:bt,completeness:Jm,answerCoverage:zo}).strict(),dL=d({id:s().trim().min(1),label:s().trim().min(1),targetIds:y(s().trim().min(1)),completeness:Jm,answerCoverage:zo,targetCoverage:zo,sov:cL,providers:y(uL)}).strict(),mL=d({provider:bt,completeness:Jm,citationCoverage:zo,mentionCoverage:zo}).strict(),pL=d({id:s().trim().min(1),label:s().trim().min(1),completeness:Jm,citationCoverage:zo,mentionCoverage:zo,providers:y(mL)}).strict(),oA=d({observationId:s().trim().min(1),expectedSlotId:s().trim().min(1),executionId:s().trim().min(1),usageEdgeId:s().trim().min(1),usageEdgeType:iA,provider:bt,queryText:s().trim().min(1),location:s().nullable(),sourceUrl:s(),bridged:N(),historical:N(),evidenceComplete:N(),classification:g1,normalizedUrl:s().nullable(),matchedTargetIds:y(s().trim().min(1)),matchedUrlIds:y(s().trim().min(1))}).strict(),hL=d({sourceUrl:s(),normalizedUrl:s().nullable(),classification:g1,matchedTargetIds:y(s().trim().min(1)),matchedUrlIds:y(s().trim().min(1))}).strict(),fL=d({observationId:s().trim().min(1),expectedSlotId:s().trim().min(1),executionId:s().trim().min(1),usageEdgeId:s().trim().min(1),usageEdgeType:iA,provider:bt,queryText:s().trim().min(1),location:s().nullable(),queryClass:Fe([k(["branded","non-brand"]),de()]),mentioned:N().nullable(),cited:N().nullable(),sources:y(hL),sourceCount:m().int().nonnegative(),sourcesTruncated:N(),bridged:N(),historical:N(),evidenceComplete:N()}).strict(),gL=d({sourceUrl:s(),normalizedUrl:s().nullable(),matchedUrlIds:y(s().trim().min(1))}).strict(),yL=d({observationId:s().trim().min(1),expectedSlotId:s().trim().min(1),executionId:s().trim().min(1),provider:bt,queryText:s().trim().min(1),location:s().nullable(),queryClass:k(["branded","non-brand"]),assignedTargetKeys:y(ge).min(1),sources:y(gL).min(1),sourceCount:m().int().positive(),sourcesTruncated:N(),evidenceComplete:N()}).strict(),bL=d({bridgedObservationIds:y(s()),historicalObservationIds:y(s()),evidenceIncompleteObservationIds:y(s()),ambiguousObservationIds:y(s()),unmatchedObservationIds:y(s())}).strict(),vL=d({id:s().trim().min(1),status:k(["completed","partial"]),createdAt:s().datetime(),startedAt:s().datetime().nullable(),finishedAt:s().datetime().nullable()}).strict();d({revision:m().int().positive(),queryClass:ea.nullable().optional(),run:vL.nullable(),groups:y(dL),targets:y(pL),evidence:y(oA),diagnostics:bL}).strict();d({property:d({targetKey:ge,label:s().min(1)}).strict(),queryClass:ea,measurement:d({state:U0,displayedRunId:s().min(1).optional(),completedAt:s().datetime().optional()}).strict(),evidence:_o(oA).optional(),answers:_o(fL).optional(),otherQueries:_o(yL).optional()}).strict().refine(e=>[e.evidence,e.answers,e.otherQueries].filter(n=>n!==void 0).length===1,{message:"Exactly one of evidence, answers or otherQueries is present, naming the shape that was served."});const y1=k(["queued","running","completed","partial","failed"]);y1.enum;const rA=k(["not_answer_visibility","not_plan_run","scoped_or_probe","status_not_partial","plan_revision_changed","manifest_unreadable","model_not_frozen","model_retired","provider_not_in_plan","provider_nothing_missing","provider_not_configured","too_old","superseded","quota_insufficient"]);rA.enum;d({providers:y(bt).min(1).optional(),dryRun:N().optional()}).strict();const lA=d({id:s(),runId:s(),projectId:s(),status:y1,providers:y(s()),expected:m().int().nonnegative(),filled:m().int().nonnegative(),error:s().nullable(),createdAt:s(),startedAt:s().nullable(),finishedAt:s().nullable()}),xL=d({runId:s(),status:ta,planned:N(),readable:N(),expected:m().int().nonnegative(),executed:m().int().nonnegative(),missing:m().int().nonnegative(),missingByProvider:Ke(s(),m().int().nonnegative()),fillable:N(),refusal:d({code:rA,message:s()}).nullable(),latestFill:lA.nullable()}),wL=k(["queued","already-complete","dry-run"]);d({outcome:wL,completeness:xL,fill:lA.nullable()});const fa=s().trim().min(1),Us=s().trim().min(1),SL=s().trim().min(1),je=m().int().nonnegative(),ru=d({state:U0,displayedRunId:fa.nullable(),planRevision:m().int().positive(),completedAt:s().datetime().nullable()}).strict(),Lo=d({targetKey:ge,label:Us}).strict(),ha={runId:fa.optional(),provider:bt.optional(),location:SL.optional()},Io=s().trim().min(1),Kf=5,kL=10,jL=5,AL=10,NL="tied Properties have both zero mentions and zero citations; ordered by name, not ranked",b1=k(["weakest-properties","strongest-mentions","weakest-mentions","excluded-mentions","markets","observed-names","cited-domains"]);b1.enum;d({runId:ha.runId,groupKey:ge.optional(),queryClass:ea.default("non-brand"),provider:ha.provider,location:ha.location,limit:m().int().positive().max(50).optional(),includeNestedMarkets:N().optional(),compact:N().optional(),list:b1.optional(),cursor:fa.optional(),answers:k(["all","not-mentioned"]).optional()}).strict();const mS=Eg,cA={metro:mS.nullable(),otherMetros:y(mS).min(1).optional(),submarkets:y(Us),queries:je},uA=d({name:Io,answers:je}).strict(),CL=d({name:Io,occurrences:je}).strict(),Wm=d({domain:s().trim().min(1),answers:je}).strict(),_L=Lo.extend({...cA,mentionCoverage:pn,citationCoverage:pn,flags:je,namedInsteadInAnswerText:y(uA).max(Kf).optional(),namedInsteadInAnswerTextTotal:je.optional(),citedDomains:y(Wm).max(Kf).optional(),citedDomainsTotal:je.optional(),recommendedInstead:y(CL).max(Kf).optional().meta({deprecated:!0,description:"Deprecated: read namedInsteadInAnswerText, which carries the same names in the same order. occurrences counts answers, exactly as answers does there."}),recommendedInsteadTotal:je.optional().meta({deprecated:!0,description:"Deprecated: read namedInsteadInAnswerTextTotal, which it always equals."}),recommendedInsteadTruncated:N().optional().meta({deprecated:!0,description:"Deprecated: true when namedInsteadInAnswerTextTotal exceeds the names returned in namedInsteadInAnswerText."})}).strict().superRefine((e,n)=>{e.namedInsteadInAnswerText!==void 0&&(e.namedInsteadInAnswerTextTotal===void 0||e.namedInsteadInAnswerText.length>e.namedInsteadInAnswerTextTotal)&&n.addIssue({code:fe.custom,path:["namedInsteadInAnswerTextTotal"],message:"Total cannot be smaller than the returned names"}),e.citedDomains!==void 0&&(e.citedDomainsTotal===void 0||e.citedDomains.length>e.citedDomainsTotal)&&n.addIssue({code:fe.custom,path:["citedDomainsTotal"],message:"Total cannot be smaller than the returned domains"}),e.recommendedInsteadTotal!==e.namedInsteadInAnswerTextTotal&&n.addIssue({code:fe.custom,path:["recommendedInsteadTotal"],message:"The deprecated total must equal namedInsteadInAnswerTextTotal"}),e.recommendedInstead!==void 0&&(e.recommendedInsteadTotal===void 0||e.recommendedInstead.length>e.recommendedInsteadTotal)&&n.addIssue({code:fe.custom,path:["recommendedInsteadTotal"],message:"Total cannot be smaller than the returned replacements"}),e.recommendedInstead!==void 0&&e.recommendedInsteadTotal!==void 0&&e.recommendedInsteadTruncated!==e.recommendedInstead.length<e.recommendedInsteadTotal&&n.addIssue({code:fe.custom,path:["recommendedInsteadTruncated"],message:"Truncation must agree with the replacement total"})}),TL=d({metro:Us.nullable(),count:m().int().positive()}).strict(),EL=d({count:m().int().min(2),mentionRate:we(),citationRate:we(),note:k([NL,"tied Properties are ordered by name, not ranked"]),byMetro:y(TL).optional(),namedInstead:y(uA).max(AL).optional(),namedInsteadTotal:je.optional()}).strict().superRefine((e,n)=>{e.namedInstead!==void 0&&(e.namedInsteadTotal===void 0||e.namedInstead.length>e.namedInsteadTotal)&&n.addIssue({code:fe.custom,path:["namedInsteadTotal"],message:"Total cannot be smaller than the returned names"})}),RL=d({basis:E("initial-weakest-selection-and-zero-signal-tie").optional(),properties:je,answers:je,domains:y(Wm).max(kL),domainTotal:je,ownDomainAnswers:je.optional()}).strict().superRefine((e,n)=>{e.ownDomainAnswers!==void 0&&e.ownDomainAnswers>e.answers&&n.addIssue({code:fe.custom,path:["ownDomainAnswers"],message:"Own-domain answers cannot exceed the basis"}),e.domains.length>e.domainTotal&&n.addIssue({code:fe.custom,path:["domainTotal"],message:"Total cannot be smaller than the returned domains"}),e.domains.some(i=>i.answers>e.answers)&&n.addIssue({code:fe.custom,path:["domains"],message:"A domain cannot be cited by more answers than the basis holds"})}),DL=d({groupKey:ge,label:Us,parentGroupKey:ge.nullable(),childMarketCount:je,propertyCount:je,propertiesMentioned:Eo,propertiesNeverMentioned:Eo.optional(),mentionCoverage:pn,citationCoverage:pn}).strict(),zL=d({population:E("top-level-markets"),queryClass:ea,totalMarkets:je,eligibleMarketCount:je,excludedMarketCount:je,items:y(d({groupKey:ge,label:Us,propertyCount:je,mentionCoverage:pn.options[0],citationCoverage:pn.options[0]}).strict()).max(jL)}).strict(),pS=Lo.extend({...cA,mentionCoverage:pn.options[0],citationCoverage:pn}).strict(),IL=d({eligiblePropertyCount:je,strongest:y(pS).max(50),weakest:y(pS).max(50),excluded:y(Lo.extend({reason:tu}).strict()),truncated:N(),excludedTotal:je.optional()}).strict();d({portfolio:d({groupKey:ge.nullable(),label:Us.nullable(),measurementScope:Fe([k(["full","spot_check"]),de()])}).strict(),measurement:ru,queryClass:ea,engines:y(bt),metrics:d({propertiesMentioned:Eo,propertiesNeverMentioned:Eo.optional(),mentionCoverage:pn,citationCoverage:pn}).strict(),weakestMarkets:zL.optional().describe("Compact unscoped ranking from actual full top-level metro aggregates before pagination. Each rate uses the complete selected run/filter/class market population; tiedAtWeakest.byMetro counts only zero-signal Properties and never supplies these rates."),weakestProperties:y(_L),tiedAtWeakest:EL.nullable(),weakestAnswerSources:RL.nullable().optional(),mentionRanking:IL,markets:y(DL),totalMarkets:je,marketsTruncated:N(),totalProperties:je,truncated:N(),pageList:b1.optional(),nextCursor:fa.nullable().optional(),detailsOmitted:y(s()).optional(),answerEvidence:d({answers:E("not-mentioned"),populationSize:je,answerCount:je,unknownMentionAnswers:je,observedNames:y(d({name:Io,answerCount:je}).strict()),observedNamesTotal:je,citedDomains:y(Wm),citedDomainsTotal:je}).strict().optional()}).strict().superRefine((e,n)=>{const i=e.detailsOmitted?.includes("weakestProperties.answerEvidence")??!1,r=["namedInsteadInAnswerText","namedInsteadInAnswerTextTotal","citedDomains","citedDomainsTotal","recommendedInstead","recommendedInsteadTotal","recommendedInsteadTruncated"];i||e.weakestProperties.forEach((u,h)=>{for(const f of r)u[f]===void 0&&n.addIssue({code:fe.custom,path:["weakestProperties",h,f],message:"Detailed evidence is required unless explicitly omitted by the compact projection"})}),e.weakestAnswerSources===void 0&&!e.detailsOmitted?.includes("weakestAnswerSources")&&n.addIssue({code:fe.custom,path:["weakestAnswerSources"],message:"Source evidence is required unless explicitly omitted by the compact projection"}),e.marketsTruncated!==e.markets.length<e.totalMarkets&&n.addIssue({code:fe.custom,path:["marketsTruncated"],message:"Market truncation must agree with the market total"})});d({targetKey:ge,runId:ha.runId,provider:ha.provider,location:ha.location,queryClass:ea.optional(),offset:m().int().nonnegative().optional(),limit:m().int().positive().max(100).optional()}).strict();k(["answered","missing"]);const Mg={queryId:fa,text:Us,class:M0,provider:bt,requestedModel:s().nullable(),servedModel:s().nullable(),location:s().nullable()},OL=Ue("status",[d({resultId:fa,...Mg,status:E("answered"),mentioned:N().nullable(),cited:N().nullable(),recommendedInstead:y(Io),answerExcerpt:s().nullable()}).strict(),d({resultId:de(),...Mg,status:E("missing"),mentioned:de(),cited:de(),recommendedInstead:y(Io).length(0),answerExcerpt:de()}).strict()]);d({property:Lo,measurement:ru,queryClass:ea,questions:y(OL),total:je,truncated:N()}).strict();d({targetKey:ge,resultId:fa}).strict();const PL=d({url:fa,classification:g1,matchedTargetKeys:y(ge),assigned:N(),historical:N(),evidenceComplete:N()}).strict().superRefine((e,n)=>{e.assigned!==(e.classification==="assigned")&&n.addIssue({code:fe.custom,path:["assigned"],message:"Assigned must agree with the source attribution classification"})});d({property:Lo,measurement:ru,question:d({resultId:fa,...Mg,status:E("answered")}).strict(),mentioned:N().nullable(),cited:N().nullable(),recommendedInstead:y(Io),answer:s().nullable(),sources:y(PL),captureStatus:Fe([Lm,de()]),retrievalStatus:Fe([j0,de()]),retrievalContract:Fe([A0,de()])}).strict();d({targetKey:ge,runId:ha.runId,provider:ha.provider,location:ha.location,queryClass:ea.optional(),limit:m().int().positive().max(50).optional()}).strict();const qL=Ue("state",[d({state:E("available"),answeredResults:je,targetMissResults:je,recommendationOccurrences:je}).strict(),d({state:E("unavailable"),reason:tu}).strict()]),ML=d({name:Io,occurrences:je,providers:y(bt).max(5),providerTotal:je,providersTruncated:N(),questions:y(Us).max(5),questionTotal:je,questionsTruncated:N()}).strict().superRefine((e,n)=>{(e.providers.length>e.providerTotal||e.questions.length>e.questionTotal)&&n.addIssue({code:fe.custom,message:"Evidence totals cannot be smaller than returned evidence"}),e.providersTruncated!==e.providers.length<e.providerTotal&&n.addIssue({code:fe.custom,path:["providersTruncated"],message:"Provider truncation must agree with its total"}),e.questionsTruncated!==e.questions.length<e.questionTotal&&n.addIssue({code:fe.custom,path:["questionsTruncated"],message:"Question truncation must agree with its total"})}),BL=10;d({property:Lo,measurement:ru,queryClass:ea,basis:qL,competitors:y(ML),total:je,truncated:N(),citedDomains:y(Wm).max(BL).optional(),citedDomainsTotal:je.optional(),citedDomainsAnswers:je.optional()}).strict().superRefine((e,n)=>{const{citedDomains:i,citedDomainsTotal:r,citedDomainsAnswers:u}=e;if(i!==void 0){if(r===void 0||u===void 0){n.addIssue({code:fe.custom,path:["citedDomains"],message:"Cited domains require their total and answer basis"});return}i.length>r&&n.addIssue({code:fe.custom,path:["citedDomainsTotal"],message:"Total cannot be smaller than the returned domains"}),i.some(h=>h.answers>u)&&n.addIssue({code:fe.custom,path:["citedDomains"],message:"A domain cannot be cited by more answers than the basis holds"})}});const dA=k(["magnitude","label"]),LL=2,UL=k(["all","group","property"]);d({runId:ha.runId,scope:UL.default("all"),groupKey:ge.optional(),targetKey:ge.optional(),queryClass:ea.default(gP),provider:ha.provider,location:ha.location,limit:m().int().positive().max(50).optional(),sort:dA.optional()}).strict().superRefine((e,n)=>{e.scope==="all"&&(e.groupKey!==void 0||e.targetKey!==void 0)&&n.addIssue({code:fe.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:fe.custom,path:["groupKey"],message:"Group scope requires groupKey only"}),e.scope==="property"&&(e.targetKey===void 0||e.groupKey!==void 0)&&n.addIssue({code:fe.custom,path:["targetKey"],message:"Property scope requires targetKey only"})});const mA=k(["no_previous_run","execution_identity_changed","incomplete","not_comparable"]),pA=ru.extend({executionIdentity:fa.nullable(),measurementScope:Fe([k(["full","spot_check"]),de()])}).strict();function hA(e,n){if(e.previous.state!=="available"||e.current.state!=="available"){n.addIssue({code:fe.custom,message:"Available deltas require two available metrics"});return}Math.abs(e.delta-(e.current.value-e.previous.value))>Number.EPSILON&&n.addIssue({code:fe.custom,path:["delta"],message:"Delta must equal current minus previous"})}const fA=d({state:E("unavailable"),reason:tu}).strict(),hm=Ue("state",[d({state:E("available"),previous:pn,current:pn,delta:we()}).strict().superRefine(hA),fA]),VL=Ue("state",[d({state:E("available"),previous:Eo,current:Eo,delta:m().int()}).strict().superRefine(hA),fA]),Gf=d({propertiesMentioned:VL,mentionCoverage:hm,citationCoverage:hm}).strict(),$L=d({improved:je,declined:je,mixed:je,withinNoise:je,unchanged:je,notComparable:je,total:je,noiseAnswers:E(LL)}).strict().superRefine((e,n)=>{e.improved+e.declined+e.mixed+e.withinNoise+e.unchanged+e.notComparable!==e.total&&n.addIssue({code:fe.custom,path:["total"],message:"Move buckets must sum to total"})}),KL=Lo.extend({mentionCoverage:hm,citationCoverage:hm,flags:je,mentionAnswersDelta:m().int().nullable().optional(),citationAnswersDelta:m().int().nullable().optional(),denominatorChanged:N().optional(),withinNoise:N().optional(),mentionWithinNoise:N().nullable().optional(),citationWithinNoise:N().nullable().optional()}).strict();d({current:pA,queryClass:ea.optional(),comparison:Ue("state",[d({state:E("available"),previous:d({displayedRunId:fa,planRevision:m().int().positive(),completedAt:s().datetime().nullable(),executionIdentity:fa,measurementScope:k(["full","spot_check"])}).strict(),metrics:Gf,metricsByClass:d({branded:Gf,nonBrand:Gf}).strict().optional(),sort:dA.optional(),distribution:$L.optional(),changedProperties:y(KL),totalProperties:je,truncated:N()}).strict(),d({state:E("unavailable"),reason:mA}).strict()])}).strict().superRefine((e,n)=>{if(e.comparison.state!=="available")return;const{distribution:i}=e.comparison;if(i!==void 0&&i.total-i.unchanged!==e.comparison.totalProperties&&n.addIssue({code:fe.custom,path:["comparison","distribution"],message:"Changed Properties must equal the distribution total less unchanged"}),e.current.displayedRunId===null||e.current.executionIdentity===null){n.addIssue({code:fe.custom,path:["current"],message:"A comparison requires an identified current run"});return}e.comparison.previous.planRevision!==e.current.planRevision&&n.addIssue({code:fe.custom,path:["comparison","previous","planRevision"],message:"Comparisons cannot cross plan revisions"}),e.comparison.previous.executionIdentity!==e.current.executionIdentity&&n.addIssue({code:fe.custom,path:["comparison","previous","executionIdentity"],message:"Comparisons cannot cross execution identities"})});d({runId:ha.runId}).strict();const GL=k(["no_completed_run","incomplete","evidence_incomplete","no_population","not_applicable"]),lu=d({state:E("unavailable"),reason:GL}).strict(),HL=d({state:E("available"),expected:je,executed:je,answered:je,missing:je}).strict(),FL=Ue("state",[HL,lu]).superRefine((e,n)=>{e.state==="available"&&(e.executed+e.missing!==e.expected&&n.addIssue({code:fe.custom,message:"Expected must equal executed plus missing"}),e.answered>e.executed&&n.addIssue({code:fe.custom,path:["answered"],message:"Answered cannot exceed executed"}))}),QL=d({state:E("available"),complete:je,partial:je,failed:je,unsupported:je,notRecorded:je}).strict(),ZL=Ue("state",[QL,lu]),YL=d({state:E("available"),used:je,notUsed:je,unknown:je,notApplicable:je,notRecorded:je}).strict(),XL=Ue("state",[YL,lu]),JL=d({state:E("available"),expectedQuestions:je,answeredQuestions:je,missingQuestions:je}).strict(),WL=Ue("state",[JL,lu]).superRefine((e,n)=>{e.state==="available"&&e.answeredQuestions+e.missingQuestions!==e.expectedQuestions&&n.addIssue({code:fe.custom,message:"Expected questions must equal answered plus missing"})}),hS=Ue("state",[d({state:E("available"),answered:je,unattributed:je}).strict(),lu]).superRefine((e,n)=>{e.state==="available"&&e.unattributed>e.answered&&n.addIssue({code:fe.custom,path:["unattributed"],message:"Unattributed answers cannot exceed answered"})}),eU=d({status:y1,providers:y(s()),expected:je,filled:je,createdAt:s(),finishedAt:s().nullable()}).strict();d({run:pA,completeness:FL,capture:ZL,retrieval:XL,population:WL,comparison:Ue("state",[d({state:E("available"),previousDisplayedRunId:fa}).strict(),d({state:E("unavailable"),reason:mA}).strict()]),unattributedByClass:d({branded:hS,nonBrand:hS}).strict().optional(),latestFill:eU.nullable().optional()}).strict().superRefine((e,n)=>{if(e.completeness.state!=="available")return;const i=e.completeness.executed;e.capture.state==="available"&&e.capture.complete+e.capture.partial+e.capture.failed+e.capture.unsupported+e.capture.notRecorded!==i&&n.addIssue({code:fe.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!==i&&n.addIssue({code:fe.custom,path:["retrieval"],message:"Retrieval counts must total executed snapshots"})});const Fr=s().regex(/^[a-f0-9]{64}$/),Za=s().trim().min(1).max(256),di=m().int().positive(),fS=d({kind:k(["user","api-key","system"]),id:s().trim().min(1),label:s().trim().min(1)}).strict(),tU=k(["proposed","included","excluded"]),nU=k(["manual","sitemap"]),v1=d({stableKey:ge,label:s().trim().min(1),status:tU,aliases:y(s().trim().min(1)),identityAliases:y(s().trim().min(1)).optional(),urlMatchers:y(s().trim().min(1)),source:nU,discoveredUrl:s().trim().min(1).optional(),discoveryIdentity:s().trim().min(1).optional()}).strict(),ep=d({providers:y(bt).optional(),models:Ke(bt,s().trim().min(1)).optional(),locations:y(s().trim().min(1)).optional()}).strict(),aU=k(["branded","non-brand","unclassified"]),iU=k(["rule","operator"]),gA=d({targetKey:ge,queryId:Za,contextOverride:ep.optional(),executionContexts:y(Vm.extend({executionNodeKey:s().min(1).optional()})).min(1).optional(),queryProvenance:T2.optional(),queryClass:aU,classificationSource:iU}).strict().superRefine((e,n)=>{e.contextOverride!==void 0&&e.executionContexts!==void 0&&n.addIssue({code:"custom",path:["executionContexts"],message:"Use either frozen execution contexts or a context override, not both."})}),tp=_2,yA=d({stableKey:ge,label:s().trim().min(1),parentGroupKey:ge.optional(),targetKeys:y(ge),competitors:y(tp)}).strict(),sU=d({sitemapUrl:s().url(),rule:f1,exclusions:y(s().trim().min(1)),inputChecksum:Fr,reviewedAt:s().datetime().optional()}).strict(),oU=d({providers:y(bt),models:Ke(bt,s().trim().min(1)).optional(),locations:y(s().trim().min(1))}).strict(),bA=E2,rU=d({defaultContext:oU,targets:y(v1),assignments:y(gA),groups:y(yA),reportingScopes:y(bA).optional(),discovery:sU.optional()}).strict(),lU=d({id:s().trim().min(1),projectId:s().trim().min(1),schemaVersion:E(2),baseActiveVersionId:s().trim().min(1).nullable(),baseActiveRevision:di.nullable(),authoring:rU,createdBy:fS,updatedBy:fS,createdAt:s().datetime(),updatedAt:s().datetime()}).strict(),x1=d({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(),cU=d({code:s().trim().min(1),message:s().trim().min(1),path:y(Fe([s(),m().int()]))}).strict(),vA=d({etag:s().trim().min(1),changed:N(),warnings:y(cU),counts:x1}).strict();d({draft:lU.nullable(),etag:s().trim().min(1).nullable()}).strict();_o(v1);_o(gA);_o(yA);d({search:s().optional(),cursor:s().trim().min(1).optional(),limit:m().int().positive().max(L0).optional()}).strict();d({expectedActiveRevision:di.nullable()}).strict();d({sitemapUrl:s().url(),rule:f1,exclusions:y(s().trim().min(1)).optional()}).strict();const uU=d({discoveryIdentity:s().trim().min(1),action:k(["create","rebind","ignore"]),targetKey:ge.optional(),label:s().trim().min(1).optional()}).strict();d({selections:y(uU),selectedTargetKeys:y(ge).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."})});d({target:v1}).strict();d({targetKey:ge,label:s().trim().min(1)}).strict();d({targetKey:ge,mergedKeys:y(ge).min(1)}).strict();d({targetKey:ge,cleanup:E("assignments-and-group-memberships").optional()}).strict();d({targetKey:ge,discoveryIdentity:s().trim().min(1),discoveredUrl:s().url()}).strict();const xA={targetKeys:y(ge).optional(),groupKeys:y(ge).optional()};function wA(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."})}d(xA).strict().superRefine(wA);const dU=d({...xA,queryIds:y(Za).min(1),contextOverride:ep.optional()}).strict().superRefine(wA);Fe([d({targetKey:ge,queryIds:y(Za).min(1),contextOverride:ep.optional()}).strict(),dU]);const mU=d({groupKey:ge,label:s().trim().min(1),memberCount:m().int().positive()}).strict();d({draftEtag:s().trim().min(1),groups:y(mU),resolvedTargetKeys:y(ge),overlapCount:m().int().nonnegative(),assignments:d({requested:m().int().nonnegative(),added:m().int().nonnegative(),alreadyPresent:m().int().nonnegative()}).strict(),execution:d({addedNodes:m().int().nonnegative(),addedProviderCalls:m().int().nonnegative(),fullRunNodes:m().int().nonnegative(),fullRunProviderCalls:m().int().nonnegative()}).strict()}).strict();d({pairs:y(d({targetKey:ge,queryId:Za}).strict()).min(1),contextOverride:ep.optional()}).strict();Fe([d({targetKey:ge,queryId:Za}).strict(),d({targetKeys:y(ge).min(1),queryId:Za}).strict()]);d({targetKey:ge}).strict();d({queryClass:M0,assignments:y(d({targetKey:ge,queryId:Za}).strict()).min(1)}).strict();d({group:d({stableKey:ge,label:s().trim().min(1),parentGroupKey:ge.nullable().optional(),targetKeys:y(ge),competitors:y(tp).optional()}).strict()}).strict();d({market:bA}).strict();d({groupKey:ge}).strict();d({groupKey:ge,competitor:tp}).strict();d({expectedActiveRevision:di,groupKey:ge,domain:s().trim().min(1).refine(e=>Wc(e)!==null,"A competitor domain must be a valid hostname"),label:s().trim().min(1).optional(),aliases:y(s().trim().min(1)).optional()}).strict();vA.extend({groupKey:ge,competitor:tp,draftCreated:N(),published:d({revision:di,competitorsChanged:E(!1)}).strict()}).strict();d({groupKey:ge,competitorKey:ge}).strict();const fm=d({ruleId:s().trim().min(1),severity:k(["fail","warn"]),message:s().trim().min(1),path:y(Fe([s(),m().int()]))}).strict();Ue("ok",[d({ok:E(!0),compiledChecksum:Fr,checks:y(fm),counts:x1,plan:$m}).strict(),d({ok:E(!1),compiledChecksum:de(),checks:y(fm).min(1)}).strict()]);const gS=d({added:y(s().trim().min(1)),removed:y(s().trim().min(1)),changed:y(s().trim().min(1)),unchanged:y(s().trim().min(1))}).strict(),pU=d({activeRevision:di.nullable(),targets:gS,groups:gS,assignments:d({added:m().int().nonnegative(),removed:m().int().nonnegative(),reclassified:m().int().nonnegative()}).strict(),execution:d({addedNodeKeys:y(s().trim().min(1)),removedNodeKeys:y(s().trim().min(1))}).strict()}).strict();Ue("ok",[d({ok:E(!0),compiledChecksum:Fr,checks:y(fm),counts:x1,plan:$m,diff:pU}).strict(),d({ok:E(!1),compiledChecksum:de(),checks:y(fm).min(1),diff:de()}).strict()]);d({expectedActiveRevision:di.nullable(),expectedCompiledChecksum:Fr}).strict();d({published:N(),active:d({revision:di,checksum:Fr,compiledChecksum:Fr,createdAt:s().datetime(),plan:$m}).strict()}).strict();d({discarded:N()}).strict();d({expectedActiveRevision:di}).strict();d({deactivated:N(),previousRevision:di.nullable()}).strict();const hU=k(["republish_required","setup_in_progress","awaiting_first_run","operational","simple"]),fU=k(["republish_setup","continue_setup","run_measurement","view_measurement","start_setup"]),gU=k(["simple","draft-only","active-v1","active-v2"]);d({state:hU,nextAction:fU,mode:gU,answerVisibilityProviderReady:N(),activeRevision:di.nullable(),activeSchemaVersion:Fe([E(1),E(2)]).nullable(),draft:d({etag:s().trim().min(1),updatedAt:s().datetime()}).strict().nullable()}).strict();const SA=d({id:s().trim().min(1),projectId:s().trim().min(1),name:s().trim().min(1),description:s().nullable(),itemCount:m().int().nonnegative(),createdAt:s().datetime(),updatedAt:s().datetime()}).strict(),yU=d({queryId:Za,queryText:s().min(1),position:m().int().nonnegative()}).strict();SA.extend({items:y(yU)}).strict();d({querySets:y(SA)}).strict();d({name:s().trim().min(1),description:s().nullable().optional(),queryIds:y(Za)}).strict();const bU=d({id:s().trim().min(1),projectId:s().trim().min(1),name:s().trim().min(1),description:s().nullable(),pattern:s().trim().min(1),variables:y(s().trim().min(1)),createdAt:s().datetime(),updatedAt:s().datetime()}).strict();d({templates:y(bU)}).strict();d({name:s().trim().min(1),description:s().nullable().optional(),pattern:s().trim().min(1),variables:y(s().trim().min(1))}).strict();d({bindings:y(Ke(s().trim().min(1),s().trim().min(1))).min(1),querySetId:s().trim().min(1).optional()}).strict();d({created:y(d({queryId:Za,queryText:s().min(1)}).strict()),existing:y(d({queryId:Za,queryText:s().min(1)}).strict())}).strict();const gm=s().regex(/^[a-f0-9]{64}$/),np=m().int().positive();d({stableKey:ge,kind:k(["target","group"]),retiredAt:s().datetime().nullable()}).strict();d({csv:s()}).strict();k(["matched","ambiguous","unmatched","invalid","duplicate","proposed","excluded"]);const vU=k(["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"]),Bg=d({dataRow:np,property:s(),group:s(),url:s().nullable(),normalizedProperty:s(),normalizedGroupLabel:s()}).strict(),vc=Bg.extend({reason:vU}),xU=d({source:k(["draft-target","draft-group","persisted-segment","retired-segment","proposed-group"]),stableKey:ge,kind:k(["target","group"]).optional(),retiredAt:s().datetime().nullable().optional(),normalizedGroupLabel:s().optional()}).strict(),wU=d({proposedGroupKey:ge,evidence:y(xU).min(1)}).strict(),SU=Ue("status",[Bg.extend({status:E("matched"),targetKey:ge,groupKey:ge}).strict(),vc.extend({status:E("ambiguous"),candidateTargetKeys:y(ge).min(1).optional(),candidateGroupKeys:y(ge).min(1).optional()}).strict(),vc.extend({status:E("unmatched")}).strict(),vc.extend({status:E("invalid"),groupKeyConflict:wU.optional()}).strict(),Bg.extend({status:E("duplicate"),duplicateOfRow:np,targetKey:ge,groupKey:ge}).strict(),vc.extend({status:E("proposed"),targetKey:ge}).strict(),vc.extend({status:E("excluded"),targetKey:ge}).strict()]),kU=d({normalizedGroupLabel:s(),groupKey:ge,label:s().trim().min(1),action:k(["create","extend"]),matchedRows:y(np),targetKeys:y(ge),addedTargetKeys:y(ge),unchangedTargetKeys:y(ge)}).strict(),jU=d({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();d({draftEtag:s().trim().min(1),sourceChecksum:gm,previewChecksum:gm,rows:y(SU),groupChanges:y(kU),counts:jU}).strict();d({csv:s(),sourceChecksum:gm,previewChecksum:gm,acceptedRows:y(np).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."})});vA.extend({appliedRows:m().int().nonnegative(),addedMemberships:m().int().nonnegative(),unchangedMemberships:m().int().nonnegative()}).strict();const Co=d({slope:m(),intercept:m(),r2:m(),start:m(),end:m(),n:m(),startIndex:m(),endIndex:m()}),AU=k(["gsc","ga4","gbp"]);d({id:s(),domain:s(),connectionType:AU,propertyId:s().nullable().optional(),sitemapUrl:s().nullable().optional(),scopes:y(s()).default([]),createdAt:s(),updatedAt:s()});d({authUrl:s().url(),redirectUri:s().url()}).strict();const NU=d({date:s(),query:s(),page:s(),country:s().nullable().optional(),device:s().nullable().optional(),clicks:m(),impressions:m(),ctr:we(),position:m()});k(["clicks","impressions","date"]);d({rows:y(NU),totalMatching:m(),truncated:N(),latestAvailableDate:s().nullable()});const CU=d({date:s(),clicks:m(),impressions:m(),ctr:we(),position:m().nullable()}),kA=d({startDate:s().nullable(),endDate:s().nullable(),latestDataDate:s().nullable(),daysSinceLatestData:m().nullable()}),_U=d({clicks:Co.nullable(),impressions:Co.nullable(),ctr:Co.nullable(),position:Co.nullable()}),yS=d({startDate:s(),endDate:s(),clicks:m(),impressions:m(),ctr:we().nullable(),position:m().nullable(),source:k(["property-daily","dimensioned","mixed","empty"])}),TU=d({days:m(),basis:k(["prior-window","split-window"]).optional(),prior:yS,trailing:yS,comparable:N(),change:d({clicks:we().nullable(),impressions:we().nullable(),ctr:we().nullable(),position:we().nullable()})});d({totals:d({clicks:m(),impressions:m(),ctr:we(),position:m().nullable(),positionDays:m(),days:m()}),daily:y(CU),window:kA.optional(),trends:_U.optional(),periodComparison:TU.nullable().optional()});const EU=d({page:s(),clicks:m(),impressions:m(),ctr:we()});d({rows:y(EU),totals:d({clicks:m(),impressions:m(),ctr:we(),days:m(),coveredFrom:s().nullable(),coveredThrough:s().nullable(),complete:N()}).nullable(),totalsSource:E("property-daily"),rankedFrom:s().nullable(),rankedThrough:s().nullable()});const RU=k(["google","page-summed","mixed"]),DU=d({query:s(),clicks:m(),impressions:m(),ctr:we(),position:m(),days:m(),source:RU});d({rows:y(DU),totalMatching:m(),truncated:N(),window:kA.extend({earliestDataDate:s().nullable().optional()})});const Lg=d({id:s(),url:s(),indexingState:s().nullable().optional(),verdict:s().nullable().optional(),coverageState:s().nullable().optional(),pageFetchState:s().nullable().optional(),robotsTxtState:s().nullable().optional(),crawlTime:s().nullable().optional(),lastCrawlResult:s().nullable().optional(),isMobileFriendly:N().nullable().optional(),richResults:y(s()).default([]),referringUrls:y(s()).default([]),inspectedAt:s()});k(["stable","reindexed","deindexed","still-missing","new"]);const zU=d({url:s(),previousState:s().nullable(),currentState:s().nullable(),transitionDate:s()}),IU=d({reason:s(),count:m(),urls:y(Lg).default([])});d({summary:d({total:m(),indexed:m(),notIndexed:m(),deindexed:m(),percentage:ot(),indexedShare:we(m().min(0).max(1)).nullable(),notIndexedShare:we(m().min(0).max(1)).nullable()}),lastInspectedAt:s().nullable(),lastSyncedAt:s().nullable(),indexed:y(Lg).default([]),notIndexed:y(Lg).default([]),deindexed:y(zU).default([]),reasonGroups:y(IU).default([])});d({url:s(),type:k(["URL_UPDATED","URL_DELETED"]),notifiedAt:s()});const OU=d({url:s(),type:k(["URL_UPDATED","URL_DELETED"]),notifiedAt:s(),status:k(["success","error"]),error:s().optional()});d({summary:d({total:m().int().nonnegative(),succeeded:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(OU).default([])});d({date:s(),indexed:m(),notIndexed:m(),unknownPages:m().default(0),verifiedByInspection:m().default(0),derivedFromImpressions:m().default(0),reasonBreakdown:Ke(s(),m()).default({})});const PU=d({siteUrl:s(),permissionLevel:s()});d({sites:y(PU).default([])});const qU=d({type:s(),submitted:s(),indexed:s().optional().describe("Deprecated compatibility field.")}),jA=d({path:s(),parentSitemapUrl:s().optional(),lastSubmitted:s().optional(),isPending:N().optional(),isSitemapsIndex:N().optional(),type:s().optional(),lastDownloaded:s().optional(),warnings:s().optional(),errors:s().optional(),contents:y(qU).optional()});d({sitemaps:y(jA).default([]),summary:d({total:m().int().nonnegative(),indexes:m().int().nonnegative(),files:m().int().nonnegative()}),preferredSubmissionUrls:y(s()).default([])});d({sitemapUrls:y(s().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 MU=d({sitemapUrl:s(),status:k(["accepted","error"]),submittedAt:s().optional(),error:s().optional()});d({summary:d({total:m().int().nonnegative(),accepted:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(MU)});d({sitemaps:y(jA),primarySitemapUrl:s(),run:d({id:s(),projectId:s(),kind:s(),status:s(),trigger:s(),createdAt:s()}).nullable()});const mt=s().trim().min(1),bS=s().regex(/^[a-f0-9]{64}$/i),BU=k(["not-connected","selection-required","connected","stale"]),Od=BU.enum,LU=k(["live","draft"]),AA=LU.enum,Zd=d({accountId:mt.nullable(),containerId:mt.nullable(),workspaceId:mt.nullable(),selectedAt:s().nullable()}).strict(),Hf=d({id:mt,projectId:mt,scopes:y(s()).default([]),selection:Zd,lastValidatedAt:s().nullable(),lastSnapshotAt:s().nullable(),createdAt:s(),updatedAt:s()}).strict(),NA=d({id:mt,path:s(),name:s(),shareData:N().nullable()}).strict(),CA=d({accountId:mt,id:mt,path:s(),name:s(),publicId:s().nullable(),domainName:s().nullable(),usageContexts:y(s())}).strict(),w1=d({accountId:mt,containerId:mt,id:mt,path:s(),name:s(),description:s().nullable(),fingerprint:s().nullable()}).strict(),UU=d({accounts:y(NA),totalAccessible:m().int().nonnegative(),truncated:N(),fetchedAt:s()}).strict();d({accountId:mt,containers:y(CA),totalAccessible:m().int().nonnegative(),truncated:N(),fetchedAt:s()}).strict();d({accountId:mt,containerId:mt,workspaces:y(w1),totalAccessible:m().int().nonnegative(),truncated:N(),fetchedAt:s()}).strict();const VU=d({id:mt,name:s(),type:s(),paused:N(),firingTriggerIds:y(mt),blockingTriggerIds:y(mt),referencedVariableIds:y(mt),parameterKeys:y(s()),fingerprint:s().nullable()}).strict(),$U=d({id:mt,name:s(),type:s(),customEventNames:y(s()),filterKeys:y(s()),autoEventFilterKeys:y(s()),fingerprint:s().nullable()}).strict(),KU=d({id:mt,name:s(),type:s(),dataLayerVariableName:s().nullable(),parameterKeys:y(s()),fingerprint:s().nullable()}).strict(),_A=k(["recognized","unknown"]),vS=_A.enum,GU=k(["literal","variable-ref","absent","unknown"]),ap=GU.enum,HU=s().trim().min(5).max(132).regex(/^\{\{\w[\w ./-]{0,127}\}\}$/),ol=d({source:E(ap.absent),literal:de(),variableRef:de()}).strict(),rl=d({source:E(ap.unknown),literal:de(),variableRef:de()}).strict(),ll=d({source:E(ap["variable-ref"]),literal:de(),variableRef:HU}).strict();function cu(e){return d({source:E(ap.literal),literal:e,variableRef:de()}).strict()}const FU=s().trim().max(23).regex(/^(?:AW-)?\d{1,20}$/i),QU=s().trim().min(1).max(128).regex(/^[\w-]+$/),ZU=s().trim().min(1).max(20).regex(/^(?:0|[1-9]\d{0,11})(?:\.\d{1,6})?$/),YU=s().trim().length(3).regex(/^[a-z]{3}$/i);Ue("source",[cu(s().trim().min(1).max(256)),ll,ol,rl]);const XU=Ue("source",[cu(FU),ll,ol,rl]),JU=Ue("source",[cu(QU),ll,ol,rl]),WU=Ue("source",[cu(ZU),ll,ol,rl]),eV=Ue("source",[ll,ol,rl]),tV=Ue("source",[cu(YU),ll,ol,rl]),TA=k(["all-pages","custom-event","filtered","unknown"]);TA.enum;const xS=d({operator:s().trim().min(1).max(64),value:s().max(2048),negated:N(),ignoreCase:N()}).strict(),nV=d({triggerId:mt,triggerType:s(),eventPredicates:y(xS),hostnamePredicates:y(xS),unsupportedConditionCount:m().int().nonnegative()}).strict(),EA=k(["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"]);EA.enum;const aV=d({tagId:mt,tagType:s(),recognition:_A,recognitionReason:s().nullable(),conversionId:XU,conversionLabel:JU,value:WU,transactionId:eV,currency:tV,triggerStrategy:TA,triggerIds:y(mt),triggerPredicates:y(nV),reviewReasons:y(EA)}).strict().superRefine((e,n)=>{e.recognition===vS.recognized&&e.recognitionReason!==null&&n.addIssue({code:fe.custom,path:["recognitionReason"],message:"Recognized assessments cannot carry an unknown-recognition reason."}),e.recognition===vS.unknown&&!e.recognitionReason&&n.addIssue({code:fe.custom,path:["recognitionReason"],message:"Unknown assessments require a recognition reason."})}),RA=d({accountId:mt,containerId:mt,workspaceId:mt.nullable(),tags:y(VU),triggers:y($U),variables:y(KU),googleAdsTagAssessments:y(aV).default([])}).strict(),iV=d({accountId:mt,containerId:mt,id:mt,path:s(),name:s(),description:s().nullable(),fingerprint:s().nullable(),deleted:N()}).strict(),DA=d({source:E(AA.live),version:iV,graph:RA,fetchedAt:s()}).strict(),zA=d({source:E(AA.draft),workspace:w1,graph:RA,conflictCount:m().int().nonnegative(),fetchedAt:s()}).strict(),sV=d({account:NA,container:CA,workspaces:y(w1),live:DA.nullable(),draft:zA.nullable(),fetchedAt:s()}).strict();Ue("status",[d({connected:E(!1),status:E(Od["not-connected"]),connection:de(),selection:de()}).strict(),d({connected:E(!0),status:E(Od["selection-required"]),connection:Hf,selection:Zd}).strict(),d({connected:E(!0),status:E(Od.connected),connection:Hf,selection:Zd}).strict(),d({connected:E(!0),status:E(Od.stale),connection:Hf,selection:Zd}).strict()]);const IA=k(["accounts","container","live","draft"]),Pd=IA.enum,S1=d({id:mt,projectId:mt,connectionId:mt,runId:mt,kind:IA,accountId:mt.nullable(),containerId:mt.nullable(),workspaceId:mt.nullable(),payloadChecksum:bS,rawPayloadSha256:bS.nullable(),rawPayloadBytes:m().int().nonnegative().nullable(),redactedFieldCount:m().int().nonnegative(),capturedAt:s(),createdAt:s()}).strict(),oV=Ue("kind",[d({kind:E(Pd.accounts),data:UU}).strict(),d({kind:E(Pd.container),data:sV}).strict(),d({kind:E(Pd.live),data:DA}).strict(),d({kind:E(Pd.draft),data:zA}).strict()]),rV=d({metadata:S1,payload:oV}).strict().superRefine((e,n)=>{e.metadata.kind!==e.payload.kind&&n.addIssue({code:fe.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),Jn=s().trim().min(1),lV=s().trim().min(1).refine(e=>Wc(e)!==null,"Expected a hostname or http(s) URL."),k1=k(["configured","statically-consistent","runtime-unverified","observed"]);k1.enum;const OA=k(["pass","fail","unknown"]);OA.enum;const PA=k(["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"]);PA.enum;const qA=d({id:Jn,projectId:Jn,name:s().trim().min(1),eventName:s().trim().min(1),googleAds:d({customerId:Jn,conversionActionId:Jn,conversionId:s().trim().min(1).optional(),conversionLabel:s().trim().min(1).optional(),campaignIds:y(Jn).max(50).default([]),requireBiddableGoal:N().default(!0),requirePrimaryAction:N().default(!0)}).strict(),gtm:d({accountId:Jn,containerId:Jn,tagId:Jn,triggerIds:y(Jn).default([]),variableIds:y(Jn).default([])}).strict(),runtime:d({verificationRequired:N().default(!0),requireTransactionId:N().default(!0),requireValue:N().default(!0),requireCurrency:N().default(!0),productionHosts:y(lV).default([])}).strict(),createdAt:s(),updatedAt:s()}).strict();qA.omit({id:!0,projectId:!0,createdAt:!0,updatedAt:!0});const MA=k(["not-run","consistent","inconsistent"]);MA.enum;const BA=k(["not-run","not-observed","observed"]);BA.enum;d({staticCheck:MA,runtimeVerificationRequired:N(),runtimeObservation:BA}).strict();const cV=d({code:PA,subject:s().trim().min(1),outcome:OA,status:k1,evidenceIds:y(Jn).default([])}).strict(),uV=d({contract:qA,status:k1,findings:y(cV),evaluatedAt:s()}).strict(),wS=d({id:Jn,name:s(),detail:s(),active:N()});d({googleAds:d({customerId:Jn.nullable(),syncedAt:s().nullable(),conversionActions:y(wS)}),gtm:d({containerId:Jn.nullable(),syncedAt:s().nullable(),tags:y(wS)})});const Dc=s().trim().min(1);function SS(e){const n=e.trim();return/^\d{10}$/.test(n)?n:/^\d{3}-\d{3}-\d{4}$/.test(n)?n.replaceAll("-",""):null}const dV=/^[\w-]+$/;function j1(e){const n=e.trim();return dV.test(n)?n:null}function mV(e){const n=e.trim();return/^accounts\/([\w-]+)$/.exec(n)?.[1]??j1(n)}function pV(e,n){const i=e.trim(),r=/^accounts\/([\w-]+)\/containers\/([\w-]+)$/.exec(i);return r?r[1]===n?r[2]:null:j1(i)}function hV(e,n,i){const r=e.trim(),u=/^accounts\/([\w-]+)\/containers\/([\w-]+)\/workspaces\/([\w-]+)$/.exec(r);return u?u[1]===n&&u[2]===i?u[3]:null:j1(r)}function fV(e){const n=SS(e.customerId);if(!n)return null;if(e.loginCustomerId===null)return{loginCustomerId:null,customerId:n};if(e.loginCustomerId===void 0)return{customerId:n};const i=SS(e.loginCustomerId);return i?{loginCustomerId:i,customerId:n}:null}function gV(e){const n=mV(e.accountId);if(!n)return null;const i=pV(e.containerId,n);if(!i)return null;if(e.workspaceId===void 0)return{accountId:n,containerId:i};const r=hV(e.workspaceId,n,i);return r?{accountId:n,containerId:i,workspaceId:r}:null}const ip=k(["google-ads","gtm"]);ip.enum;d({provider:ip,publicUrl:s().url().optional(),developerToken:s().trim().min(1).max(512).optional()}).strict();d({provider:ip,authorizationUrl:s().url(),redirectUri:s().url(),expiresAt:s().nullable()}).strict();d({loginCustomerId:Dc.nullable().optional(),customerId:Dc}).strict().superRefine((e,n)=>{fV(e)||n.addIssue({code:fe.custom,message:"Expected ten-digit Google Ads customer IDs, with optional 3-3-4 display hyphens."})});d({accountId:Dc,containerId:Dc,workspaceId:Dc.optional()}).strict().superRefine((e,n)=>{gV(e)||n.addIssue({code:fe.custom,message:"GTM resource paths must match the selected account and container."})});d({provider:ip,disconnected:N()}).strict();const LA=100;d({snapshots:y(O0).max(LA),nextCursor:s().nullable(),total:m().int().nonnegative()}).strict();d({snapshot:Q9}).strict();d({snapshots:y(S1).max(LA),nextCursor:s().nullable(),total:m().int().nonnegative()}).strict();d({snapshot:rV}).strict();d({assessment:uV,googleAdsSnapshot:O0.nullable(),gtmSnapshot:S1.nullable()}).strict();function yV(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}d({id:s(),domain:s(),siteUrl:s().nullable().optional(),createdAt:s(),updatedAt:s()});const Ff=d({id:s(),url:s(),httpCode:m().nullable().optional(),inIndex:N().nullable().optional(),lastCrawledDate:s().nullable().optional(),inIndexDate:s().nullable().optional(),inspectedAt:s(),documentSize:m().nullable().optional(),anchorCount:m().nullable().optional(),discoveryDate:s().nullable().optional()});d({summary:d({total:m(),indexed:m(),notIndexed:m(),unknown:m().optional(),percentage:ot()}),lastInspectedAt:s().nullable(),indexed:y(Ff).default([]),notIndexed:y(Ff).default([]),unknown:y(Ff).default([]).optional()});d({query:s(),impressions:m(),clicks:m(),ctr:we(),averagePosition:m()});d({date:s(),indexed:m(),notIndexed:m(),unknown:m()});const bV=d({url:s(),status:k(["success","error"]),submittedAt:s(),error:s().optional()});d({summary:d({total:m().int().nonnegative(),succeeded:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(bV).default([])});const UA=d({url:s(),verified:N()});d({sites:y(UA).default([])});d({connected:N(),domain:s(),siteUrl:s().nullable(),createdAt:s().nullable(),updatedAt:s().nullable()});d({connected:N(),domain:s(),siteUrl:s().nullable(),availableSites:y(UA).default([])});d({siteUrl:s()});const vV=d({name:s(),alive:N(),lastUsed:s().nullable()});d({connected:N(),endpoint:s(),version:s().optional(),browserVersion:s().optional(),targets:y(vV).default([])});const Uo=k(["live","staging"]);d({projectName:s(),url:s(),stagingUrl:s().optional(),username:s(),defaultEnv:Uo,createdAt:s(),updatedAt:s()});const kS=d({url:s(),reachable:N(),pageCount:m().nullable().optional(),version:s().nullable().optional(),error:s().nullable().optional(),plugins:y(s()).optional(),authenticatedUser:d({id:m(),slug:s()}).nullable().optional()});d({connected:N(),projectName:s(),defaultEnv:Uo,live:kS.nullable(),staging:kS.nullable(),adminUrl:s().nullable().optional()});const VA=d({id:m(),slug:s(),title:s(),status:s(),modifiedAt:s().nullable().optional(),link:s().nullable().optional()});d({env:Uo,pages:y(VA)});const $A=d({title:s().nullable(),description:s().nullable(),noindex:N().nullable(),writable:N().default(!1),writeTargets:y(s()).default([])}),xV=d({type:s(),json:Ke(s(),kn())}),wV=VA.extend({env:Uo,content:s(),seo:$A,schemaBlocks:y(xV).default([])}),jS=wV.extend({contentHash:s(),contentSnippet:s()}),KA=d({manualRequired:E(!0),targetUrl:s(),adminUrl:s().nullable().optional(),content:s(),nextSteps:y(s()).default([])}),SV=d({slug:s(),severity:k(["high","medium","low"]),code:k(["noindex","missing-seo-title","missing-meta-description","missing-schema","thin-content"]),message:s()});d({slug:s(),title:s(),status:s(),wordCount:m(),seo:$A,schemaPresent:N(),issues:y(SV).default([])});const kV=d({slug:s(),status:k(["applied","skipped","manual"]),error:s().optional(),manualAssist:KA.optional()});d({env:Uo,strategy:k(["plugin","manual"]),results:y(kV)});const jV=d({slug:s(),status:k(["deployed","stripped","skipped","failed"]),schemasInjected:y(s()).optional(),manualAssist:KA.optional(),error:s().optional()});d({env:Uo,results:y(jV)});const AV=d({slug:s(),title:s(),canonrySchemas:y(s()),thirdPartySchemas:y(s()),hasCanonrySchema:N()});d({env:Uo,pages:y(AV)});const NV=d({name:s(),status:k(["completed","skipped","failed"]),summary:s().optional(),error:s().optional()});d({projectName:s(),steps:y(NV)});d({slug:s(),live:jS,staging:jS,hasDifferences:N(),differences:d({title:N(),slug:N(),content:N(),seoTitle:N(),seoDescription:N(),noindex:N(),schema:N()})});const CV=y2.shape.searchUnit.unwrap().enum;CV.query;const GA=d({name:s(),displayName:s().optional(),keyUrl:s().optional(),modelHint:s().optional(),model:s().optional(),defaultModel:s().optional(),configured:N(),quota:sO.optional(),vertexConfigured:N().optional()});d({configPath:s().min(1).max(4096).optional(),databasePath:s().min(1).max(4096).optional()}).strict().refine(e=>e.configPath===void 0==(e.databasePath===void 0),"configPath and databasePath must be supplied together");const _V=k(["install-identity-mismatch"]);_V.enum;d({reloaded:E(!0),providers:y(GA)});const TV=d({name:s(),displayName:s(),mode:k(["api","browser"]),modelConfigurable:N(),defaultModel:s(),knownModels:y(d({id:s(),displayName:s(),tier:k(["flagship","standard","fast","economy"])})).default([]),modelValidationPattern:d({source:s(),flags:s()}),modelValidationHint:s()}),AS=d({configured:N()});d({providers:y(GA).default([]),providerCatalog:y(TV).default([]),google:AS,bing:AS});const HA=k(["gsc","ga","gbp","bing","ads","google-ads","gtm","traffic"]);HA.enum;const A1=k(["ok","failing","stale","never-synced"]);A1.enum;const Gc=s().datetime({offset:!0}),EV=s().regex(/^\d{4}-\d{2}-\d{2}$/),RV=d({integration:HA,label:s(),runKind:No,sourceId:s().nullable(),state:A1,lastSuccessAt:Gc.nullable(),latestRunAt:Gc.nullable(),latestRunId:s().nullable(),latestStatus:ta.nullable(),latestTrigger:Km.nullable(),consecutiveFailures:m().int().nonnegative(),latestError:s().max(300).nullable(),dataThrough:EV.nullable(),dataAgeDays:m().int().nonnegative().nullable(),doctorChecks:y(s())}),DV=d({status:k(["ok","warn","fail"]),code:s(),summary:s(),checkedAt:Gc,notifiedAt:Gc.nullable()}),zV=d({project:s(),displayName:s(),state:k([...A1.options,"warning"]),health:DV.nullable(),integrations:y(RV)});d({generatedAt:Gc,summary:d({projects:m().int().nonnegative(),ok:m().int().nonnegative(),failing:m().int().nonnegative(),warning:m().int().nonnegative().optional(),stale:m().int().nonnegative(),neverSynced:m().int().nonnegative()}),projects:y(zV)});const IV=k(["recorded","errored","expired","canceled","parse_failed","duplicate"]);IV.enum;const OV=k(["not_plan_run","scoped_run","probe_run","batch_unavailable","model_not_frozen"]);OV.enum;Ow.standard,Ow.batch;const FA=k(["all","api","browser"]);FA.enum;const PV=k(["yes","no","unknown","not-mentioned"]),NS=y(s().min(1)),CS=d({companyName:s().min(1),domain:s().min(1),queries:NS.optional(),phrases:NS.optional(),competitors:y(s().min(1)).optional(),providers:y(s().trim().min(1)).min(1).optional().describe("Configured provider names to use for both answers and analysis. Omit to use all providers matching providerMode."),providerMode:FA.optional().describe("Filter providers by transport; defaults to all. Browser-only selection requires manual queries and uses no API provider for analysis.")}).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"]})});CS.safeExtend({competitors:CS.shape.competitors.default([])});const qV=d({name:s(),count:m().int().nonnegative()}),MV=d({id:s(),name:s(),weight:m(),score:m(),findings:y(d({type:s(),message:s()})).default([]),recommendations:y(s()).default([])}),BV=d({url:s(),finalUrl:s(),auditedAt:s(),overallScore:m(),summary:s(),factors:y(MV).default([])}),LV=d({industry:s(),summary:s(),services:y(s()).default([]),categoryTerms:y(s()).default([])}),UV=d({provider:s(),displayName:s(),model:s().nullable().optional(),mentioned:N(),cited:N(),describedAccurately:PV,accuracyNotes:s().nullable().optional(),incorrectClaims:y(s()).default([]),recommendedCompetitors:y(s()).default([]),citedDomains:y(s()).default([]),groundingSources:y(Gm).default([]),searchQueries:y(s()).default([]),answerText:s(),error:s().nullable().optional()}),VV=d({query:s(),providerResults:y(UV).default([])}),$V=d({totalQueries:m().int().nonnegative(),totalProviders:m().int().nonnegative(),totalComparisons:m().int().nonnegative(),mentionCount:m().int().nonnegative(),citationCount:m().int().nonnegative(),topCompetitors:y(qV).default([]),visibilityGap:s(),whatThisMeans:y(s()).default([]),recommendedActions:y(s()).default([])});d({companyName:s(),domain:s(),homepageUrl:s(),generatedAt:s(),queries:y(s()).default([]),competitors:y(s()).default([]),profile:LV,audit:BV,queryResults:y(VV).default([]),summary:$V});k(["json","csv"]);const KV=d({runId:s(),runKind:E("answer-visibility"),runStatus:ta,runTrigger:Km,runCreatedAt:s(),runStartedAt:s().nullable(),runFinishedAt:s().nullable(),snapshotId:s(),snapshotCreatedAt:s(),queryId:s().nullable(),query:s().nullable(),provider:s(),model:s().nullable(),location:s().nullable(),citationState:Ki,cited:N(),answerMentioned:N().nullable(),mentionState:Fe([Vc,de()]),citedDomains:y(s()),citedUrls:y(s()).nullable(),captureStatus:Fe([Lm,de()]),sourceCount:m().int().nonnegative().nullable(),resolvedCount:m().int().nonnegative().nullable(),captureVersion:m().int().positive().nullable(),competitorOverlap:y(s()),recommendedCompetitors:y(s()),answerText:s().nullable(),groundingSources:y(Gm),searchQueries:y(s())}),GV=d({since:s().nullable(),until:s().nullable(),includeProbes:N()});d({schemaVersion:E("canonry.results-export/v1"),generatedAt:s(),project:d({id:s(),name:s(),displayName:s(),canonicalDomain:s(),country:s(),language:s()}),filters:GV,recordCount:m().int().nonnegative(),records:y(KV)});d({runIds:y(s().trim().min(1)).max(100).default([]),researchRunIds:y(s().trim().min(1)).max(100).default([]),confirm:N().default(!1)}).strict().superRefine((e,n)=>{e.runIds.length+e.researchRunIds.length===0&&n.addIssue({code:"custom",message:"Select at least one saved run."}),(new Set(e.runIds).size!==e.runIds.length||new Set(e.researchRunIds).size!==e.researchRunIds.length)&&n.addIssue({code:"custom",message:"Run IDs must be unique."})});d({dryRun:N(),runIds:y(s()),researchRunIds:y(s()),querySnapshots:m().int().nonnegative(),researchQueries:m().int().nonnegative(),insights:m().int().nonnegative(),healthSnapshots:m().int().nonnegative()});const uu=k(["organic","paid"]);uu.enum;d({id:s(),projectId:s(),propertyId:s(),clientEmail:s(),connected:N(),createdAt:s(),updatedAt:s()});d({date:s(),landingPage:s(),sessions:m(),organicSessions:m(),users:m()});const N1=k(["session","first_user","manual_utm"]),HV=d({source:s(),medium:s(),trafficClass:uu,sessions:m(),users:m().optional(),sourceDimension:N1,share:we()}),FV=d({source:s(),medium:s(),trafficClass:uu,sourceDimension:N1,landingPage:s(),sessions:m(),users:m().optional()}),QV=d({source:s(),medium:s(),sessions:m(),users:m().optional(),channelGroup:s(),share:we()}),xc=d({sessions:m(),sharePct:ot(),sharePctDisplay:s()}),ZV=d({organic:xc,social:xc,direct:xc,ai:xc,other:xc}),YV=d({totalSessions:m(),totalOrganicSessions:m(),totalDirectSessions:m(),totalUsers:m().nullable(),topPages:y(d({landingPage:s(),sessions:m(),organicSessions:m(),directSessions:m(),users:m(),organicShare:we().nullable()})),aiReferrals:y(HV),aiReferralLandingPages:y(FV),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(QV),socialSessions:m(),socialUsers:m().optional(),channelBreakdown:ZV,organicSharePct:ot(),aiSharePct:ot(),aiSharePctBySession:ot(),paidAiSharePct:ot(),paidAiSharePctBySession:ot(),organicAiSharePct:ot(),organicAiSharePctBySession:ot(),directSharePct:ot(),socialSharePct:ot(),organicSharePctDisplay:s(),aiSharePctDisplay:s(),aiSharePctBySessionDisplay:s(),paidAiSharePctDisplay:s(),paidAiSharePctBySessionDisplay:s(),organicAiSharePctDisplay:s(),organicAiSharePctBySessionDisplay:s(),directSharePctDisplay:s(),socialSharePctDisplay:s(),otherSessions:m(),otherSharePct:ot(),otherSharePctDisplay:s(),lastSyncedAt:s().nullable()});d({connected:N(),propertyId:s().nullable(),clientEmail:s().nullable(),authMethod:k(["service-account","oauth"]).nullable(),lastSyncedAt:s().nullable(),createdAt:s().nullable().optional(),updatedAt:s().nullable().optional()});const XV=d({propertyId:s(),displayName:s(),accountName:s()});d({properties:y(XV)});const C1=k(tl.gaSearchLanding),Fae=C1.options,Qae="28d",JV="(empty)";function Zae(e){return e===""?JV:e}const Yae=1e3,WV=k(["never-synced","ready","unavailable","error"]),QA=d({organicGoogleSearchClicks:m().int().nonnegative(),organicGoogleSearchImpressions:m().int().nonnegative(),organicGoogleSearchClickThroughRate:we(m().min(0).max(1)).nullable(),organicGoogleSearchAveragePosition:m().nonnegative().nullable(),activeUsers:m().int().nonnegative()}),e$=QA.extend({landingPage:s()});d({source:E("ga4-search-console-link"),status:WV,error:s().nullable(),syncedAt:s().datetime().nullable(),attemptedAt:s().datetime().nullable(),window:C1,windowStart:Is().nullable(),windowEnd:Is().nullable(),windowDays:m().int().positive().nullable(),timeZone:s().nullable(),subjectToThresholding:N(),dataLossFromOtherRow:N(),total:QA.nullable(),reportRowCount:m().int().nonnegative().nullable(),rowsCapped:N(),totalRows:m().int().nonnegative(),limit:m().int().positive(),offset:m().int().nonnegative(),rows:y(e$)});function Xae(e){return e.organicGoogleSearchClicks>0||e.organicGoogleSearchImpressions>0}const t$=d({status:k(["ready","unavailable","error"]),windows:y(d({window:C1,rowCount:m().int().nonnegative(),reportRowCount:m().int().nonnegative(),rowsCapped:N()})),rowCount:m().int().nonnegative(),error:s().optional()});k(["traffic","ai","social","search-landing"]);d({synced:N(),rowCount:m().int().nonnegative(),aiReferralCount:m().int().nonnegative(),socialReferralCount:m().int().nonnegative(),days:m().int().nonnegative(),requestedDays:m().int().nonnegative(),clamped:N(),syncedAt:s(),measurement:d({acquisition:d({days:m().int().nonnegative(),status:k(["ready","error"]),rowCount:m().int().nonnegative(),error:s().optional()}),leads:d({days:m().int().nonnegative(),status:k(["ready","error","not-configured"]),rowCount:m().int().nonnegative(),attributionScope:k(["landing-page","channel"]).optional(),error:s().optional()}),searchLandingPages:t$.optional()}),syncedComponents:y(s()).optional()});const ZA=k(["new","small-base","percent"]);ZA.enum;const Ug=d({source:s(),sessions7d:m(),sessionsPrev7d:m(),changeSessions:m(),changePct:ot().nullable(),changeBasis:ZA});d({socialSessions7d:m(),socialSessionsPrev7d:m(),trend7dPct:ot().nullable(),socialSessions30d:m(),socialSessionsPrev30d:m(),trend30dPct:ot().nullable(),biggestMover:Ug.nullable()});const wc=d({sessions7d:m(),sessionsPrev7d:m(),trend7dPct:ot().nullable(),sessions30d:m(),sessionsPrev30d:m(),trend30dPct:ot().nullable()});d({organic:wc,ai:wc,social:wc,direct:wc,total:wc,aiBiggestMover:Ug.nullable(),socialBiggestMover:Ug.nullable()});YV.extend({windowStart:s().nullable(),windowEnd:s().nullable(),windowDays:m().nullable(),periodStart:s().nullable(),periodEnd:s().nullable()});d({date:s(),source:s(),medium:s(),trafficClass:uu,landingPage:s(),sessions:m(),users:m(),sourceDimension:N1});const n$=d({source:s(),sessions:m(),paidSessions:m(),organicSessions:m()}),a$=d({date:s(),sessions:m(),paidSessions:m(),organicSessions:m(),bySource:y(n$)});d({days:y(a$),sources:y(s()),totalSessions:m(),totalPaidSessions:m(),totalOrganicSessions:m()});d({date:s(),source:s(),medium:s(),sessions:m(),users:m(),channelGroup:s()});d({date:s(),sessions:m(),organicSessions:m(),users:m(),usersSource:k(["deduplicated","landing-page-sum"])});const ym=k(["date","channelGroup","source","medium","hostName","landingPage"]);ym.enum;d({window:Ls.optional(),startDate:Is().optional(),endDate:Is().optional(),channel:s().optional(),source:s().optional(),medium:s().optional(),hostName:s().optional(),landingPage:s().optional(),pathPrefix:s().optional(),groupBy:s().refine(e=>e.split(",").every(n=>ym.safeParse(n.trim()).success),`groupBy must contain: ${ym.options.join(", ")}`).optional(),limit:m().int().min(1).max(1e3).optional(),offset:m().int().nonnegative().optional()}).strict();const i$=d({date:s().optional(),channelGroup:s().optional(),source:s().optional(),medium:s().optional(),hostName:s().optional(),landingPage:s().optional(),sessions:m().int().nonnegative()});d({source:E("ga4-acquisition"),status:Cg,error:s().nullable(),syncedAt:s().nullable(),scope:d({project:s(),attribution:E("project-only"),unavailableDimensions:y(k(["property","target","market"]))}),window:d({startDate:s().nullable(),endDate:s().nullable(),window:Ls}),coverage:d({earliestDate:s().nullable(),latestDate:s().nullable()}),filters:d({channel:s().nullable(),source:s().nullable(),medium:s().nullable(),hostName:s().nullable(),landingPage:s().nullable(),pathPrefix:s().nullable()}),groupBy:y(ym),channelGroups:y(s()),totalSessions:m().int().nonnegative(),totalRows:m().int().nonnegative(),limit:m().int(),offset:m().int(),rows:y(i$)});d({window:Ls.optional(),minAnswers:Ha().int().min(1).max(1e3).optional(),queryClass:k(["non-brand","branded","all"]).optional(),groupKey:s().trim().min(1).optional(),limit:Ha().int().min(1).max(100).optional()}).strict();const s$=d({name:s().trim().min(1),answerCount:m().int().nonnegative(),pairedAnswers:m().int().nonnegative()}).strict(),YA=k(["below-min-answers","not-named","unpaired-name","own-site","listing-marketplace","non-competitor-surface","claimed-by-alias","shared-host"]);YA.enum;const XA=k(["suggested","tracked","excluded"]);XA.enum;const o$=d({domain:s().trim().min(1),label:s().trim().min(1),names:y(s$).max(5),namingAnswers:m().int().nonnegative(),citingAnswers:m().int().nonnegative(),bothAnswers:m().int().nonnegative(),pairedAnswers:m().int().nonnegative(),namedByOtherNameAnswers:m().int().nonnegative(),sweeps:m().int().nonnegative(),firstSeenAt:s().datetime().nullable(),lastSeenAt:s().datetime().nullable(),surfaceClass:v3,tracked:N(),marketKeys:y(s().trim().min(1)).optional(),status:XA,reason:YA.nullable(),sampleUrls:y(s().url()).max(3)}).strict();d({project:s().trim().min(1),window:Ls,scope:x3,filters:d({queryClass:k(["non-brand","branded","all"]),groupKey:s().nullable(),limit:m().int().positive(),minAnswers:m().int().positive()}).strict(),thresholds:d({minAnswers:m().int().positive()}).strict(),candidates:y(o$),candidatesTotal:m().int().nonnegative(),excludedCounts:Ke(s(),m().int().nonnegative()),unresolvedNames:y(d({name:s().trim().min(1),answerCount:m().int().nonnegative()}).strict()),evidence:d({answeredResults:m().int().nonnegative(),sourceResults:m().int().nonnegative(),excludedProbeResults:m().int().nonnegative(),excludedNonCompletedResults:m().int().nonnegative()}).strict(),runCount:m().int().nonnegative(),runIds:y(s()),countUnits:d({answers:y(s()),distinctNames:y(s()),runs:y(s())}).strict(),truncated:N()}).strict();d({id:s(),projectId:s(),runId:s().nullable(),overallCitedRate:we(),overallMentionRate:we(),totalPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),providerBreakdown:Ke(s(),d({citedRate:we(),mentionRate:we(),cited:m().int().nonnegative(),mentioned:m().int().nonnegative(),total:m().int().nonnegative()})),createdAt:s(),status:k(["ready","no-data"]),reason:E("no-runs-yet").optional()});const r$=d({view:k(["project","visibility","property","queries","site-health"]),unavailableReason:s().trim().min(1).max(512).optional(),selection:mm.optional(),page:d({runId:s().trim().min(1).max(256).optional(),nodeKey:s().trim().min(1).max(2048).optional()}).strict().optional()}).strict().superRefine((e,n)=>{e.page&&e.view!=="site-health"&&n.addIssue({code:"custom",message:"Page context requires Site Health."}),e.selection&&!["visibility","property","queries"].includes(e.view)&&n.addIssue({code:"custom",message:"Measurement selection requires a measurement view."})}),l$=d({maxToolCalls:m().int().min(1).max(100).default(30),timeoutMs:m().int().min(1e3).max(6e5).default(18e4)}).strict(),_1=k(["claude","openai","gemini","zai"]),c$=d({id:_1,label:s(),defaultModel:s(),configured:N(),keySource:k(["config","env"]).nullable()});d({providers:y(c$).default([]),defaultProvider:_1.nullable()});const u$=k(["aero","user","compaction"]);u$.enum;const JA=128;d({key:s().min(1).max(JA),value:s().min(1)});d({key:s().min(1).max(JA)});d({prompt:s().trim().min(1),conversationId:s().min(1).nullable().optional(),provider:_1.optional(),modelId:s().trim().min(1).optional(),scope:k(["all","read-only"]).optional(),profile:k(["default","ads-operator"]).optional(),context:r$.optional(),limits:l$.optional()});const d$=II({role:s(),content:kn().optional()}),WA=d({id:s(),title:s(),active:N(),modelProvider:s(),modelId:s(),createdAt:s(),updatedAt:s()});WA.extend({messages:y(d$),isStreaming:N()});d({conversations:y(WA),currentConversationId:s().nullable(),nextOffset:m().int().nullable()});d({id:uI()}).strict();d({id:s(),status:E("deleted")});const m$=["status","changes","gaps","insights"],p$=k(m$),h$=d({text:s().optional(),tool:d({name:s(),label:s(),arguments:Ke(s(),kn()),result:kn(),durationMs:m().int().nonnegative()})}),f$=d({id:p$,steps:y(h$),answer:s()});d({project:s(),seededAt:s(),starters:y(f$)});d({offset:Ha().int().min(0).default(0),limit:Ha().int().min(1).max(100).default(50)}).strict();const cl=k(["commoncrawl","bing-webmaster"]);cl.enum;const T1=k(["queued","downloading","querying","ready","failed"]);T1.enum;d({id:s(),release:s(),status:T1,phaseDetail:s().nullable().optional(),vertexPath:s().nullable().optional(),edgesPath:s().nullable().optional(),vertexSha256:s().nullable().optional(),edgesSha256:s().nullable().optional(),vertexBytes:m().int().nullable().optional(),edgesBytes:m().int().nullable().optional(),projectsProcessed:m().int().nullable().optional(),domainsDiscovered:m().int().nullable().optional(),downloadStartedAt:s().nullable().optional(),downloadFinishedAt:s().nullable().optional(),queryStartedAt:s().nullable().optional(),queryFinishedAt:s().nullable().optional(),error:s().nullable().optional(),createdAt:s(),updatedAt:s()});const g$=d({linkingDomain:s(),numHosts:m().int(),source:cl}),y$=d({projectId:s(),release:s(),targetDomain:s(),totalLinkingDomains:m().int(),totalHosts:m().int(),top10HostsShare:s(),queriedAt:s(),source:cl,excludedLinkingDomains:m().int().optional(),excludedHosts:m().int().optional()});d({source:cl,summary:y$.nullable(),total:m().int(),rows:y(g$)});d({release:s(),totalLinkingDomains:m().int(),totalHosts:m().int(),top10HostsShare:s(),queriedAt:s(),source:cl});const b$=d({source:cl,connected:N(),hasData:N(),latestRelease:s().nullable(),totalLinkingDomains:m().int(),lastSyncedAt:s().nullable()});d({projectId:s(),targetDomain:s(),sources:y(b$),anyConnected:N(),anyData:N()});d({duckdbInstalled:N(),duckdbVersion:s().nullable().optional(),duckdbSpec:s(),pluginDir:s()});d({installed:N(),version:s(),path:s(),alreadyPresent:N()});d({release:s(),vertexUrl:s(),edgesUrl:s(),vertexBytes:m().int().nullable(),edgesBytes:m().int().nullable(),lastModified:s().nullable()});d({release:s(),syncStatus:T1.nullable(),bytes:m().int(),lastUsedAt:s().nullable()});const v$="jev-1.13.0",Pe=s().trim().min(1).max(256),At=m().int().nonnegative(),eN=Ya(e=>typeof e=="string"?[e]:e,y(Pe).min(1).max(100)),Yd=we(m().min(0).max(1)).nullable(),Hi=k(["favorable","mixed","unfavorable","factual","subject-not-mentioned","wrong-subject","ambiguous-subject","ambiguous-judgment","subject-not-applicable","unsupported-language","missing-source-text","input-too-large","invalid-conclusion-evidence","pending","running","waiting-to-retry","failed","canceled"]);Hi.enum;const E1=k(["disabled","not-measured","processing","partial","complete","failed","canceled","unsupported"]),R1=d({schemaVersion:Fe([E(1),E(2)]),requestedModel:E(v$),verdictVersion:Pe,identityVersion:Pe,evidenceVersion:Pe,segmentationVersion:Pe,preprocessingVersion:Pe,languagePolicy:E("en-only"),comparisonMethodVersion:E("wilson-independent-v1"),confidenceThreshold:m().min(0).max(1).nullable(),questions:d({identity:s(),judgment:s(),stance:s(),conclusion:s(),complaint:s()}).strict()}).strict();function tN(e){if(typeof e!="object"||e===null||!("schemaVersion"in e)||e.schemaVersion!==1)return e;const n=Object.fromEntries(Object.entries(e).filter(([i])=>i!=="themes"));return typeof n.questions=="object"&&n.questions!==null&&(n.questions=Object.fromEntries(Object.entries(n.questions).filter(([i])=>i!=="theme"))),n}Ya(tN,R1);const nN=d({id:Pe,displayName:s(),aliases:y(s()),qualifiedAliases:y(s()).default([]),urls:y(s()),mentionNotApplicable:N()}).strict(),x$=d({queryId:Pe,executionNodeKey:Pe.nullable(),targetId:Pe,propertyId:Pe.nullable(),groupId:Pe.nullable(),marketId:Pe.nullable(),queryClass:k(["branded","non-brand"]),queryText:s().optional(),location:s().nullable()}).strict(),aN=d({queryId:Pe,queryText:s(),queryClass:k(["branded","non-brand"]),provider:Pe,requestedModel:s().nullable(),servedModel:s().nullable(),location:s().nullable(),revision:m().int().nullable(),usageEdges:y(x$),locationContext:Jt.nullable().default(null)}).strict(),Hc=d({id:Pe,text:s().min(1),start:At,end:At}).strict(),iN=d({kind:k(["reported","estimated","unknown"]),inputTokens:At.nullable(),outputTokens:At.nullable()}).strict(),w$=d({sourceSnapshotId:Pe,sourceText:s(),sourceTextHash:Pe,subject:nN,subjectHash:Pe,context:aN,language:s(),definition:R1,sentences:y(Hc)}).strict();Ya(e=>typeof e!="object"||e===null||!("definition"in e)?e:{...e,definition:tN(e.definition)},w$);const Qf={returnedModel:s().nullable(),usage:iN},S$=Ue("kind",[d({kind:E("classified"),...Qf,returnedModel:s(),outcome:Hi,conclusion:y(Hc),complaint:y(Hc).nullable(),confidence:m().min(0).max(1).nullable()}).strict(),d({kind:E("abstained"),...Qf,outcome:Hi,reason:s()}).strict(),d({kind:E("failed"),...Qf,outcome:E("failed"),error:d({code:Pe,message:s(),retryable:N(),retryAfterMs:m().nonnegative().nullable()}).strict()}).strict()]).superRefine((e,n)=>{e.kind==="classified"&&["favorable","mixed","unfavorable"].includes(e.outcome)&&e.conclusion.length===0&&n.addIssue({code:"custom",path:["conclusion"],message:"Judgments require conclusion evidence"})});Ya(e=>typeof e=="object"&&e!==null?Object.fromEntries(Object.entries(e).filter(([n])=>n!=="themes")):e,S$);const ul=d({runId:Pe.optional(),runIds:eN.optional(),revision:Ha().int().positive().optional(),mode:k(["auto","simple","advanced"]).default("auto"),queryClass:k(["branded","non-brand"]).default("branded"),scope:k(["project","property","group","market"]).default("project"),queryId:Pe.optional(),scopeKey:Pe.optional(),marketKey:Pe.optional(),provider:Pe.optional(),model:Pe.optional(),location:s().min(1).optional(),evaluationDefinitionId:Pe.optional(),executionNodeKey:Pe.optional()}).strict();function du(e,n){e.runId&&e.runIds&&n.addIssue({code:"custom",path:["runIds"],message:"Choose runId or runIds, not both."}),e.runIds&&new Set(e.runIds).size!==e.runIds.length&&n.addIssue({code:"custom",path:["runIds"],message:"Run IDs must be unique."})}ul.superRefine(du);const k$=k(["assessments","locations"]),j$=25,sN=500;ul.extend({include:Ya(e=>typeof e=="string"?e.split(",").map(n=>n.trim()).filter(Boolean):e,y(k$).max(2)).optional(),queryLimit:Ha().int().min(1).max(sN).default(j$),queryCursor:s().min(1).max(16384).optional()}).superRefine(du);const A$=Ya(e=>{const n=typeof e=="string"?[e]:Array.isArray(e)?e:null;return n?[...new Set(n.flatMap(i=>typeof i=="string"?i.split(",").map(r=>r.trim()).filter(Boolean):[i]))]:e},y(Hi).min(1).max(Hi.options.length));ul.extend({assessmentId:Pe.optional(),outcome:A$.optional(),cursor:s().min(1).max(16384).optional(),limit:Ha().int().min(1).max(100).default(50)}).superRefine(du);ul.extend({fromRunId:Pe.describe("Run ID or previous-rated to select the preceding run with stored ratings in this scope."),toRunId:Pe}).superRefine((e,n)=>{du(e,n),e.runIds&&n.addIssue({code:"custom",path:["runIds"],message:"Comparison requires one explicit run per period."})});const D1=ul.extend({runId:Pe.nullable(),revision:m().int().nullable(),evaluationDefinitionId:Pe.nullable(),mode:k(["simple","advanced"])}),z1=d(Object.fromEntries(Hi.options.map(e=>[e,At]))).strict(),N$=d({selected:At,eligibleAssessments:At,unadmittedAssessments:At,judged:At,distinctSourceAnswers:At,eligibleAnswers:At.optional(),ratedAnswers:At.optional(),ratedAnswerRate:Yd.optional(),subjectNotMentioned:At.nullable().optional().describe("Distinct admitted answers where every assessed subject in the selected scope is absent. Expected for non-brand queries; not missing classification. Null while disabled."),counts:z1,expectedProviderSlots:At,completedProviderSlots:At}).strict(),C$=d({favorableRate:Yd,mixedRate:Yd,unfavorableRate:Yd,favorableDisplay:s(),mixedDisplay:s(),unfavorableDisplay:s(),interval:d({low:m(),high:m()}).strict().nullable(),method:E("wilson-independent-v1"),limitation:s()}).strict(),Qr={state:E1,reason:s().nullable(),provisional:N(),coverage:N$,score:C$},_S=d({...Qr,selection:D1,runIds:y(Pe)}).strict(),TS=d({...Qr,queryClass:E("all"),pooled:E(!0).optional(),runIds:y(Pe)}).strict(),_$=d({configured:N(),branded:_S,nonBrand:_S,headlineQueryClass:E("branded").optional(),pooledOverall:TS.optional(),overall:TS.optional().describe("Deprecated compatibility field. Pooled branded and non-brand assessments; never use as the sentiment headline.")}).strict(),T$=d({assessmentId:Pe.nullable(),sourceSnapshotId:Pe,runId:Pe,subjectId:Pe,subjectLabel:s(),executionNodeKey:Pe.nullable(),provider:Pe,requestedModel:s().nullable(),servedModel:s().nullable(),location:s().nullable(),evaluationDefinitionId:Pe.nullable(),state:E1,outcome:Fe([Hi,de()]),reason:s().nullable()}).strict(),E$=d({...Qr,queryId:Pe,executionNodeKey:Pe.nullable().optional(),queryText:s(),queryClass:k(["branded","non-brand"]),sourceSnapshotIds:y(Pe),assessments:y(T$).default([]),locations:y(d({...Qr,location:s().nullable(),sourceSnapshotIds:y(Pe)}).strict())}).strict(),R$=d({...Qr,dimension:k(["provider","property","market","query"]),key:s(),label:s(),queryClass:k(["branded","non-brand"])}).strict(),Vg=d({...Qr,configured:N(),selection:D1,evaluationDefinition:R1.nullable(),breakdowns:y(R$),queries:y(E$),criticizedProperties:d({total:At,keys:y(s())}).strict().optional(),queryPage:d({total:At,limit:At,nextCursor:s().nullable()}).strict().optional()}).strict();d({enabled:N().optional()}).strict();const D$=d({installEnabled:N(),enabled:N(),ready:N(),readinessReasons:y(s()),model:s(),enablementEpoch:At,completionBoundary:At,evaluationDefinitionId:Pe.nullable(),actions:d({configure:N(),backfill:N()}).strict(),experimental:E(!0),disclosure:s()}).strict(),oN=ul.extend({runIds:eN.optional(),from:s().datetime().optional(),to:s().datetime().optional()}).superRefine(du);d({previewToken:s().min(1).max(65536),idempotencyKey:s().trim().min(1).max(128)}).strict();const z$=d({previewToken:s().nullable(),expiresAt:s().nullable(),selection:oN,evaluationDefinitionId:Pe.nullable(),eligibleAssessments:At,alreadyClassified:At,skipped:y(d({runId:Pe,reason:s(),count:At}).strict()),estimatedInputTokens:At,estimatedCostUsd:m().nonnegative().nullable(),estimateMethod:s()}).strict(),I$=k(["pending","running","waiting-to-retry","complete","partial","failed","canceled"]),O$=d({id:Pe,workItemId:Pe,dispatchedAt:s(),completedAt:s().nullable(),returnedModel:s().nullable(),usage:iN,errorCode:s().nullable()}).strict(),rN=d({id:Pe,projectId:Pe,origin:k(["automatic","backfill"]),state:I$,enablementEpoch:At,evaluationDefinitionId:Pe,selection:oN,createdAt:s(),updatedAt:s(),counts:z1,selected:At,cancellationReason:s().nullable(),attempts:y(O$),attemptCount:At.optional(),nextAttemptCursor:s().nullable().optional()}).strict(),P$=rN.omit({attempts:!0,attemptCount:!0,nextAttemptCursor:!0}).extend({attemptCount:At}).strict(),q$=d({jobs:y(P$)}).strict(),M$=50;d({attemptLimit:Ha().int().min(1).max(200).default(M$),attemptCursor:s().min(1).max(4096).optional()}).strict();const B$=d({assessmentId:Pe,runId:Pe,sourceSnapshotId:Pe,sourceText:s(),sourceTextHash:Pe,subject:nN,subjectHash:Pe,context:aN,evaluationDefinitionId:Pe,outcome:Hi,conclusion:y(Hc),complaint:y(Hc).nullable(),returnedModel:s().nullable(),reason:s().nullable()}).strict(),L$=d({state:E1,selection:D1.extend({assessmentId:Pe.optional(),outcome:y(Hi).optional()}),items:y(B$),nextCursor:s().nullable()}).strict(),U$=d({from:Vg,to:Vg,verdict:k(["improved","declined","no-clear-change"]).nullable(),favorableRateDelta:m().nullable(),refusalReasons:y(s()),commonUnits:At,excludedFrom:At,excludedTo:At,changedScope:N(),method:E("wilson-independent-v1"),limitation:s()}).strict(),I1=k(["positive","caution","negative","neutral"]),_s=d({label:s(),value:s(),delta:s(),tone:I1,description:s(),tooltip:s().optional(),trend:y(ot()),progress:ot().optional(),providerCoverage:s().optional()}),ES=d({projectMentionSnapshots:m().int().nonnegative(),competitorMentionSnapshots:m().int().nonnegative(),combinedMentionSnapshots:m().int().nonnegative(),perCompetitor:y(d({domain:s(),mentionSnapshots:m().int().nonnegative(),shareOfCompetitiveTotal:ot()})),ranking:y(d({kind:k(["project","competitor"]),domain:s().nullable(),mentionSnapshots:m().int().nonnegative(),share:we(m().min(0).max(1))})),snapshotsWithAnswerText:m().int().nonnegative(),snapshotsTotal:m().int().nonnegative(),score:ot(m().min(0).max(100)).nullable()}),V$=_s.extend({breakdown:ES,scope:k(["non-brand","pooled"]),branded:ES}),Zf=d({gained:m().int().nonnegative(),lost:m().int().nonnegative(),tone:I1,hasPreviousRun:N(),gainedQueries:y(s()).optional(),lostQueries:y(s()).optional()}),$$=d({hasPreviousRun:N(),comparable:N(),querySetChanged:N(),previousRunAt:s().nullable(),currentQueryCount:m().int().nonnegative(),previousQueryCount:m().int().nonnegative(),comparableQueryCount:m().int().nonnegative(),addedQueryCount:m().int().nonnegative(),removedQueryCount:m().int().nonnegative(),addedQueries:y(s()),removedQueries:y(s())}),K$=d({id:s(),projectId:s(),runId:s().nullable(),type:k(["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:k(["critical","high","medium","low"]),title:s(),query:s(),provider:s(),recommendation:d({action:s(),target:s().optional(),reason:s()}).optional(),cause:d({cause:s(),competitorDomain:s().optional(),details:s().optional()}).optional(),dismissed:N(),createdAt:s()}),G$=d({id:s(),projectId:s(),runId:s().nullable(),overallCitedRate:we(),overallMentionRate:we(),totalPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),providerBreakdown:Ke(s(),d({citedRate:we(),mentionRate:we(),cited:m().int().nonnegative(),mentioned:m().int().nonnegative(),total:m().int().nonnegative()})),createdAt:s(),status:k(["ready","no-data"]),reason:E("no-runs-yet").optional()});d({sentiment:_$.optional(),project:nB,latestRun:iq,health:G$.nullable(),topInsights:y(K$),queryClassScope:d({queryClass:E("all"),figures:y(s()),note:s()}).optional(),queryCounts:d({totalQueries:m().int().nonnegative(),citedQueries:m().int().nonnegative(),notCitedQueries:m().int().nonnegative(),citedRate:we(),mentionedQueries:m().int().nonnegative(),notMentionedQueries:m().int().nonnegative(),mentionRate:we()}),providers:y(d({provider:s(),citedRate:we(),cited:m().int().nonnegative(),total:m().int().nonnegative()})),transitions:d({since:s().nullable(),gained:m().int().nonnegative(),lost:m().int().nonnegative(),emerging:m().int().nonnegative()}),scores:d({mention:_s,visibility:_s,mentionShare:V$,gapQueries:_s,mentionGaps:_s,indexCoverage:_s,competitorPressure:_s,runStatus:_s}),movementSummary:Zf,citationMovement:Zf,mentionMovement:Zf,movementComparison:$$,competitors:y(d({id:s(),domain:s(),aliases:y(s()).optional(),autoAliasNames:y(s()).optional(),citationCount:m().int().nonnegative(),totalQueries:m().int().nonnegative(),pressureLabel:k(["None","Low","Moderate","High"]),citedQueries:y(s())})),providerScores:y(d({provider:s(),model:s().nullable(),score:ot(),cited:m().int().nonnegative(),total:m().int().nonnegative(),trend:y(ot()).optional()})),attentionItems:y(d({id:s(),tone:I1,title:s(),detail:s(),actionLabel:s(),href:s()})),runHistory:y(d({runId:s(),createdAt:s(),citedCount:m().int().nonnegative(),totalCount:m().int().nonnegative(),citationRate:ot(),mentionedCount:m().int().nonnegative(),mentionRate:ot(),status:s()})),suggestedQueries:d({rows:y(d({query:s(),impressions:m(),clicks:m(),avgPosition:m(),reason:s()})),totalCandidates:m().int().nonnegative(),skippedAlreadyTracked:m().int().nonnegative()}),dateRangeLabel:s(),contextLabel:s()});k(["snapshot","insight"]);const H$=d({kind:E("snapshot"),id:s(),runId:s(),query:s(),provider:s(),model:s().nullable(),citationState:Ki,matchedField:k(["answerText","citedDomains","citedUrls","searchQueries","query"]),snippet:s(),createdAt:s()}),F$=d({kind:E("insight"),id:s(),runId:s().nullable(),type:k(["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:k(["critical","high","medium","low"]),title:s(),query:s(),provider:s(),matchedField:k(["title","query","recommendation","cause"]),snippet:s(),dismissed:N(),createdAt:s()}),Q$=Ue("kind",[H$,F$]);d({query:s(),totalHits:m().int().nonnegative(),truncated:N(),hits:y(Q$)});const lN=k(["create","expand","refresh","add-schema"]);lN.enum;const cN=k(["gsc","competitor-evidence","both"]);cN.enum;const uN=k(["high","medium","low"]);uN.enum;const Z$=k(["blog-post","comparison","listicle","how-to","guide","glossary"]);Z$.enum;const dN=k(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);dN.enum;const O1=k(["ownable","ceded"]);O1.enum;const Y$=d({url:s(),gscImpressions:m().nonnegative(),gscClicks:m().nonnegative(),gscAvgPosition:m().nonnegative().nullable(),organicSessions:m().nonnegative()}),X$=d({domain:s(),url:s(),title:s(),citationCount:m().int().nonnegative()}),J$=d({demand:m(),competitor:m(),absence:m(),gapSeverity:m()}),W$=d({actionId:s(),state:dN,lastUpdated:s()}),eK=d({targetRef:s(),query:s(),action:lN,ourBestPage:Y$.nullable(),winningCompetitor:X$.nullable(),score:m(),scoreBreakdown:J$,drivers:y(s()),demandSource:cN,actionConfidence:uN,existingAction:W$.nullable(),winnabilityClass:O1,winnability:we(m().min(0).max(1)).nullable()});d({targets:y(eK),contextMetrics:d({totalAiReferralSessions:m().int().nonnegative(),latestRunId:s(),runTimestamp:s()})});const tK=d({targetRef:s(),addressedUrl:s().nullable(),note:s().nullable(),dismissedAt:s()});d({dismissals:y(tK)});d({targetRef:s().min(1),addressedUrl:s().url().optional(),note:s().max(500).optional()});d({targetRef:s(),promptVersion:s(),provider:s(),model:s(),responseText:s(),costMillicents:m().int().nonnegative(),generatedAt:s()});d({provider:s().optional(),model:s().optional(),forceRefresh:N().optional()});const nK=d({targetQuery:s().trim().min(1),winnabilityClass:O1,angle:s().trim().min(1),whyWinnable:s().trim().min(1),schemaHookup:s().trim().min(1),controllableSurfaceRationale:s().trim().min(1)});d({targetRef:s(),promptVersion:s(),provider:s(),model:s(),brief:nK,costMillicents:m().int().nonnegative(),generatedAt:s()});const aK=d({domain:s(),competitorType:ou,hits:m().int().nonnegative(),updatedAt:s()});d({classifications:y(aK)});const iK=d({uri:s(),title:s(),domain:s(),isOurDomain:N(),isCompetitor:N(),citationCount:m().int().nonnegative(),providers:y(bt)}),sK=d({query:s(),groundingSources:y(iK)});d({sources:y(sK),latestRunId:s()});const oK=d({query:s(),competitorDomains:y(s()),competitorCount:m().int().nonnegative(),missRate:we(m().min(0).max(1)),lastSeenInRunId:s()});d({gaps:y(oK),latestRunId:s()});const mN=k(["ok","warn","fail","skipped"]);mN.enum;const P1=k(["global","project"]);P1.enum;const pN=k(["auth","config","providers","integrations","database","schedules","agent"]);pN.enum;const hN=k(["health","silent"]);hN.enum;const rK=s().regex(/^[1-9]\d{3}-(0[1-9]|1[0-2])$/,"Expected YYYY-MM"),lK=d({id:s(),category:pN,scope:P1,title:s(),status:mN,notificationPolicy:hN.optional().describe("Health checks page by default. Silent checks (report advisories and standing advisories) remain visible but never affect health alert state."),code:s().describe('Stable machine-readable code (e.g. "google.token.refresh-failed"). Use this for filtering and remediation logic.'),urgent:N().optional().describe('True when this result is a problem a person has to act on now (the website is down, daily data stopped arriving, a sync keeps failing). Urgent results are what the health.urgent notification event reports. A result set aside under its failing cause (status "skipped", code "<id>.superseded") keeps the flag: the problem is still open.'),summary:s(),remediation:s().nullable().optional().describe('Operator-facing next step. Null when status is "ok" or no specific remediation applies.'),details:Ke(s(),kn()).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.")});d({scope:P1,project:s().nullable().describe('Project name when scope is "project", null otherwise.'),reportMonths:y(rK).optional().describe("Calendar months evaluated by project report readiness checks."),generatedAt:s().describe("ISO-8601 timestamp when this doctor run started."),durationMs:m().int().nonnegative(),summary:d({total:m().int().nonnegative(),ok:m().int().nonnegative(),warn:m().int().nonnegative(),fail:m().int().nonnegative(),skipped:m().int().nonnegative()}),checks:y(lK)});function cK(e){return e.trim().toLowerCase()}const uK=d({provider:s(),citationState:Ki,cited:N(),mentioned:N(),runId:s(),runCreatedAt:s()}),dK=d({queryId:s(),query:s(),providers:y(uK),citedCount:m().int().nonnegative(),mentionedCount:m().int().nonnegative(),totalProviders:m().int().nonnegative()}),mK=d({queryId:s(),query:s(),provider:s(),citingCompetitors:y(s()),runId:s(),runCreatedAt:s()}),pK=d({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:s().nullable(),latestRunAt:s().nullable()});d({summary:pK,byQuery:y(dK),competitorGaps:y(mK),status:k(["ready","no-data"]),reason:k(["no-runs-yet","no-queries"]).optional()});const hK=Fe(i2(tl.organicEvidence).map(e=>E(e))),fK=k(["earliest","middle","prior","latest"]),qr=d({clicks:m().int().nonnegative(),impressions:m().int().nonnegative()}),fN=d({name:fK,startDate:s(),endDate:s()}),gK=fN.extend({totals:qr}),yK=fN.extend({organicSessions:m().int().nonnegative()}),Yf=d({startDate:s(),endDate:s(),observedDays:m().int().nonnegative()}),qd=d({verified:m().int().nonnegative(),claimedUnverified:m().int().nonnegative(),unknownAiLike:m().int().nonnegative()}),RS=d({total:m().int().nonnegative(),paid:m().int().nonnegative(),organic:m().int().nonnegative(),unknown:m().int().nonnegative()});d({contractVersion:E("organic-evidence/v1"),periodDays:hK,asOfDate:s().nullable(),coverage:d({gsc:N(),ga4:N(),server:N(),visibility:N()}),sourceCoverage:d({gsc:Yf.nullable(),ga4:Yf.nullable(),server:Yf.nullable(),visibility:d({completedAt:s(),ageDays:m().nonnegative()}).nullable()}),gsc:d({propertyTotals:qr,namedBrand:qr,namedNonBrand:qr,suppressedOrUnreportedResidual:qr,cohorts:y(gK)}).nullable(),ga4:d({organicSessions:m().int().nonnegative(),cohorts:y(yK)}).nullable(),gaAiReferrals:d({paidSessions:m().int().nonnegative(),organicSessions:m().int().nonnegative()}).nullable(),server:d({crawlerHits:qd,userFetchHits:qd,referralSessions:RS}).nullable(),visibility:d({runId:s(),completedAt:s(),ageDays:m().nonnegative(),answerPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative()}).nullable(),measurement:e9,pages:y(d({path:s(),gsc:qr,ga4OrganicSessions:m().int().nonnegative(),server:d({crawlerHits:qd,userFetchHits:qd,referralSessions:RS})})),findings:y(d({tone:k(["positive","caution","neutral"]),title:s(),detail:s()})),limitations:y(d({code:s(),detail:s()}))});const bK=k(["claude","codex"]);bK.enum;const vK=k(["claude","codex","all"]);vK.enum;const gN=d({content:m().int().nonnegative(),sitemap:m().int().nonnegative(),robots:m().int().nonnegative(),asset:m().int().nonnegative(),other:m().int().nonnegative()}),xK=k(["content","sitemap","robots","asset","other"]),q1=k(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);q1.enum;const wK=k(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);wK.enum;const SK=k(["raw-request","aggregate-bucket"]),kK=SK.enum,jK=k(["observed","provider-aggregated","inferred"]),AK=jK.enum,NK=d({type:s().nullable(),labels:Ke(s(),s())}),CK=d({sourceType:q1,evidenceKind:E(kK["raw-request"]),confidence:E(AK.observed),eventId:s().min(1),observedAt:s().min(1),method:s().nullable(),requestUrl:s().nullable(),host:s().nullable(),path:s().min(1),queryString:s().nullable(),status:m().int().nullable(),userAgent:s().nullable(),remoteIp:s().nullable(),referer:s().nullable(),latencyMs:m().nullable(),requestSizeBytes:m().int().nullable(),responseSizeBytes:m().int().nullable(),providerResource:NK,providerLabels:Ke(s(),s())});d({events:y(CK),rawEntryCount:m().int().nonnegative(),skippedEntryCount:m().int().nonnegative(),nextPageToken:s().optional(),filter:s()});const yN=k(["connected","paused","error","archived"]),Jae=yN.enum,bN=k(["oauth","service-account"]);bN.enum;const vN=k(["verified","claimed_unverified","unknown_ai_like"]),Wae=vN.enum,_K=d({id:s().min(1),source:s().min(1),version:s().min(1)}),xN=d({manifestId:s().min(1),manifest:_K.nullable(),hits:m().int().nonnegative()});d({gcpProjectId:s().min(1),serviceName:s().nullable().optional(),location:s().nullable().optional(),authMode:bN});d({baseUrl:s().url(),username:s().min(1)});const M1=k(["production","preview"]);M1.enum;d({projectId:s().min(1),teamId:s().min(1),environment:M1});const wN=d({id:s(),projectId:s(),sourceType:q1,displayName:s(),status:yN,lastSyncedAt:s().nullable(),lastCursor:s().nullable(),lastError:s().nullable(),skippedThroughAt:s().nullable(),queueBacklogCount:m().int().nonnegative().nullable(),queueBacklogObservedAt:s().nullable(),archivedAt:s().nullable(),config:Ke(s(),kn()),createdAt:s(),updatedAt:s()});d({gcpProjectId:s().min(1),serviceName:s().min(1).optional(),location:s().min(1).optional(),displayName:s().min(1).optional(),keyJson:s().optional()});d({baseUrl:s().url(),username:s().min(1),applicationPassword:s().min(1),displayName:s().min(1).optional()});d({projectId:s().min(1),teamId:s().min(1),token:s().min(1),environment:M1.optional(),displayName:s().min(1).optional()});const TK=k(["direct-push","queue-pull"]),dl=TK.enum,B1=s().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"),SN=d({schemaVersion:E(1),workerVersion:s().min(1),expectedBotListVersion:s().min(1),zoneId:s().nullable()}),EK=SN.extend({deliveryMode:E(dl["direct-push"]),accountId:s().nullable()}),RK=SN.extend({deliveryMode:E(dl["queue-pull"]),accountId:s().min(1),queueId:s().min(1),queueName:B1,retentionSeconds:m().int().min(60).max(1209600)});function kN(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;const n=e;return"deliveryMode"in n?e:{...n,deliveryMode:"direct-push"}}Ya(kN,Ue("deliveryMode",[EK,RK]));const jN=d({displayName:s().min(1).optional(),zoneId:s().min(1).optional()}),DK=jN.extend({deliveryMode:E(dl["direct-push"]),accountId:s().min(1).optional()}),zK=jN.extend({deliveryMode:E(dl["queue-pull"]),accountId:s().min(1),queueId:s().min(1),queueName:B1,retentionSeconds:m().int().min(60).max(1209600),apiToken:s().min(1)});Ya(kN,Ue("deliveryMode",[DK,zK]));const AN=d({sourceId:s().min(1),workerScript:s().min(1),wranglerToml:s().min(1),workerVersion:s().min(1),instructions:s().min(1)}),IK=AN.extend({deliveryMode:E(dl["direct-push"]),activationRequired:N().default(!1)}),OK=AN.extend({deliveryMode:E(dl["queue-pull"]),activationRequired:N().default(!1),accountId:s().min(1),queueId:s().min(1),queueName:B1,retentionSeconds:m().int().min(60).max(1209600)});Ue("deliveryMode",[IK,OK]);const PK=d({eventId:s().min(1),observedAt:s().datetime(),method:s().nullable(),host:s().nullable(),path:s().min(1),queryString:s().nullable(),status:m().int().nullable(),userAgent:s().nullable(),remoteIp:s().nullable(),referer:s().nullable(),cf:d({verifiedBot:N().nullable(),botScore:m().int().nullable(),country:s().nullable(),asn:m().int().nullable(),asOrganization:s().nullable()}).nullable()});d({schemaVersion:E(1),workerVersion:s().min(1),events:y(PK).min(1).max(100)});d({acceptedEvents:m().int(),droppedEvents:m().int(),workerVersionAck:s(),crawlerBucketRows:m().int(),aiUserFetchBucketRows:m().int(),aiReferralBucketRows:m().int(),sampleRows:m().int()});d({sourceId:s(),runId:s(),syncedAt:s(),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:s(),windowEnd:s()});d({days:m().int().positive().optional()});d({advanceToNow:E(!0)});d({sourceId:s(),runId:s(),status:ta,windowStart:s(),windowEnd:s(),daysRequested:m().int().positive(),daysApplied:m().int().positive()});const qK=d({crawlerHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),crawlerInfraHits:m().int().nonnegative(),crawlerSegments:gN,aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralLandedHits:m().int().nonnegative(),aiReferralRedirectedHits:m().int().nonnegative(),sampleCount:m().int().nonnegative()});d({sources:y(wN)});const MK=wN.extend({totals24h:qK,latestRun:d({runId:s(),status:ta,startedAt:s().nullable(),finishedAt:s().nullable(),error:s().nullable()}).nullable()});d({sources:y(MK)});const BK=k(["crawler","ai-user-fetch","ai-referral"]),L1=BK.enum,NN=k(["hour","day"]);NN.enum;const LK=d({bucket:s(),crawlerHits:m().int().nonnegative(),aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralLandedHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),measured:N()}),UK=d({kind:E(L1.crawler),sourceId:s(),tsHour:s(),botId:s(),operator:s(),verificationStatus:s(),verificationManifests:y(xN).optional(),verificationUnattributedHits:m().int().nonnegative().optional(),pathNormalized:s(),pathClass:xK,status:m().int(),hits:m().int().nonnegative()}),VK=d({kind:E(L1["ai-user-fetch"]),sourceId:s(),tsHour:s(),botId:s(),operator:s(),verificationStatus:s(),verificationManifests:y(xN).optional(),verificationUnattributedHits:m().int().nonnegative().optional(),pathNormalized:s(),status:m().int(),hits:m().int().nonnegative()}),$K=d({kind:E(L1["ai-referral"]),sourceId:s(),tsHour:s(),product:s(),operator:s(),sourceDomain:s(),evidenceType:s(),landingPathNormalized:s(),status:m().int(),hits:m().int().nonnegative(),paidHits:m().int().nonnegative(),organicHits:m().int().nonnegative(),unknownHits:m().int().nonnegative()}),KK=Ue("kind",[UK,VK,$K]);d({windowStart:s(),windowEnd:s(),series:d({granularity:NN,points:y(LK),coverageStart:s().nullable(),trends:d({crawlerContentHits:Co.nullable(),aiUserFetchHits:Co.nullable(),aiReferralLandedHits:Co.nullable()})}),totals:d({crawlerHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),crawlerInfraHits:m().int().nonnegative(),crawlerSegments:gN,aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralLandedHits:m().int().nonnegative(),aiReferralRedirectedHits:m().int().nonnegative(),aiReferralPaidHits:m().int().nonnegative(),aiReferralOrganicHits:m().int().nonnegative(),aiReferralUnknownHits:m().int().nonnegative()}),eventRows:d({total:m().int().nonnegative(),returned:m().int().nonnegative(),truncated:N()}),events:y(KK)});const CN=k(["crawler","ai-user-fetch","ai-referral","unknown"]);CN.enum;d({kind:k(["crawler","ai-user-fetch","ai-referral","unknown","all"]).optional(),sourceId:s().min(1).optional(),since:Fe([sm({offset:!0}),Is()],{error:"Expected an ISO timestamp or YYYY-MM-DD date"}).optional(),until:Fe([sm({offset:!0}),Is()],{error:"Expected an ISO timestamp or YYYY-MM-DD date"}).optional(),path:s().optional(),limit:m().int().min(1).max(500).optional(),offset:m().int().nonnegative().optional()}).strict();const DS=d({botId:s().nullish(),operator:s().nullish(),product:s().nullish(),verificationStatus:vN.nullish(),verificationManifest:d({id:s().nullish(),source:s().nullish(),version:s().nullish()}).nullish(),matchedUserAgent:s().nullish()}),GK=d({crawler:DS.extend({purpose:s().nullish()}).nullable().default(null),aiUserFetch:DS.nullable().default(null),aiReferral:d({operator:s().nullish(),product:s().nullish(),sourceDomain:s().nullish(),evidenceType:k(["referer","utm","referer-utm"]).nullish(),trafficClass:uu.nullish()}).nullable().default(null)}),HK=d({id:s(),sourceId:s(),ts:s(),kind:CN,pathNormalized:s(),status:m().int().nullable(),refererHost:s().nullable(),userAgent:s().nullable(),classifier:GK});d({scope:d({project:s(),sourceId:s().nullable(),attribution:E("project-source-only"),unavailableDimensions:y(k(["property","target","market"]))}),windowStart:s(),windowEnd:s(),retentionDays:E(30),sampling:d({complete:E(!1),perSync:E(100),perBackfill:E(500),perPushHour:E(100)}),totalRows:m().int().nonnegative(),limit:m().int(),offset:m().int(),samples:y(HK)});const U1=k(["admin","viewer"]),FK=/^[a-z\d][\w.-]{0,63}$/i,QK=s().regex(FK,"A name may use letters, digits, dots, dashes and underscores, and must start with a letter or digit."),zS=12,ZK=s().min(zS,`A password must be at least ${zS} characters.`),_N=d({id:s(),name:s(),role:U1,createdAt:s(),lastLoginAt:s().nullable()});d({users:y(_N)});d({name:QK,password:ZK,role:U1});d({name:s().min(1),password:s().min(1)});d({authRequired:N(),user:_N.pick({name:!0,role:!0}).nullable()});const TN=k(["queued","running","completed","partial","failed"]),eie=TN.enum,EN=k(["queued","running","completed","failed"]),tie=EN.enum,YK=20,XK=20,$g=50,RN=d({kind:k(["market","property"]),key:ge,expectedPlanRevision:m().int().positive().optional()}).strict(),JK=d({kind:k(["market","property"]),key:ge,label:s().trim().min(1),planRevision:m().int().positive()}).strict(),DN=s().min(1).max(4e3).refine(e=>e.trim().length>0,"Research queries cannot be blank.");function nie(e){const n=new Set;return e.filter(i=>{const r=cK(i);return!r||n.has(r)?!1:(n.add(r),!0)})}function WK(e,n){const i=e?e.kind==="market"?{market:e.label,submarket:e.label}:{property:e.label,propertyBrand:e.label}:{};return n?{...i,location:n.label}:i}function aie(e,n,i){const r=new Set(e.variables),u=[...e.pattern.matchAll(/\{([^{}]+)\}/g)].map(x=>x[1]),h=[...new Set(u.filter(x=>!r.has(x)))];if(h.length)throw wg("The selected research template contains undeclared placeholders: "+h.join(", "));const f=WK(n,i),b=e.variables.filter(x=>f[x]===void 0);if(b.length)throw wg("The selected research template requires unavailable bindings: "+b.join(", "));const v=Object.fromEntries(e.variables.map(x=>[x,f[x]]));return{bindings:v,output:UB(e.pattern,v)}}const zN=d({templateId:s().trim().min(1).max(256),templateVersion:s().trim().min(1).max(256),bindingLocation:Jt.nullable().optional()}).strict();d({queries:y(DN).min(1).max(50),provider:s().trim().min(1).optional(),model:s().trim().min(1).max(200).optional(),location:Jt.nullable().optional(),scope:RN.optional(),template:zN.optional(),idempotencyKey:s().trim().min(1).max(128).optional()}).superRefine((e,n)=>{e.model&&!e.provider&&n.addIssue({code:fe.custom,path:["provider"],message:"provider is required when model is supplied"})});const eG=RN.extend({expectedPlanRevision:m().int().positive()}).strict(),tG=d({queries:y(DN).min(1).max($g),provider:s().trim().min(1),model:s().trim().min(1).max(200),location:Jt.nullable(),scope:eG.optional(),template:zN.optional()}).strict();d({idempotencyKey:s().trim().min(1).max(128),runs:y(tG).min(1).max(XK)}).strict().superRefine((e,n)=>{e.runs.reduce((r,u)=>r+u.queries.length,0)>$g&&n.addIssue({code:fe.custom,path:["runs"],message:`A research batch may contain at most ${$g} concrete queries across all destinations`})});const nG=d({kind:k(["api-key","user"]),id:s(),name:s(),role:U1.nullable(),limited:N().optional()}),IN=d({id:s(),projectId:s(),status:TN,provider:s(),requestedModel:s().nullable(),resolvedModel:s(),location:Jt.nullable(),scope:JK.nullable().optional(),template:eA.nullable().optional(),totalQueries:m().int(),completedQueries:m().int(),failedQueries:m().int(),error:s().nullable(),initiatedBy:nG.nullable(),startedAt:s().nullable(),finishedAt:s().nullable(),createdAt:s()}),aG=d({id:s(),position:m().int(),query:s(),queryClass:Bo.nullable().optional(),status:EN,requestedModel:s().nullable(),resolvedModel:s(),servedModel:s().nullable(),answerText:s().nullable(),groundingSources:y(Gm),citedDomains:y(s()),searchQueries:y(s()),namedCompetitors:y(s()).default([]),citedCompetitorDomains:y(s()).default([]),answerMentioned:N().nullable(),citationState:Ki.nullable(),error:s().nullable(),startedAt:s().nullable(),finishedAt:s().nullable(),createdAt:s()}),iG=IN.extend({queries:y(aG)});d({runs:y(iG)});const sG=d({name:s(),displayName:s(),modelConfigurable:N(),defaultModel:s(),knownModels:y(d({id:s(),displayName:s()}))});d({runs:y(IN),nextCursor:s().nullable().optional(),providers:y(sG).optional(),access:d({canRun:N(),dailyRunLimit:m().int().positive().nullable()}).optional()});d({apiKey:s().min(1)});d({id:s(),name:s(),status:s(),currencyCode:s().nullable(),timezone:s().nullable(),url:s().nullable(),reviewStatus:s().nullable(),integrityReviewStatus:s().nullable(),integrityDecision:s().nullable()});d({q:s().trim().min(1).max(200),limit:m().int().min(1).max(100).default(20)});const oG=d({id:s(),type:s(),canonicalName:s(),countryCode:s(),name:s(),regionCode:s().nullable()});d({count:m().int().nonnegative(),query:s(),results:y(oG)});const rG=d({id:s(),clientType:s().optional(),name:s().optional(),pixelId:s().optional()});d({pixels:y(rG)});const lG=d({id:s(),name:s().optional()}),cG=d({id:s(),name:s().optional(),eventType:s().optional(),customEventName:s().nullable().optional(),attributionWindowDays:m().int().positive().optional(),adAccountId:s().optional(),sourceIds:y(s()).optional(),sources:y(lG).optional(),archived:N().optional(),version:m().int().nonnegative().optional()});d({eventSettings:y(cG)});d({connected:N(),adAccountId:s().nullable().optional(),displayName:s().nullable().optional(),currencyCode:s().nullable().optional(),timezone:s().nullable().optional(),status:s().nullable().optional(),reviewStatus:s().nullable().optional(),integrityReviewStatus:s().nullable().optional(),integrityDecision:s().nullable().optional(),lastSyncedAt:s().nullable().optional(),conversionTrackingConfigured:N().optional()});d({disconnected:N()});d({runId:s(),status:s()});const uG=["campaign_id","ad_group_id","ad_id","ad_account_id","oppref"],dG=/^[\w.-]+=[^&#\s]*$/,mG=/\{([^}]*)\}/g,Vo=s().min(1).max(1e3).superRefine((e,n)=>{const i=u=>n.addIssue({code:"custom",message:u});if(e.startsWith("?")||e.startsWith("&")){i("Tracking template must not start with ? or &");return}const r=new Set;for(const u of e.split("&")){if(!dG.test(u)){i(`Tracking template pair '${u}' must be key=value without whitespace, # or &`);return}const h=u.slice(0,u.indexOf("="));if(r.has(h)){i(`Tracking template repeats the parameter '${h}'`);return}r.add(h)}for(const u of e.matchAll(mG)){const h=u[1];if(!uG.includes(h)){i(`Tracking template macro '{${h}}' is not supported`);return}}}),pG=d({type:s().nullable().optional(),title:s().nullable().optional(),body:s().nullable().optional(),targetUrl:s().nullable().optional(),fileId:s().nullable().optional()}),mu=k(["impressions","clicks"]);mu.enum;const pu=k(["impression","click"]);pu.enum;const hG=d({id:s(),adGroupId:s(),name:s(),status:s(),reviewStatus:s().nullable().optional(),creative:pG.nullable().optional(),landingPageQueryStringTemplate:s().nullable().optional(),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:s().optional()}),fG=d({id:s(),campaignId:s(),name:s(),description:s().nullable().optional(),status:s(),billingEventType:Fe([pu,de()]).optional(),maxBidMicros:m().int().nullable().optional(),contextHints:y(s()).default([]),ads:y(hG).default([]),landingPageQueryStringTemplate:s().nullable().optional(),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:s().optional()}),gG=d({id:s(),name:s(),description:s().nullable().optional(),status:s(),startTime:m().int().nullable().optional(),endTime:m().int().nullable().optional(),biddingType:Fe([mu,de()]).optional(),dailySpendLimitMicros:m().int().nullable().optional(),lifetimeSpendLimitMicros:m().int().nullable().optional(),conversionEventSettingIds:y(s()).default([]),locationIds:y(s()).optional(),adGroups:y(fG).default([]),landingPageQueryStringTemplate:s().nullable().optional(),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:s().optional()});d({campaigns:y(gG)});const ON=k(["campaign","ad_group"]);ON.enum;const yG=d({level:ON,entityId:s(),date:s(),impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int(),ctr:we().nullable(),cpcMicros:m().int().nullable(),inProgress:N()});d({rows:y(yG),currencyCode:s().nullable().optional()});const PN=d({from:s().nullable(),to:s().nullable(),inProgressDate:s().nullable()}),qN=d({impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int(),ctr:we().nullable(),cpcMicros:m().int().nullable()});d({connected:N(),displayName:s().nullable().optional(),currencyCode:s().nullable().optional(),lastSyncedAt:s().nullable().optional(),campaignCount:m().int(),adGroupCount:m().int(),adCount:m().int(),window:PN,totals:qN});const MN=k(["unavailable","partial","complete"]);MN.enum;const BN=k(["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"]);BN.enum;const LN=k(["unavailable","reported"]);LN.enum;const bG={storedSnapshot:"stored_ads_snapshot"},UN=k(["unavailable","partial_snapshot","metrics_unavailable","observed_activity","no_observed_activity"]);UN.enum;const vG=d({id:s(),name:s(),status:s(),reviewStatus:s().nullable()}),xG=d({id:s(),name:s(),status:s(),billingEventType:Fe([pu,de()]),maxBidMicros:m().int().nullable(),contextHints:y(s()),ads:y(vG)}),wG=d({id:s(),name:s(),status:s(),biddingType:Fe([mu,de()]),dailySpendLimitMicros:m().int().nullable(),lifetimeSpendLimitMicros:m().int().nullable(),conversionEventSettingIds:y(s()),adGroups:y(xG)});d({snapshot:d({status:MN,issue:Fe([BN,de()]),lastSyncedAt:s().nullable(),campaignCount:m().int().nonnegative(),adGroupCount:m().int().nonnegative(),adCount:m().int().nonnegative(),sourceSync:d({runId:s(),status:ta}).nullable()}),historicalCampaignRollups:d({status:LN,window:PN,totals:qN.nullable()}),storedConfiguration:d({basis:E(bG.storedSnapshot),connection:d({status:s().nullable(),reviewStatus:s().nullable(),integrityReviewStatus:s().nullable(),integrityDecision:s().nullable(),conversionTrackingConfigured:N()}).nullable(),campaigns:y(wG)}),assessment:d({state:UN})});const mi=s().min(8).max(128).regex(/^[\w.:-]+$/,"operationKey may contain letters, numbers, dot, underscore, colon, and hyphen"),Kt=s().min(1).max(200),$o=s().min(3).max(1e3).refine(e=>e.trim().length>0),Zr=m().int().min(946684800).max(4102444800),Yr=m().int().positive().max(Number.MAX_SAFE_INTEGER),V1=s().regex(/^[a-f0-9]{64}$/),VN=y(Kt).max(100).refine(e=>new Set(e).size===e.length,"conversionEventSettingIds must be unique"),$N=s().url().refine(e=>new URL(e).protocol==="https:",{message:"URL must use https"}),KN=k(["image_upload","campaign_create","campaign_update","campaign_pause","campaign_archive","campaign_tree_activate","ad_group_create","ad_group_update","ad_group_pause","ad_group_archive","ad_create","ad_update","ad_pause","ad_archive"]);KN.enum;const GN=k(["pending","reconciling","succeeded","failed","unknown"]),Vr=GN.enum,HN=k(["known_entity","create_fingerprint","manual_only"]);HN.enum;const FN=k([Vr.pending,Vr.unknown,Vr.reconciling]);FN.enum;const QN=k(["active","paused","archived"]);QN.enum;const ZN=k(["file","campaign","ad_group","ad"]);ZN.enum;const YN=k(["campaign","ad_group","ad"]);YN.enum;const $1=d({id:Kt,expectedUpdatedAt:m().int().nonnegative()}).strict(),SG=$1,bm=1e3;function kG(e){return 1+e.campaign.adGroups.reduce((n,i)=>n+1+i.ads.length,0)}const jG=$1.extend({ads:y(SG).min(1).max(bm-1)}).strict(),AG=$1.extend({adGroups:y(jG).min(1).max(bm-1)}).strict();function IS(e,n,i){for(let r=1;r<e.length;r+=1)if(u2(e[r-1].id,e[r].id)>=0){i.addIssue({code:"custom",path:n,message:"Activation manifest entities must be uniquely sorted by id"});return}}const XN=d({campaign:AG}).strict().superRefine((e,n)=>{kG(e)>bm&&n.addIssue({code:"custom",path:["campaign"],message:`Activation manifests may contain at most ${bm} entities`}),IS(e.campaign.adGroups,["campaign","adGroups"],n);const r=new Set;for(let u=0;u<e.campaign.adGroups.length;u+=1){const h=e.campaign.adGroups[u];IS(h.ads,["campaign","adGroups",u,"ads"],n);for(let f=0;f<h.ads.length;f+=1){const b=h.ads[f];r.has(b.id)&&n.addIssue({code:"custom",path:["campaign","adGroups",u,"ads",f,"id"],message:"An ad may appear only once in an activation manifest"}),r.add(b.id)}}}),JN=V1,NG=k(["approved","executing","consumed","revoked","expired","unknown"]),$i=NG.enum,CG=k(["pending","executing","active","failed","rollback_executing","rolled_back","rollback_failed","unknown"]),Vs=CG.enum,_G=d({name:$o.optional(),description:s().max(4e3).nullable().optional(),status:QN.optional(),startTime:Zr.nullable().optional(),endTime:Zr.nullable().optional(),lifetimeSpendLimitMicros:Yr.min(1e6).optional(),locationIds:y(Kt).max(100).optional(),biddingType:mu.optional(),conversionEventSettingIds:VN.optional(),campaignId:Kt.optional(),contextHints:y(s().min(1).max(1e3)).max(100).optional(),maxBidMicros:Yr.max(1e8).optional(),billingEventType:pu.optional(),adGroupId:Kt.optional(),creativeFingerprint:V1.optional(),landingPageQueryStringTemplate:Vo.nullable().optional()}).strict();d({operationKey:mi,imageUrl:$N});d({operationKey:mi,name:$o,description:s().max(4e3).optional(),startTime:Zr.optional(),endTime:Zr.optional(),lifetimeSpendLimitMicros:Yr.min(1e6),locationIds:y(Kt).min(1).max(100),biddingType:mu.optional(),conversionEventSettingIds:VN.optional(),landingPageQueryStringTemplate:Vo.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"})});d({operationKey:mi,campaignId:Kt,name:$o,description:s().max(4e3).optional(),contextHints:y(s().min(1).max(1e3)).min(1).max(100),maxBidMicros:Yr.max(1e8),billingEventType:pu.optional(),landingPageQueryStringTemplate:Vo.optional()});const WN=d({title:s().min(3).max(50),body:s().min(1).max(100),targetUrl:$N,fileId:Kt});d({operationKey:mi,adGroupId:Kt,name:$o,creative:WN,landingPageQueryStringTemplate:Vo.optional()});function K1(e){return Object.keys(e).some(n=>n!=="operationKey"&&n!=="expectedUpdatedAt")}d({operationKey:mi,expectedUpdatedAt:m().int().nonnegative(),name:$o.optional(),description:s().max(4e3).nullable().optional(),startTime:Zr.nullable().optional(),endTime:Zr.nullable().optional(),lifetimeSpendLimitMicros:Yr.min(1e6).optional(),locationIds:y(Kt).min(1).max(100).optional(),landingPageQueryStringTemplate:Vo.nullable().optional()}).refine(K1,{message:"At least one campaign field must be updated"});d({operationKey:mi,expectedUpdatedAt:m().int().nonnegative(),name:$o.optional(),description:s().max(4e3).nullable().optional(),contextHints:y(s().min(1).max(1e3)).min(1).max(100).optional(),maxBidMicros:Yr.max(1e8).optional(),landingPageQueryStringTemplate:Vo.nullable().optional()}).refine(K1,{message:"At least one ad group field must be updated"});d({operationKey:mi,expectedUpdatedAt:m().int().nonnegative(),name:$o.optional(),creative:WN.optional(),landingPageQueryStringTemplate:Vo.nullable().optional()}).refine(K1,{message:"At least one ad field must be updated"});d({operationKey:mi});d({operationKey:mi,expectedUpdatedAt:m().int().nonnegative()});const sp=d({id:s(),adAccountId:s().nullable(),operationKey:s(),kind:KN,state:GN,entityType:Fe([ZN,de()]),entityId:s().nullable(),upstreamUpdatedAt:m().int().nullable(),errorCode:s().nullable(),errorMessage:s().nullable(),reconcileStrategy:Fe([HN,de()]),reconcileParentId:Kt.nullable(),reconcileFingerprint:V1.nullable(),reconcileFields:_G.nullable(),reconcileAttempts:m().int().nonnegative(),lastReconciledAt:s().nullable(),createdAt:s(),updatedAt:s()});d({operation:sp,replayed:N()});const Pt=sm({offset:!0}),ml={id:Kt,projectId:Kt,adAccountId:Kt,manifestHash:JN,manifest:XN,executorApiKeyId:Kt,approverApiKeyId:Kt,expiresAt:Pt,approvedAt:Pt,createdAt:Pt,updatedAt:Pt,revocationRequestedAt:Pt.nullable()},TG=d({...ml,state:E($i.approved),operationId:de(),executionStartedAt:de(),consumedAt:de(),revokedAt:de(),expiredAt:de()}).strict(),EG=d({...ml,state:E($i.executing),operationId:Kt,executionStartedAt:Pt,consumedAt:de(),revokedAt:de(),expiredAt:de()}).strict(),RG=d({...ml,state:E($i.consumed),operationId:Kt,executionStartedAt:Pt,consumedAt:Pt,revokedAt:de(),expiredAt:de()}).strict(),DG=d({...ml,state:E($i.revoked),operationId:de(),executionStartedAt:de(),consumedAt:de(),revokedAt:Pt,expiredAt:de()}).strict(),zG=d({...ml,state:E($i.expired),operationId:de(),executionStartedAt:de(),consumedAt:de(),revokedAt:de(),expiredAt:Pt}).strict(),IG=d({...ml,state:E($i.unknown),operationId:Kt,executionStartedAt:Pt,consumedAt:de(),revokedAt:de(),expiredAt:de()}).strict(),eC=Ue("state",[TG,EG,RG,DG,zG,IG]).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!==$i.executing&&e.state!==$i.unknown&&e.state!==$i.consumed&&n.addIssue({code:"custom",path:["revocationRequestedAt"],message:"Only an executing, cancelled, or unresolved activation can carry a cancellation request"})}),$s={id:Kt,operationId:Kt,ordinal:m().int().nonnegative(),entityType:YN,entityId:Kt,expectedUpdatedAt:m().int().nonnegative(),createdAt:Pt,updatedAt:Pt},hu={errorCode:de(),errorMessage:de()},G1={errorCode:s().min(1).max(100),errorMessage:s().min(1).max(500),remediation:s().min(1).max(500)},OG=d({...$s,...hu,state:E(Vs.pending),providerUpdatedAt:de(),remediation:de(),startedAt:de(),finishedAt:de()}).strict(),PG=d({...$s,...hu,state:E(Vs.executing),providerUpdatedAt:de(),remediation:de(),startedAt:Pt,finishedAt:de()}).strict(),qG=d({...$s,...hu,state:E(Vs.active),providerUpdatedAt:m().int().nonnegative(),remediation:de(),startedAt:Pt,finishedAt:Pt}).strict(),MG=d({...$s,...G1,state:E(Vs.failed),providerUpdatedAt:Fe([m().int().nonnegative(),de()]),startedAt:Pt,finishedAt:Pt}).strict(),BG=d({...$s,...hu,state:E(Vs.rollback_executing),providerUpdatedAt:m().int().nonnegative(),remediation:s().min(1).max(500),startedAt:Pt,finishedAt:de()}).strict(),LG=d({...$s,...hu,state:E(Vs.rolled_back),providerUpdatedAt:m().int().nonnegative(),remediation:s().min(1).max(500),startedAt:Pt,finishedAt:Pt}).strict(),UG=d({...$s,...G1,state:E(Vs.rollback_failed),providerUpdatedAt:m().int().nonnegative(),startedAt:Pt,finishedAt:Pt}).strict(),VG=d({...$s,...G1,state:E(Vs.unknown),providerUpdatedAt:Fe([m().int().nonnegative(),de()]),startedAt:Pt,finishedAt:Pt}).strict(),$G=Ue("state",[OG,PG,qG,MG,BG,LG,UG,VG]),Kg={exact:"exact",refreshSemanticallyUnchanged:"refresh_semantically_unchanged"},KG=k([Kg.exact,Kg.refreshSemanticallyUnchanged]);d({manifest:XN,executorApiKeyId:Kt,expiresAt:Pt,versionPolicy:KG.default(Kg.exact)}).strict();d({grant:eC}).strict();d({}).strict();d({operationKey:mi,grantId:Kt,manifestHash:JN}).strict();d({grant:eC,operation:sp,steps:y($G)}).strict();const GG=[Vr.pending,Vr.unknown,Vr.reconciling];function HG(e){if(e===void 0||e==="")return GG;if(Array.isArray(e)){const n=[];for(const i of e)typeof i=="string"?n.push(...i.split(",")):n.push(i);return n}return typeof e=="string"?e.split(",").filter(Boolean):e}d({state:Ya(HG,y(FN).min(1).max(3).refine(e=>new Set(e).size===e.length,"state values must be unique")),limit:Ha().int().min(1).max(200).default(100),cursor:s().min(1).max(1e3).optional()});d({operations:y(sp),count:m().int().nonnegative(),nextCursor:s().nullable()});d({}).strict();d({operation:sp,resolved:N()});d({campaignId:s().min(1).max(200).optional(),lookbackDays:Ha().int().min(1).max(30).default(7)});const tC=k(["campaign","ad_group","ad"]);tC.enum;const nC=k(["both","live-only","stored-only"]);nC.enum;const FG=E("live-provider-read"),QG=d({date:s().nullable(),startTime:m().nullable(),endTime:m().nullable(),impressions:m().nullable(),clicks:m().nullable(),spend:m().nullable(),conversions:m().nullable(),ctr:we().nullable(),cpc:m().nullable(),cpm:m().nullable()}),OS=d({impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int()}),ZG=d({date:s(),live:OS.nullable(),stored:OS.nullable(),drifted:N()}),YG=d({field:s(),live:s().nullable(),stored:s().nullable()}),XG=d({name:s().nullable(),status:s(),reviewStatus:s().nullable(),mode:s().nullable(),updatedAt:m().nullable()}),JG=d({name:s(),status:s(),reviewStatus:s().nullable(),upstreamUpdatedAt:m().nullable(),syncedAt:s()}),WG=d({entityType:tC,id:s(),parentId:s().nullable(),presence:nC,live:XG.nullable(),stored:JG.nullable(),fieldDeltas:y(YG),liveMetrics:y(QG).nullable(),metricDeltas:y(ZG).nullable(),drifted:N()}),eH=d({surface:s(),entityId:s().nullable(),upstreamStatus:m().int().nullable()});d({basis:FG,fetchedAt:s(),adAccountId:s(),storedSnapshotSyncedAt:s().nullable(),metricsWindow:d({lookbackDays:m().int().positive()}),bounds:d({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:N()}),entities:y(WG),drift:d({entitiesCompared:m().int().nonnegative(),driftedEntities:m().int().nonnegative(),statusDrifted:m().int().nonnegative(),metricsDrifted:m().int().nonnegative()}),errors:y(eH)});const tH=d({status:k(["available","unavailable","not-supported"])}),PS="*";function aC(e){if(e?.some(n=>n.trim().toLowerCase()==="report"))return"The report embed tab has been retired. Remove report from the allowed tabs; explicitly configure overview to display AI Visibility."}const nH=k(["enabled","configured_disabled","CANONRY_TELEMETRY_DISABLED","DO_NOT_TRACK","CI","NO_CONFIG","CONFIG_UNAVAILABLE"]),aH=k(["server","local"]);d({enabled:N(),configuredEnabled:N(),reason:nH,anonymousId:s().regex(/^[0-9a-f]{8}\.\.\.$/i).optional(),target:aH.optional()}).strict();const ft=1,Xf=k(["system","project","queries","competitors","run","finish"]),iH=k(["copy_agent_command","connect_server_traffic","connect_search_console","connect_analytics","connect_business_profile","set_schedule","add_notification","open_project","review_page_health"]),Jf=k(["0","1","2-3","4-5","6-10","11+"]);function li(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 qS=k(["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","rate_limited","provider_auth","network","unknown"]),sH=k(["wizard","platform","site_health"]),Md=d({eventId:s().uuid(),flowVersion:E(ft),onboardingSessionId:s().uuid(),surface:sH.optional()});Ue("event",[Md.extend({event:E("onboarding.started"),step:Xf,resumed:N()}).strict(),Md.extend({event:E("onboarding.step_completed"),step:Xf,method:k(["existing","inline","manual","generated","skipped","automatic"]),countBucket:Jf.optional(),nextAction:iH.optional()}).strict(),Md.extend({event:E("onboarding.blocked"),step:Xf,action:k(["continue","configure_provider","generate_queries","save","launch_run","retry_run"]),reasonCode:qS}).strict(),Md.extend({event:E("run.requested"),origin:E("dashboard_setup"),result:k(["queued","rejected"]),kind:k(["answer_visibility","site_health"]).optional(),providerCountBucket:Jf,queryCountBucket:Jf,reasonCode:qS.optional()}).strict()]);d({accepted:N()});k(["cli","mcp-stdio","mcp-http","aero","api","dashboard"]);const oH=["cli","mcp-stdio","mcp-http","aero","api","dashboard","system"],H1=k(oH);H1.enum;const iC=["provider","gsc","ga4","bing","gbp","google_ads","gtm","openai_ads","traffic_cloudflare","traffic_vercel","traffic_cloud_run","wordpress","backlinks","webhook","agent_webhook","cdp","traffic_wordpress"],F1=k(iC),sC=F1.enum,rH=["connect","disconnect","test","reauth","select"],oC=k(rH);oC.enum;const lH=["started","succeeded","failed","cancelled"],rC=k(lH),MS=rC.enum,cH=["succeeded","partial","failed","skipped","cancelled"],lC=k(cH),uH=lC.enum,dH=["manual","scheduled","agent","startup","retry","push"],cC=k(dH);cC.enum;const mH=["AUTH_DENIED","OAUTH_CANCELLED","OAUTH_STATE_INVALID","INVALID_CREDENTIALS","PERMISSION_MISSING","NOT_CONNECTED","ALREADY_CONNECTED","NOT_FOUND","ACCOUNT_NOT_FOUND","PROPERTY_NOT_FOUND","QUOTA_EXCEEDED","RATE_LIMITED","BILLING","NETWORK","TIMEOUT","HTTP_4XX","HTTP_5XX","BLOCKED_UNSAFE_URL","VALIDATION","UNSUPPORTED","NO_DATA","NOT_DUE","GATE_REFUSED","OPERATION_IN_PROGRESS","QUARANTINED","CANCELLED_BY_USER","SERVER_RESTARTED","INTERNAL","UNKNOWN","PORT_IN_USE","MIGRATION_FAILED","UNCAUGHT_EXCEPTION","UNHANDLED_REJECTION"],Q1=k(mH);Q1.enum;const uC={search_console:["sync","inspect","sitemap_submit"],ga4:["sync"],bing:["sync","inspect"],gbp:["sync","reviews"],google_ads:["sync"],gtm:["sync"],openai_ads:["sync","operation","activation","reconcile"],server_traffic:["sync","ingest","backfill","reset"],backlinks:["install","sync","extract"],content:["analyze","brief"],research:["run"],discovery:["run"],sentiment:["run"],aero:["turn"],webhooks:["deliver","test"],schedules:["slot"],exports:["export"],providers:["reload"],wordpress:["schema_deploy","llms_txt","meta_write","publish"],measurement:["publish"],insights:["generate"],site_liveness:["check"],reports:["download"],data_refresh:["refresh"],server:["start","crash"]},pH=Object.keys(uC),dC=k(pH);dC.enum;const hH=["rows","pages","urls","links","domains","reviews","events","crawlerHits","aiReferralHits","aiUserFetchHits","campaigns","operations","queries","snapshots","briefs","gaps","targets","insights","toolCalls","toolErrors","modelCalls","inputTokens","outputTokens","cachedTokens","costMicros","attempts","deliveries","failures","skipped","providers","items","bytes"],fH=new Set(hH),mC=1e12,pC=m().int().min(0).max(mC),gH=Ke(s(),pC).refine(e=>Object.keys(e).length>0&&Object.keys(e).length<=12,"counts must have 1 to 12 keys").refine(e=>Object.keys(e).every(n=>fH.has(n)),"unknown count key"),yH=["first_party","slack","discord"],Z1=k(yH);Z1.enum;const bH=["2xx","3xx","4xx","5xx","timeout","network","blocked"],hC=k(bH);hC.enum;const vH=["under_1s","1s_to_10s","10s_to_1m","1m_to_5m","5m_to_30m","30m_or_more"],op=k(vH);op.enum;const fC=s().regex(/^[A-Z_$][\w$]{0,39}$/i),gC=s().regex(/^[a-z0-9][a-z0-9._-]{0,39}$/),Y1=k(xg),yC=s().regex(/^[A-Z0-9][\w.:/@-]{0,99}$/i).refine(e=>!e.includes("://"),"a model id is never a URL"),bC=s().regex(/^[a-z0-9][a-z0-9._-]{0,31}$/);d({integration:F1,provider:Y1.optional(),action:oC,status:rC,reasonCode:Q1.optional(),errorName:fC.optional(),target:Z1.optional(),surface:H1.optional(),agent:gC.optional(),durationBucket:op.optional(),attempt:m().int().min(1).max(1e6).optional(),first:E(!0).optional()}).strict().refine(e=>e.integration===sC.provider==(e.provider!==void 0),"provider is required for, and only for, integration provider").refine(e=>e.status===MS.succeeded||e.status===MS.started||e.reasonCode!==void 0,"a failed or cancelled attempt needs a reasonCode");d({feature:dC,operation:s().regex(/^[a-z][a-z_]{0,31}$/),status:lC,trigger:cC.optional(),surface:H1.optional(),agent:gC.optional(),reasonCode:Q1.optional(),errorName:fC.optional(),durationBucket:op.optional(),counts:gH.optional(),target:Z1.optional(),eventType:Mm.optional(),statusClass:hC.optional(),provider:Y1.optional(),model:yC.optional(),modelProvider:bC.optional(),sampleRate:m().int().min(1).max(1e6).optional(),droppedBefore:m().int().min(0).max(mC).optional(),domainHash:s().regex(/^[0-9a-f]{64}$/).optional(),first:E(!0).optional()}).strict().refine(e=>uC[e.feature].includes(e.operation),"operation is not one this feature reports").refine(e=>e.status===uH.succeeded||e.reasonCode!==void 0,"a non-succeeded outcome needs a reasonCode");const xH=["npm","homebrew","docker","source"],wH=k(xH),SH=s().regex(/^[a-z0-9][a-z0-9-]{0,31}$/),kH=["projects","queries","competitors","locations","schedules","webhooks","agentWebhooks","trafficSources","googleConnections","bingConnections","backlinkSources","adsAccounts"],jH=["sweeps","audits","providerCalls","inputTokens","outputTokens","costMicros","aeroTurns","aeroModelCalls","aeroInputTokens","aeroOutputTokens","aeroCostMicros","webhookDeliveries"],Wf=e=>{const n=new Set(e);return Ke(s(),pC).refine(i=>Object.keys(i).every(r=>n.has(r)),"unknown key")};d({providers:y(Y1).max(xg.length),integrations:y(F1.exclude([sC.provider])).max(iC.length),counts:Wf(kH),usage24h:Wf(jH),providerCalls24h:Wf(xg).optional(),agentProvider:bC.optional(),agentModel:yC.optional(),uptimeBucket:op.optional(),installSource:wH.optional(),installRef:SH.optional()}).strict();const vC=["/","/projects","/projects/:projectName","/projects/:projectName/portfolio","/projects/:projectName/search-console","/projects/:projectName/conversions","/projects/:projectName/local","/projects/:projectName/discovery","/projects/:projectName/queries","/projects/:projectName/properties/:targetKey","/projects/:projectName/report","/projects/:projectName/activity","/projects/:projectName/backlinks","/projects/:projectName/technical-aeo","/projects/:projectName/history","/projects/:projectName/settings","/runs","/history","/settings","/setup","/backlinks","/traffic","/traffic/:projectName/:sourceId","not-found","other"],AH=k(vC),xC=["overview","portfolio","search-console","conversions","local","discovery","queries","properties","report","activity","backlinks","technical-aeo","history","settings","other"],Bd=k(xC),NH=["sweep.launch","sweep.cancel","site_audit.launch","project.create","project.update","project.delete","query.add","query.delete","query.generate","competitor.save","competitor.delete","schedule.save","schedule.delete","provider.save","settings.save","integration.connect_started","integration.connect","integration.disconnect","traffic.sync","notification.save","notification.test","measurement_plan.publish","property_names.save","discovery.run","api_key.create","api_key.revoke","export.download","report.download","aero.open","aero.send","filter.change","search.submit"],CH=k(NH),_H=["google","gsc","ga","bing","gbp","wordpress","openai_ads","google_ads","gtm","traffic_cloudflare","traffic_vercel","traffic_cloud_run","traffic_wordpress"],TH=k(_H),EH=["provider","model","location","window","query_class","other"],RH=k(EH),DH=["csv","json","html"],zH=["render","unhandled","api"],IH=["4xx","5xx","network"],OH=["LCP","INP","CLS","FCP","TTFB"],PH=["good","needs-improvement","poor"],wC=/^[a-z][a-z0-9-]{0,39}$/,SC=/^[a-z_$][\w$]{0,39}$/i,qH=/^\/api\/v1(?:\/(?:[a-z][a-z0-9-]*(?:\.[a-z]+)?|\{[A-Za-z]+\}))*$/,kC=160,MH=new Set(["accounts","activation-grants","ad-groups","ads","cache","campaigns","competitors","confirm","connections","containers","contracts","conversations","dismissals","insights","jobs","keys","locations","measurement-query-sets","measurement-query-templates","notifications","operations","projects","providers","queries","recommendations","runs","screenshots","segments","sessions","snapshots","sources","users","versions"]),BH=new Set(["ads/account","ads/activation-grants","ads/ad-groups","ads/ads","ads/campaigns","ads/connect","ads/connection","ads/conversions","ads/delivery-diagnostics","ads/files","ads/geo","ads/insights","ads/live-delivery","ads/operations","ads/status","ads/summary","ads/sync","keys/self","locations/default","locations/discover","notifications/events","operations/logs","providers/reload","queries/generate","queries/replace-preview","runs/latest","snapshots/diff"]),LH=/^\{[a-z]+\}$/i;function jC(e){if(e.length>kC||e.includes("://")||!qH.test(e))return!1;const n=e.split("/").slice(3);return n.every((i,r)=>{const u=n[r-1];return u===void 0||!MH.has(u)?!0:LH.test(i)||BH.has(`${u}/${i}`)})}const Ld=d({eventId:s().uuid(),uiSessionId:s().uuid(),page:AH});Ue("event",[Ld.extend({event:E("ui.page_viewed"),tab:Bd.optional()}).strict(),Ld.extend({event:E("ui.action"),action:CH,tab:Bd.optional(),integration:TH.optional(),format:k(DH).optional(),filter:RH.optional()}).strict(),Ld.extend({event:E("ui.error"),kind:k(zH),tab:Bd.optional(),component:s().regex(wC).optional(),errorName:s().regex(SC).optional(),route:s().max(kC).refine(jC,"route must be a route template").optional(),method:k(["GET","POST","PUT","PATCH","DELETE"]).optional(),statusClass:k(IH).optional(),status:m().int().min(400).max(599).optional()}).strict(),Ld.extend({event:E("ui.vitals"),metric:k(OH),rating:k(PH),tab:Bd.optional()}).strict()]);function UH(e){if(!e)return"other";if(e==="*"||e==="$"||e.endsWith("/*")||e.endsWith("/$"))return"not-found";const n=e.replace(/\$([a-z]\w*)/gi,":$1").replace(/(.)\/+$/,"$1");return vC.includes(n)?n:"other"}function AC(e){if(e==="/projects/:projectName")return"overview";const n=/^\/projects\/:projectName\/([a-z-]+)/.exec(e);if(!n)return;const i=n[1];return xC.includes(i)?i:"other"}const VH=["struggle","bug","improvement","other"],$H=k(VH),Sc={summary:500,details:4e3,area:40,command:120,errorCode:40};d({kind:$H,summary:s().trim().min(1).max(Sc.summary),details:s().trim().min(1).max(Sc.details).optional(),area:s().trim().min(1).max(Sc.area).optional(),command:s().trim().min(1).max(Sc.command).optional(),errorCode:s().trim().min(1).max(Sc.errorCode).optional()}).strict();d({accepted:N(),id:s()});const KH=4;function GH(e){return e.length<KH}const NC=k(["trace","debug","info","warn","error","fatal"]),CC=d({runId:s().min(1).max(256).optional(),projectId:s().min(1).max(256).optional(),requestId:s().min(1).max(256).optional(),actor:s().min(1).max(512).optional(),credentialId:s().min(1).max(512).optional(),userAgent:s().min(1).max(512).optional(),actorSession:s().min(1).max(512).optional(),method:s().min(1).max(16).optional(),route:s().min(1).max(256).optional(),operationId:s().min(1).max(256).optional(),jobId:s().min(1).max(256).optional(),taskId:s().min(1).max(256).optional(),traceId:s().min(1).max(256).optional(),provider:s().min(1).max(256).optional(),errorCode:s().min(1).max(128).optional(),attempt:m().finite().optional(),count:m().finite().optional(),total:m().finite().optional(),progress:m().finite().optional(),httpStatus:m().finite().optional(),statusCode:m().finite().optional(),durationMs:m().finite().optional(),bytes:m().finite().optional(),retryAfterMs:m().finite().optional(),retriable:N().optional(),retrying:N().optional(),cancelled:N().optional(),success:N().optional()}).strict(),_C=d({cursor:s().min(1).max(512),ts:s().datetime(),level:NC,module:s().min(1).max(256),action:s().min(1).max(256),message:s().max(4096).optional(),runId:s().min(1).max(256).optional(),projectId:s().min(1).max(256).optional(),context:CC}).strict();d({level:NC.optional(),module:s().trim().min(1).max(256).optional(),runId:s().trim().min(1).max(256).optional(),projectId:s().trim().min(1).max(256).optional(),actor:s().trim().min(1).max(512).optional(),requestId:s().trim().min(1).max(256).optional(),since:s().datetime().optional(),until:s().datetime().optional(),limit:Ha().int().min(1).max(200).default(100),cursor:s().trim().min(1).max(512).optional()}).strict().superRefine((e,n)=>{e.since&&e.until&&Date.parse(e.since)>Date.parse(e.until)&&n.addIssue({code:fe.custom,path:["until"],message:'"until" must be on or after "since".'})});const TC=d({maxEntries:m().int().positive(),maxAgeSeconds:m().int().positive()}).strict(),HH=d({entries:y(_C),nextCursor:s().min(1).max(512).nullable(),truncated:m().int().nonnegative(),dropped:m().int().nonnegative(),retention:k(["process","durable"]),retentionPolicy:TC.optional(),captureErrors:m().int().nonnegative().optional(),observedAt:s().datetime()}).strict(),FH=d(CC.shape),QH=d({..._C.shape,context:FH});d({...HH.shape,entries:y(QH),retentionPolicy:d(TC.shape).optional()});function eg(e){return e!==""&&/^[\w./:@%+=,-]+$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}d({startDate:jn,endDate:jn,sourceId:s().trim().min(1).optional(),burstThreshold:m().int().min(1).max(1e6).optional(),ratioThreshold:m().min(1).max(1e3).optional(),limit:m().int().min(1).max(500).optional()}).strict();const yo=d({total:m().int().nonnegative(),paid:m().int().nonnegative(),organic:m().int().nonnegative(),unknown:m().int().nonnegative()});d({scope:d({project:s(),sourceId:s().nullable(),attribution:E("project-source-only"),unavailableDimensions:y(k(["property","target","market"]))}),window:d({startDate:jn,endDate:jn,timeZone:E("UTC")}),rule:d({version:E("hourly-normalized-path-v1"),burstThreshold:m().int().positive(),ratioThreshold:m().positive(),calibration:k(["uncalibrated-default","request-override"]),grouping:y(s()),confirmsAutomation:E(!1)}),totals:d({raw:yo,redirects:yo,subresources:yo,countable:yo,suspected:yo,adjustedEstimate:yo}),bursts:y(d({sourceId:s(),product:s(),landingPathNormalized:s(),tsHour:s(),counts:yo})),evidence:d({total:m().int().nonnegative(),returned:m().int().nonnegative(),truncated:N()}),comparison:d({status:E("unavailable"),serverCountable:m().int().nonnegative(),serverObservation:k(["missing","observed-zero","observed-positive"]),gaSessions:m().int().nonnegative().nullable(),gaObservation:k(["missing","observed-zero","observed-positive"]),observedRatio:m().nonnegative().nullable(),observedRatioAboveThreshold:N().nullable(),ratio:de(),reasons:y(s()),gaScope:E("project")}),caveats:y(s())});const ZH=new Set(["optional","nullable","default","prefault","readonly","catch","nonoptional"]),BS=64;function Xd(e){return e._zod.def}function bo(e,n){return e.clone({...Xd(e),...n})}function LS(e){if(e.length!==0){if(e.every(n=>typeof n=="string"))return s();if(e.every(n=>typeof n=="number"))return m();if(e.every(n=>typeof n=="boolean"))return N()}}function EC(e,n,i,r){if(r>BS)throw new Error(`tolerantReadSchema: schema nesting exceeds ${BS} levels`);const u=i.get(e);if(u)return u;const h=v=>EC(v,n,i,r+1),f=Xd(e);let b=e;if(f.type==="object"){const v=Object.fromEntries(Object.entries(e.shape).map(([j,C])=>[j,h(C)])),x=f.catchall,S=n.get(e)??(x&&Xd(x).type!=="never"?h(x):void 0);b=S?d(v).catchall(S):d(v)}else if(ZH.has(f.type)){const v=f.innerType,x=h(v);b=x===v?e:bo(e,{innerType:x})}else if(f.type==="array"){const v=f.element,x=h(v);b=x===v?e:bo(e,{element:x})}else if(f.type==="pipe"){const v=f.in,x=f.out,S=h(v),j=h(x);b=S===v&&j===x?e:bo(e,{in:S,out:j})}else if(f.type==="union"){const v=f.options,x=v.map(h);b=x.some((j,C)=>j!==v[C])?f.discriminator?Fe(x):bo(e,{options:x}):e}else if(f.type==="record"){const v=f.keyType,x=f.valueType,S=Xd(v).type==="enum"?s():v,j=h(x);b=S===v&&j===x?e:bo(e,{keyType:S,valueType:j})}else if(f.type==="intersection"){const v=f.left,x=f.right,S=h(v),j=h(x);b=S===v&&j===x?e:bo(e,{left:S,right:j})}else if(f.type==="tuple"){const v=f.items,x=f.rest,S=v.map(h),j=x&&h(x);b=j!==x||S.some((T,z)=>T!==v[z])?bo(e,{items:S,rest:j}):e}else if(f.type==="lazy"){const v=f.getter;b=tO(()=>h(v()))}else f.type==="enum"?b=LS(Object.values(f.entries))??e:f.type==="literal"&&(b=LS(f.values)??e);return i.set(e,b),b}function Ko(e,n={}){const i=new Map(n.openKeys??[]);return EC(e,i,new Map,0)}const Go={openKeys:[[z1,m().int().nonnegative()]]};Ko(D$,Go);Ko(Vg,Go);Ko(L$,Go);Ko(U$,Go);Ko(z$,Go);Ko(rN,Go);Ko(q$,Go);const YH=i2(tl.trafficAnalytics);Fe(YH.map(e=>E(e))).describe("Traffic activity window in days (7, 14, 30, or 90). Defaults to 30 when omitted.");const vo=d({current:m(),prior:m(),deltaPct:ot().nullable()}),XH=d({windowStart:s(),windowEnd:s(),coverageStart:s().nullable(),priorWindowComplete:N(),hasData:N().describe("True when the selected or prior window has stored crawler, user-fetch, countable referral or operator evidence, or the selected window has referral redirects. False means no qualifying stored evidence; it can occur with no, paused, errored or never-synced ingestion and out-of-window observations. It does not establish measured zero traffic or source health."),verifiedCrawlerHits:vo,unverifiedCrawlerHits:vo,aiUserFetchHits:vo,referralArrivals:vo,referralRedirects:m().int().nonnegative(),referralArrivalsByClass:d({paid:vo,organic:vo,unclassified:vo}),referralArrivalsClassSummary:s(),byOperator:y(d({operator:s(),verifiedHits:m(),unverifiedHits:m(),userFetchHits:m(),referralArrivals:m(),deltaPct:ot().nullable()})),topCrawledPaths:y(d({path:s(),verifiedHits:m(),unverifiedHits:m().default(0),distinctOperators:m()})),referralProducts:y(d({product:s(),arrivals:m(),distinctLandingPaths:m()})),dailyTrend:y(d({date:s(),verifiedCrawlerHits:m(),unverifiedCrawlerHits:m().default(0),userFetchHits:m(),referralArrivals:m()})),topReferralLandingPaths:y(d({path:s(),arrivals:m(),distinctProducts:m()}))});d({activity:XH.nullable()});const iie={ambiguous:"Property identity unverified"},sie="No answer could be tied to one property";function JH(e){return e.denominator===null||e.denominator===void 0||e.unattributed===void 0||e.unattributed<=0?null:`${e.unattributed} of ${e.denominator+e.unattributed} answers could not be tied to one property`}function WH(e){if(e.denominator===null||e.denominator===void 0||e.unchecked===void 0||e.unchecked<=0)return null;const n=e.denominator+e.unchecked;return`${e.unchecked} of ${n} ${n===1?"answer":"answers"} had sources that could not be checked`}const RC=d({name:s(),type:k(["string","boolean"]),multiple:N()}),eF=d({id:s(),path:y(s()).min(1),usage:s(),supportsDryRun:N(),windows:y(s()).optional(),options:y(RC),access:U3});d({version:s(),globalOptions:y(RC),groups:y(d({root:s(),section:s(),summary:s(),commands:y(eF)}))});const tF="canonry.onboarding-session.v1",vm="canonry.onboarding-launched-run.v1",X1="canonry.onboarding-handoff.v1",nF=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,aF=["system","project","queries","competitors","run"];function iF(e){return aF[e]??"system"}function sF(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 oF(e){return e.apiStatus.state!=="checking"&&e.workerStatus.state!=="checking"}const rF={NO_PROVIDER:"no_provider",NO_QUERIES:"no_queries",RATE_LIMITED:"rate_limited",QUOTA_EXCEEDED:"rate_limited",PROVIDER_AUTH:"provider_auth",PROVIDERS_FAILING:"provider_auth",AUTH_INVALID:"provider_auth",FORBIDDEN:"provider_auth",NETWORK:"network",CONNECTION_ERROR:"network",RUN_IN_PROGRESS:"run_rejected",RUN_CANCELLED:"run_cancelled"};function zc(e,n){const i=e&&typeof e=="object"&&"code"in e?String(e.code):"";return rF[i]??n}function J1(){return DC(tF)}function DC(e){try{const n=typeof window<"u"?window.sessionStorage.getItem(e):null;if(n&&nF.test(n))return n;const i=wm();return typeof window<"u"&&window.sessionStorage.setItem(e,i),i}catch{return wm()}}function W1(){return wm()}function zC(e){if(!e||typeof e!="object")return!1;const n=e;return typeof n.projectName=="string"&&n.projectName.length>0&&typeof n.runId=="string"&&n.runId.length>0&&typeof n.handled=="boolean"}function IC(e,n){try{typeof window<"u"&&window.sessionStorage.setItem(vm,JSON.stringify({projectName:e,runId:n,handled:!1}))}catch{}}function OC(e){if(!e)return null;try{if(typeof window>"u")return null;const n=window.sessionStorage.getItem(vm);if(!n)return null;const i=JSON.parse(n);return!zC(i)||i.projectName!==e||i.handled?null:i}catch{return null}}function xm(e){try{if(typeof window>"u")return;const n=window.sessionStorage.getItem(vm);if(!n)return;const i=JSON.parse(n);if(!zC(i)||i.runId!==e)return;window.sessionStorage.setItem(vm,JSON.stringify({...i,handled:!0}))}catch{}}function lF(e){try{typeof window<"u"&&window.sessionStorage.setItem(X1,e)}catch{}}function cF(e){if(!e)return!1;try{return typeof window<"u"&&window.sessionStorage.getItem(X1)===e}catch{return!1}}function uF(){try{typeof window<"u"&&window.sessionStorage.removeItem(X1)}catch{}}function wm(){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 i=[...n].map(r=>r.toString(16).padStart(2,"0")).join("");return`${i.slice(0,8)}-${i.slice(8,12)}-${i.slice(12,16)}-${i.slice(16,20)}-${i.slice(20)}`}const dF="canonry.ui-session.v1",mF="canonry.ui-pages.v1",pF="canonry.ui-errors.v1",US="canonry.ui-sent.v1",hF=30,fF=120,gF=200,Yt={sender:null,disabled:!1,page:"other",landingPage:null,pendingVitals:[],memory:new Map,sentAt:null,now:()=>Date.now()};function yF(e){Yt.sender=e.enabled===!1?null:e.send,Yt.disabled=!1,e.now&&(Yt.now=e.now)}function bF(e){const n=UH(e);if(Yt.page=n,Yt.landingPage===null){Yt.landingPage=n;const r=Yt.pendingVitals;Yt.pendingVitals=[];for(const[u,h]of r)PC(u,h)}const i=AC(n);qC(mF,`${n}|${i??""}`,{event:"ui.page_viewed"})}function Ho(e,n={}){ey({event:"ui.action",action:e,...n})}const vF=800,xF=1e3,tg=new Map;let kc,ng="";function wF(e){if(!Yt.sender)return;const n=tg.get(e);n&&clearTimeout(n),tg.set(e,setTimeout(()=>{tg.delete(e),Ho("filter.change",{filter:e})},vF))}function oie(e,n=!1){if(!Yt.sender)return;kc&&clearTimeout(kc),kc=void 0;const i=e.trim();if(i.length===0){ng="";return}const r=()=>{kc=void 0,i!==ng&&(ng=i,Ho("search.submit"))};n?r():kc=setTimeout(r,xF)}const SF={measurementProvider:"provider",measurementModel:"model",measurementLocation:"location",measurementFrom:"window",measurementTo:"window",runWindow:"window",queryClass:"query_class",class:"query_class",measurementScope:"other",measurementScopeKey:"other",measurementMarketKey:"other",scope:"other",runStatus:"other",runKind:"other",runProject:"other"};function kF(e,n){const i=new Set;for(const[r,u]of Object.entries(SF))jF(e[r],n[r])||i.add(u);for(const r of i)wF(r)}function jF(e,n){const i=r=>r==null||r===""?"":JSON.stringify(r);return i(e)===i(n)}function Sm(e){const n=PF(e.error),i=e.route&&jC(e.route)?e.route:void 0;if(e.kind==="api"&&!i)return;const r=BC(e.method),u=typeof e.status=="number"&&e.status>=400&&e.status<=599?e.status:void 0,h=e.network?"network":u===void 0?void 0:u>=500?"5xx":"4xx",f=e.component&&wC.test(e.component)?e.component:void 0,b=[e.kind,Yt.page,f,n,r,i,u??h].join("|");qC(pF,b,{event:"ui.error",kind:e.kind,...f?{component:f}:{},...n?{errorName:n}:{},...i?{route:i}:{},...r?{method:r}:{},...h?{statusClass:h}:{},...u?{status:u}:{}})}function AF(e,n){if(Yt.landingPage===null){Yt.pendingVitals.push([e,n]);return}PC(e,n)}function PC(e,n){const i=Yt.landingPage??"other";ey({event:"ui.vitals",metric:e,rating:n},i)}const NF=[["POST","/api/v1/projects/{name}/runs","sweep.launch"],["POST","/api/v1/runs/{id}/cancel","sweep.cancel"],["POST","/api/v1/projects/{name}/technical-aeo/runs","site_audit.launch"],["POST","/api/v1/projects","project.create"],["PUT","/api/v1/projects/{name}","project.create",void 0,201],["PUT","/api/v1/projects/{name}","project.update",void 0,200],["DELETE","/api/v1/projects/{name}","project.delete"],["POST","/api/v1/projects/{name}/queries","query.add"],["PUT","/api/v1/projects/{name}/queries","query.add"],["DELETE","/api/v1/projects/{name}/queries","query.delete"],["DELETE","/api/v1/projects/{name}/queries/{id}","query.delete"],["POST","/api/v1/projects/{name}/queries/generate","query.generate"],["PUT","/api/v1/projects/{name}/competitors","competitor.save"],["POST","/api/v1/projects/{name}/competitors","competitor.save"],["DELETE","/api/v1/projects/{name}/competitors/{id}","competitor.delete"],["PUT","/api/v1/projects/{name}/schedule","schedule.save"],["DELETE","/api/v1/projects/{name}/schedule","schedule.delete"],["PUT","/api/v1/settings/providers/{name}","provider.save"],["PUT","/api/v1/settings/google","settings.save"],["PUT","/api/v1/settings/bing","settings.save"],["PUT","/api/v1/settings/cdp","settings.save"],["PUT","/api/v1/projects/{name}/sentiment/settings","settings.save"],["POST","/api/v1/projects/{name}/google/connect","integration.connect_started","google"],["POST","/api/v1/projects/{name}/ga/connect","integration.connect","ga"],["DELETE","/api/v1/projects/{name}/ga/disconnect","integration.disconnect","ga"],["POST","/api/v1/projects/{name}/bing/connect","integration.connect","bing"],["DELETE","/api/v1/projects/{name}/bing/disconnect","integration.disconnect","bing"],["PUT","/api/v1/projects/{name}/gbp/locations/{locationName}/selection","integration.connect","gbp"],["DELETE","/api/v1/projects/{name}/gbp/connection","integration.disconnect","gbp"],["POST","/api/v1/projects/{name}/wordpress/connect","integration.connect","wordpress"],["DELETE","/api/v1/projects/{name}/wordpress/disconnect","integration.disconnect","wordpress"],["POST","/api/v1/projects/{name}/ads/connect","integration.connect","openai_ads"],["DELETE","/api/v1/projects/{name}/ads/connection","integration.disconnect","openai_ads"],["POST","/api/v1/projects/{name}/google-ads/oauth/connect","integration.connect_started","google_ads"],["PUT","/api/v1/projects/{name}/google-ads/selection","integration.connect","google_ads"],["DELETE","/api/v1/projects/{name}/google-ads/connection","integration.disconnect","google_ads"],["POST","/api/v1/projects/{name}/gtm/oauth/connect","integration.connect_started","gtm"],["PUT","/api/v1/projects/{name}/gtm/selection","integration.connect","gtm"],["DELETE","/api/v1/projects/{name}/gtm/connection","integration.disconnect","gtm"],["POST","/api/v1/projects/{name}/traffic/connect/cloudflare","integration.connect","traffic_cloudflare"],["POST","/api/v1/projects/{name}/traffic/connect/vercel","integration.connect","traffic_vercel"],["POST","/api/v1/projects/{name}/traffic/connect/cloud-run","integration.connect","traffic_cloud_run"],["POST","/api/v1/projects/{name}/traffic/connect/wordpress","integration.connect","traffic_wordpress"],["POST","/api/v1/projects/{name}/traffic/sources/{id}/sync","traffic.sync"],["POST","/api/v1/projects/{name}/notifications","notification.save"],["POST","/api/v1/projects/{name}/measurement-plan/draft/actions/publish","measurement_plan.publish"],["POST","/api/v1/projects/{name}/measurement-plan/draft/actions/upsert-target","property_names.save"],["POST","/api/v1/projects/{name}/discover/run","discovery.run"],["POST","/api/v1/keys","api_key.create"],["POST","/api/v1/keys/{id}/revoke","api_key.revoke"]],VS="/api/v1/projects/{name}/google/connections/{type}",CF={gsc:"gsc",ga4:"ga",gbp:"gbp"};function _F(e,n,i){const r=e==="PUT"&&n===`${VS}/property`?"integration.connect":e==="DELETE"&&n===VS?"integration.disconnect":void 0;if(!r)return;const u=i?/\/google\/connections\/([^/?#]+)/.exec(i)?.[1]:void 0,h=u&&CF[decodeURIComponent(u)]||"google";return[e,n,r,h]}const TF=[["GET",/^\/api\/v1\/projects\/\{name\}\/schedule$/,[404]],["*",/^\/api\/v1\/projects\/\{name\}\/measurement-plan(?:\/draft(?:\/.*)?)?$/,[404,409,412]],["GET",/^\/api\/v1\/projects\/\{name\}\/technical-aeo\/runs\/\{runId\}\/progress$/,[404]],["GET",/^\/api\/v1\/projects\/\{name\}\/backlinks\/domains$/,[404]],["POST",/^\/api\/v1\/projects$/,[409]],["PUT",/^\/api\/v1\/projects\/\{name\}$/,[409]]];function EF(e,n,i){return TF.some(([r,u,h])=>(r==="*"||r===e)&&u.test(n)&&h.includes(i))}const RF=/^\/api\/v1\/(?:telemetry|feedback)(?:\/|$)/;function km(e){if(!e.route||RF.test(e.route))return;const n=BC(e.method);if(e.network||typeof e.status=="number"&&e.status>=400){if(e.status===401||typeof e.status=="number"&&e.status<500&&EF(n,e.route,e.status))return;Sm({kind:"api",route:e.route,method:n,status:e.status,network:e.network});return}if(!n||n==="GET")return;const i=_F(n,e.route,e.path)??NF.find(([r,u,,,h])=>r===n&&u===e.route&&(h===void 0||h===e.status));i&&Ho(i[2],i[3]?{integration:i[3]}:{})}function qC(e,n,i){const r=zF(e);if(!r.has(n)&&ey(i)){r.add(n);try{window.sessionStorage.setItem(e,JSON.stringify([...r].slice(-gF)))}catch{}}}function ey(e,n){try{const i=Yt.sender;if(!i||Yt.disabled||!DF())return!1;const r=n??Yt.page,u=AC(r),h={...e,eventId:wm(),uiSessionId:DC(dF),page:r,...u?{tab:u}:{}};return i(h).then(f=>{f&&f.accepted===!1&&(Yt.disabled=!0)},()=>{}),!0}catch{return!1}}function DF(){const e=Yt.now(),n=(Yt.sentAt??=OF(US)).filter(i=>e-i<36e5&&i<=e);if(Yt.sentAt=n,n.length>=fF||n.filter(i=>e-i<6e4).length>=hF)return!1;n.push(e);try{window.sessionStorage.setItem(US,JSON.stringify(n))}catch{}return!0}function zF(e){let n=Yt.memory.get(e);return n||(n=new Set(IF(e)),Yt.memory.set(e,n)),n}function MC(e){try{const n=window.sessionStorage.getItem(e),i=n?JSON.parse(n):[];return Array.isArray(i)?i:[]}catch{return[]}}function IF(e){return MC(e).filter(n=>typeof n=="string")}function OF(e){return MC(e).filter(n=>typeof n=="number"&&Number.isFinite(n))}function PF(e){const n=e instanceof Error?e.name:e&&typeof e=="object"&&"name"in e?String(e.name):void 0;return n&&SC.test(n)?n:void 0}function BC(e){const n=e?.toUpperCase();return n==="GET"||n==="POST"||n==="PUT"||n==="PATCH"||n==="DELETE"?n:void 0}class yn extends Error{code;statusCode;details;constructor(n,i,r,u){super(n),this.name="ApiError",this.code=r??"UNKNOWN",this.statusCode=i,this.details=u}}function rie(e){if(e instanceof yn)return e.details;if(typeof e!="object"||e===null)return;const n=e.error,i=typeof n=="object"&&n!==null?n.details:e.details;return typeof i=="object"&&i!==null&&!Array.isArray(i)?i:void 0}function To(){if(typeof window>"u")return!1;const e=window.__CANONRY_CONFIG__?.demo;return e?.enabled===!0&&e.readOnly===!0&&e.sampleData===!0}function qF(){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 MF(){if(typeof window>"u")return;const e=window.__CANONRY_CONFIG__?.embed?.renderToken;return typeof e=="string"&&e.length>0?e:void 0}function LC(e){const n=MF();if(!n)return e;let i;const r=typeof window<"u"&&window.location?window.location.href:"http://localhost/";try{i=new URL(e,r)}catch{return e}const u=new URL(r).origin;if(i.origin!==u)return e;const f=`${lp().replace(/\/$/,"")}/api/v1`;return i.pathname!==f&&!i.pathname.startsWith(`${f}/`)?e:(i.searchParams.set("token",n),/^[a-z][a-z\d+.-]*:/i.test(e)?i.toString():`${i.pathname}${i.search}${i.hash}`)}function BF(e,n){const i={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&&(i.body=e.body,i.duplex="half"),new Request(n,i)}function UC(){if(typeof window>"u")return null;const e=window.__CANONRY_CONFIG__?.embed;return e?.enabled?e:null}function LF(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showResourceLinks!==!1}function UF(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showAgentBar!==!1}function VF(){return typeof window>"u"?!1:window.__CANONRY_CONFIG__?.agent?.allowViewers===!0}function ty(){return To()}function $F(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showUpdateNotification!==!1}function So(){return KF(Oe["answer-visibility"])}function KF(e){if(typeof window>"u")return!1;const n=window.__CANONRY_CONFIG__?.dashboard;return n?.managedRunKinds!==void 0?n.managedRunKinds.includes(e):e===Oe["answer-visibility"]&&n?.managedSweeps===!0}function GF(){if(typeof window>"u")return null;const e=window.__CANONRY_CONFIG__?.research;if(e?.allowViewers!==!0)return null;const n=e.viewerDailyRunLimit;return{allowViewers:!0,viewerDailyRunLimit:Number.isInteger(n)&&(n??0)>0?n:YK}}function $S(){return GF()?"Analyst":"View only"}function rp(){return UC()!==null}function HF(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,"")+"/api/v1":"/api/v1"}const VC=HF();function FF(){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 lp(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,""):""}function QF(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 ZF(e,n){if(e.protocol!=="http:"&&e.protocol!=="https:"||!QF(e.hostname))return;const i=e.port?`:${e.port}`:"",r=n?n.replace(/\/$/,""):"";return`${e.protocol}//localhost${i}${r}`}function lie(e){return`${e.replace(/\/$/,"")}/api/v1/google/callback`}function cie(e){return`${e.replace(/\/$/,"")}/api/v1/google-marketing/callback`}function YF(){if(!(typeof window>"u"))return ZF(window.location,lp())}function XF(e){return`${lp()}${e}`}function JF(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 WF(){return""}function eQ(){return!!WF()}let $C=null;function KS(e){$C=e}function ny(){$C?.()}const J=gR({baseUrl:FF()});J.interceptors.response.use((e,n)=>(e.status===401&&!n.url.includes("/api/v1/session")&&ny(),e));J.interceptors.request.use(e=>{const n=LC(e.url);return n===e.url?e:BF(e,n)});async function ye(e){const n=await e();if(n.error!==void 0&&n.error!==null){const i=n.response.status;let r=`API ${i}: ${n.response.statusText}`,u,h;if(typeof n.error=="object"&&n.error!==null){const f=n.error.error;if(typeof f=="string")r=f;else if(f&&typeof f=="object"){const b=f;b.message&&(r=b.message),b.code&&(u=b.code),b.details&&(h=b.details)}else{const b=n.error;b.message&&(r=b.message),b.code&&(u=b.code),b.details&&(h=b.details)}}else typeof n.error=="string"&&(r=n.error);throw new yn(r,i,u,h)}if(n.response.status!==204)return n.data}async function Ks(e,n){const i=n?.body!=null,r=await fetch(LC(`${VC}${e}`),{...n,credentials:n?.credentials??"same-origin",headers:{...i?{"Content-Type":"application/json"}:{},...n?.headers}});if(!r.ok){const u=await r.text();let h=`API ${r.status}: ${r.statusText}`,f,b;if(u)try{const v=JSON.parse(u);typeof v.error=="string"?h=v.error:v.error?.message?(h=v.error.message,f=v.error.code,b=v.error.details):v.message&&(h=v.message)}catch{h=u}throw r.status===401&&!e.startsWith("/session")&&!e.startsWith("/auth/")&&ny(),new yn(h,r.status,f,b)}if(r.status!==204)return r.json()}function tQ(e){return ye(()=>fj({client:J,path:{name:e}}))}function uie(e){return ye(()=>bj({client:J,path:{name:e}}))}function Gg(e){return ye(()=>vj({client:J,path:{id:e}}))}function KC(e){return ye(()=>yj({client:J,path:{name:e}}))}function nQ(e,n,i){return ye(()=>HT({client:J,path:{name:e},query:{location:n,limit:i}}))}function GC(e,n){return ye(()=>C8({client:J,path:{name:e},query:{location:n?.location,since:n?.since}}))}function HC(e,n){return ye(()=>nT({client:J,path:{name:e},body:n}))}function aQ(e){return ye(()=>eT({client:J,body:e}))}function iQ(e,n){return ye(()=>zT({client:J,path:{name:e},body:{queries:n}}))}function sQ(e,n){return ye(()=>DT({client:J,path:{name:e},body:{queries:n}}))}function die(e,n){return ye(()=>RT({client:J,path:{name:e},body:{queries:n}}))}function oQ(e,n,i){return ye(()=>PT({client:J,path:{name:e},body:{competitors:n}}))}function mie(e,n,i){return ye(()=>OT({client:J,path:{name:e},body:{competitors:n,...i?.acknowledgeBulkAdd!==void 0?{acknowledgeBulkAdd:i.acknowledgeBulkAdd}:{}}}))}function pie(e,n){return ye(()=>qT({client:J,path:{name:e,id:n}}))}async function hie(e,n){const i=await tQ(e);return HC(e,{displayName:n.displayName??i.displayName??i.name,canonicalDomain:n.canonicalDomain??i.canonicalDomain,ownedDomains:n.ownedDomains??i.ownedDomains,aliases:n.aliases??i.aliases,country:n.country??i.country,language:n.language??i.language,tags:i.tags,labels:i.labels,providers:n.providers??i.providers,providerModels:n.providerModels??i.providerModels??{},locations:n.locations??i.locations,defaultLocation:n.defaultLocation!==void 0?n.defaultLocation:i.defaultLocation,autoExtractBacklinks:i.autoExtractBacklinks,...n.siteAuditMaxPages!==void 0?{siteAuditMaxPages:n.siteAuditMaxPages}:{}})}function rQ(e,n){const i={};return n?.location&&(i.location=n.location),n?.allLocations&&(i.allLocations=!0),n?.noLocation&&(i.noLocation=!0),ye(()=>BT({client:J,path:{name:e},body:i}))}function fie(e,n){return ye(()=>_T({client:J,path:{name:e},body:n}))}async function gie(e,n){await ye(()=>TT({client:J,path:{name:e,label:n}}))}function yie(e,n){return ye(()=>ET({client:J,path:{name:e},body:{label:n}}))}async function bie(e){await ye(()=>tT({client:J,path:{name:e}}))}function vie(){return ye(()=>xj({client:J}))}function GS(){return Ks("/session")}function lQ(e,n){return Ks("/session/setup",{method:"POST",body:JSON.stringify({password:e}),...n?{headers:{Authorization:`Bearer ${n}`}}:{}})}function cQ(e){return Ks("/session",{method:"POST",body:JSON.stringify({password:e})})}function uQ(e){return Ks("/session",{method:"POST",body:JSON.stringify({apiKey:e})})}function dQ(){return Ks("/session",{method:"DELETE"})}function ag(){return ye(()=>XT({client:J}))}function HS(){return Ks("/auth/session")}function mQ(e,n){return Ks("/auth/login",{method:"POST",body:JSON.stringify({name:e,password:n})})}function FS(){return Ks("/auth/logout",{method:"POST"})}function FC(e,n){return ye(()=>ZT({client:J,path:{name:e},body:n}))}async function ay(e){for(let n=0;n<2;n+=1)try{await ye(()=>uE({client:J,body:e}));return}catch(i){if(!(!(i instanceof yn)||i.statusCode>=500)||n===1)return}}function xie(e){return ye(()=>YT({client:J,body:e}))}function wie(e,n){return ye(()=>nE({client:J,path:{name:e},body:n}))}async function Sie(e,n){await ye(()=>eE({client:J,path:{name:e},query:n===void 0?void 0:{expectedUpdatedAt:n}}))}function kie(e){return ye(()=>iE({client:J,path:{name:e}}))}function jie(e,n){return ye(()=>sE({client:J,path:{name:e},body:n}))}async function Aie(e,n){await ye(()=>oE({client:J,path:{name:e,id:n}}))}async function Nie(e,n){const i=await ye(()=>rE({client:J,path:{name:e,id:n}}));return i.ok&&Ho("notification.test"),i}function pQ(e,n,i){return ye(()=>IT({client:J,path:{name:e},body:{provider:n,count:i}}))}function hQ(e){return ye(()=>$T({client:J,body:e}))}function fQ(e){return ye(()=>VT({client:J,body:e??{}}))}function Cie(e,n){const i=YF();return ye(()=>IE({client:J,path:{name:e},body:{type:n,...i?{publicUrl:i}:{}}}))}function _ie(e,n){return ye(()=>OE({client:J,path:{name:e,type:n}}))}function Tie(e,n,i){return ye(()=>qE({client:J,path:{name:e,type:n},body:{propertyId:i}}))}function Eie(e,n,i){return ye(()=>ME({client:J,path:{name:e,type:n},body:{sitemapUrl:i}}))}function gQ(e,n){return ye(()=>BE({client:J,path:{name:e},body:n??{}}))}function Rie(e,n){const i={};return n&&n!=="all"&&(i.window=n),ye(()=>FT({client:J,path:{name:e},query:i}))}function Die(e,n){return ye(()=>VE({client:J,path:{name:e},body:{url:n}}))}function yQ(e,n){return ye(()=>QE({client:J,path:{name:e},body:n??{}}))}function zie(e,n){return ye(()=>FE({client:J,path:{name:e},query:n?{sitemapIndex:n}:void 0}))}function Iie(e,n){return ye(()=>J6({client:J,path:{name:e},body:{sitemapUrls:n}}))}function bQ(e,n){return ye(()=>lR({client:J,path:{name:e},body:n??{}}))}function Oie(e,n){return ye(()=>Z8({client:J,path:{name:e},body:n??{}}))}function Pie(){return ye(()=>wj({client:J}))}function qie(e,n){return ye(()=>WT({client:J,body:{host:e,port:n}}))}function Mie(e,n){return ye(()=>ZE({client:J,path:{name:e},body:n}))}function Bie(e,n){return ye(()=>i8({client:J,path:{name:e},body:{apiKey:n}}))}function Lie(e){return ye(()=>s8({client:J,path:{name:e}}))}function Uie(e,n){return ye(()=>l8({client:J,path:{name:e},body:{siteUrl:n}}))}function Vie(e,n){return ye(()=>d8({client:J,path:{name:e},body:{url:n}}))}function $ie(e,n){return ye(()=>m8({client:J,path:{name:e},body:{}}))}function Kie(e,n){return ye(()=>p8({client:J,path:{name:e},body:n}))}function Gie(e){return ye(()=>JT({client:J,body:{apiKey:e}}))}function vQ(e){return e?/filename\s*=\s*"?([^";]+)"?/i.exec(e)?.[1]??null:null}async function Hie(e,n){const i=await fetch(`${VC}/projects/${encodeURIComponent(e)}/results/export?format=${n}`,{credentials:"same-origin",headers:{}});if(!i.ok)throw km({method:"GET",route:"/api/v1/projects/{name}/results/export",status:i.status}),new yn(`Failed to download results: ${i.status}`,i.status);Ho("export.download",{format:n});const r=await i.blob(),u=URL.createObjectURL(r),h=vQ(i.headers.get("Content-Disposition"))??`canonry-results-${e}.${n}`,f=document.createElement("a");f.href=u,f.download=h,document.body.appendChild(f),f.click(),document.body.removeChild(f),URL.revokeObjectURL(u)}function Fie(e,n){return ye(()=>v8({client:J,path:{name:e},body:{}}))}function Qie(e,n){return ye(()=>f8({client:J,path:{name:e},body:n}))}function Zie(e){return ye(()=>g8({client:J,path:{name:e}}))}function Yie(e,n){return ye(()=>L8({client:J,path:{name:e},body:n}))}function Xie(e,n){return ye(()=>U8({client:J,path:{name:e},body:n}))}function Jie(e,n){return ye(()=>V8({client:J,path:{name:e},body:n}))}function Wie(e,n,i){return ye(()=>$8({client:J,path:{name:e,id:n},body:i??{}}))}function ese(e,n,i){return ye(()=>K8({client:J,path:{name:e,id:n},body:{}}))}function tse(e,n){return ye(()=>j8({client:J,path:{name:e},query:{runId:n}}))}function xQ(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 wQ(e,n){const i=XF(e);try{const r=await fetch(i,{credentials:"same-origin"});if(!r.ok)return{label:n,state:"error",detail:`${n} ${r.status}: ${r.statusText}`,statusCode:r.status,hint:JF(e,r.status)};const u=await r.json(),h=typeof u.version=="string"?u.version:"unknown",f=typeof u.databaseUrlConfigured=="boolean"?u.databaseUrlConfigured:void 0,b=typeof u.lastHeartbeatAt=="string"?u.lastHeartbeatAt:void 0,v=xQ(u.updateAvailable),x=tH.safeParse(u.mcp),S=[h,f===!1?"database not configured":"database configured",b?`heartbeat ${b}`:void 0].filter(Boolean).join(" · ");return{label:n,state:"ok",detail:S,version:h,databaseConfigured:f,lastHeartbeatAt:b,...v?{updateAvailable:v}:{},...x.success?{mcp:x.data}:{}}}catch(r){return{label:n,state:"error",detail:r instanceof Error?r.message:"unreachable",hint:e==="/health"?`Request failed while checking ${i}. If this instance is served behind a sub-path, verify the dashboard basePath and reverse-proxy rewrites.`:void 0}}}function nse(){return ye(()=>_8({client:J}))}function ase(){return ye(()=>T8({client:J}))}function ise(){return ye(()=>D8({client:J}))}function sse(){return ye(()=>E8({client:J}))}function ose(e){return ye(()=>R8({client:J,body:e?{release:e}:{}}))}function rse(){return ye(()=>z8({client:J}))}function lse(){return ye(()=>I8({client:J}))}function cse(e){return ye(()=>O8({client:J,path:{release:e}}))}function use(e,n={}){return ye(()=>q8({client:J,path:{name:e},query:{release:n.release,excludeCrawlers:n.excludeCrawlers?"1":void 0,source:n.source}}))}function dse(e,n={}){return ye(()=>M8({client:J,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 mse(e,n={}){return ye(()=>B8({client:J,path:{name:e},query:{source:n.source}}))}function pse(e,n){return ye(()=>P8({client:J,path:{name:e},body:{release:void 0}}))}async function QS(e,n){return ye(()=>dR({client:J,path:{name:e},query:n}))}async function SQ(e,n){return ye(()=>mR({client:J,path:{name:e},body:{id:n}}))}async function kQ(e,n){return ye(()=>hR({client:J,path:{name:e,id:n}}))}async function jQ(e,n){return ye(()=>pR({client:J,path:{name:e,id:n}}))}async function AQ(e,n){const i=f=>ye(()=>uT({client:J,path:{name:e},query:{...n,include:["assessments","locations"],queryLimit:sN,queryCursor:f}})),r=await i(),u=[...r.queries];let h=r.queryPage?.nextCursor??null;for(;h;){const f=await i(h);u.push(...f.queries),h=f.queryPage?.nextCursor??null}return{...r,queries:u,...r.queryPage?{queryPage:{...r.queryPage,nextCursor:null}}:{}}}function Jd(e){return ye(()=>lT({client:J,path:{name:e}}))}function NQ(e,n){return ye(()=>cT({client:J,path:{name:e},body:n}))}function CQ(e,n,i){return ye(()=>dT({client:J,path:{name:e},query:{...n,cursor:i,limit:50}}))}function _Q(e,n){return ye(()=>mT({client:J,path:{name:e},query:n}))}function TQ(e,n,i){return ye(()=>pT({client:J,path:{name:e},body:{previewToken:n,idempotencyKey:i}}))}function EQ(e){return ye(()=>hT({client:J,path:{name:e}}))}function RQ(e,n,i){return ye(()=>fT({client:J,path:{name:e,jobId:n},query:{attemptCursor:i}}))}const QC={account:null,canWrite:!0,isAdmin:!0},DQ={account:null,canWrite:!1,isAdmin:!1};function zQ(e){const n=e.scopes.includes(PS);return{account:null,canWrite:!e.readOnly&&n,isAdmin:e.projectId===null&&e.scopes.includes(PS)}}const ZC=_.createContext(QC);function IQ({account:e,apiKey:n,apiKeyPending:i=!1,children:r}){const u=i?DQ:n?zQ(n):e?{account:e,canWrite:e.role==="admin",isAdmin:e.role==="admin"}:QC;return l.jsx(ZC.Provider,{value:u,children:r})}function ga(){return _.useContext(ZC)}const YC="View only — your account cannot change this.";function gn(e){return(...n)=>{e(...n)}}const OQ=6e3,PQ=5,qQ=180;let qn=[],MQ=0;const Hg=new Set,Fg=new Map,Qg=new Map;function jm(){const e=[...qn];for(const n of Hg)n(e)}function iy(e){const n=Fg.get(e);n&&(clearTimeout(n),Fg.delete(e));const i=Qg.get(e);i&&(clearTimeout(i),Qg.delete(e))}function XC(e){iy(e);const n=qn.length;qn=qn.filter(i=>i.id!==e),qn.length!==n&&jm()}function ZS(e){iy(e.id),Fg.set(e.id,setTimeout(()=>{Zg(e.id)},e.durationMs))}function BQ(e,n,i){return typeof e=="string"?{title:e,tone:n,durationMs:i}:e}function vn(e,n="negative",i=OQ){const r=BQ(e,n,i),u={id:String(++MQ),title:r.title,detail:r.detail,tone:r.tone??n,durationMs:r.durationMs??i,dedupeKey:r.dedupeKey,cta:r.cta,state:"open"};if(r.dedupeKey){const h=qn.find(f=>f.dedupeKey===r.dedupeKey);if(h){if((r.dedupeMode??"drop")==="drop")return h.id;const f={...h,title:u.title,detail:u.detail,tone:u.tone,durationMs:u.durationMs,cta:u.cta,state:"open"};return qn=qn.map(b=>b.id===h.id?f:b),jm(),ZS(f),h.id}}return qn.length>=PQ&&XC(qn[0].id),qn=[...qn,u],jm(),ZS(u),u.id}function Zg(e){const n=qn.find(i=>i.id===e);!n||n.state==="closing"||(iy(e),qn=qn.map(i=>i.id===e?{...i,state:"closing"}:i),jm(),Qg.set(e,setTimeout(()=>{XC(e)},qQ)))}function LQ(e){return Hg.add(e),()=>{Hg.delete(e)}}function YS(){return qn}const Yg={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",visibilityReport:"getApiV1ProjectsByNameVisibilityReport",queryTracking:"getApiV1ProjectsByNameQueryTracking",technicalAeo:"getApiV1ProjectsByNameTechnicalAeo",runs:"getApiV1ProjectsByNameRuns",runAdmission:"getApiV1ProjectsByNameRunAdmission"};function Pn(e,n){const i=Yg[n];return e.invalidateQueries({predicate:r=>{const u=r.queryKey[0];return typeof u?._id=="string"&&u._id.startsWith(i)}})}function hse(e,n){return e.invalidateQueries({predicate:i=>{const r=i.queryKey[0];return r?.path?.name!==n||typeof r._id!="string"?!1:r._id.startsWith("getApiV1ProjectsByNameMeasurement")||r._id===Yg.queryTracking||r._id===Yg.visibilityReport||r._id==="getApiV1ProjectsByNameQueries"||r._id==="getApiV1ProjectsByName"}})}const UQ=new Set(["getApiV1Projects","getApiV1Runs","getApiV1History","getApiV1NotificationsEvents"]);function VQ(e,n,i){if(!["POST","PUT","PATCH","DELETE"].includes(n.method))return;const u=new URL(n.url).pathname.match(/\/api\/v1\/(.*)$/)?.[1];if(!u||/^(?:telemetry|feedback|auth|session)(?:\/|$)/.test(u))return;const h=u.match(/^projects\/([^/]+)(?:\/(.*))?$/),f=h?h[2]??"":u;if(n.method==="POST"&&/(?:^|\/)(?:[^/]*-preview|preview(?:-[^/]+)?|test|generate)$/.test(f))return;const b=i&&typeof i=="object"?i:null;if(b?.dryRun===!0||u.endsWith("/results/clear")&&b?.confirm!==!0)return;const v=h?decodeURIComponent(h[1]):null,x=h?.[2]?.startsWith("agent/")??!1,S=new Set(v?[v]:[]),j=new Set;if(v)for(const P of e.getQueryCache().getAll()){const M=P.queryKey[0],L=P.state.data,$=M?._id==="getApiV1Projects"&&Array.isArray(L)?L:L&&typeof L=="object"&&"project"in L?[L.project]:M?._id==="getApiV1ProjectsByName"?[L]:[];for(const Q of $)Q&&(Q.name===v||Q.id===v)&&(S.add(Q.name),S.add(Q.id),j.add(Q.id))}const C=P=>{const M=P.queryKey[0];if(x)return M?.path?.name===v&&M._id?.startsWith("getApiV1ProjectsByNameAgent")===!0||P.queryKey[0]==="aero-preview"&&P.queryKey[1]===v;if(M?._id?.startsWith("getApiV1ProjectsByName")&&M.path?.name&&S.has(M.path.name))return!0;const L=P.queryKey[0];if(["projects","project-dashboard-full","project-overview-slim"].includes(L))return j.has(P.queryKey[1]);if(["sentiment","gbp-section-insights","analytics-metrics","aero-preview"].includes(L))return L==="analytics-metrics"&&h?.[2]?.startsWith("competitors")?!1:S.has(P.queryKey[1]);if(L==="setup")return S.has(P.queryKey[2]);const $=P.state.data;return M?._id==="getApiV1RunsById"&&!!$?.projectId&&j.has($.projectId)},T=P=>UQ.has(P.queryKey[0]?._id??""),z=n.method==="POST"&&/^(?:runs|technical-aeo\/runs|discover\/run|backlinks\/extract|google\/gsc\/(?:sync|inspect-sitemap)|bing\/inspect-sitemap|(?:gbp|ads|google-ads|gtm)\/sync)$/.test(f),q=P=>{const M=P.queryKey[0];return T(P)||["getApiV1ProjectsByName","getApiV1ProjectsByNameOverview","getApiV1ProjectsByNameRuns","getApiV1ProjectsByNameTechnicalAeoRuns","getApiV1ProjectsByNameTimeline"].includes(M?._id??"")||P.queryKey[0]==="project-dashboard-full"&&P.queryKey[3]==="overview"||P.queryKey[0]==="project-overview-slim"},R=v?P=>C(P)&&(!z||q(P))||!x&&T(P):P=>!z||q(P);if(e.cancelQueries({predicate:R,type:"active"}),h&&!h[2]&&n.method==="DELETE"){e.removeQueries({predicate:C}),e.setQueriesData({predicate:P=>P.queryKey[0]?._id==="getApiV1Projects"},P=>P?.filter(M=>!S.has(M.name)&&!S.has(M.id))),e.setQueriesData({predicate:P=>P.queryKey[0]?._id==="getApiV1Runs"},P=>P?.filter(M=>!j.has(M.projectId))),e.invalidateQueries({predicate:T});return}e.invalidateQueries({predicate:R})}const $Q=5*6e4,Wd=30*6e4,fse=3e4,gse=6e4,Es=3e4,KQ=2e3,GQ=3e4;let XS;function HQ(){const e=new W_({defaultOptions:{queries:{staleTime:$Q,retry:1,refetchOnWindowFocus:!1}},mutationCache:new e6({onError:(u,h,f,b)=>{b.meta?.skipGlobalErrorToast||vn({title:u instanceof Error?u.message:"An unexpected error occurred",tone:"negative"})}})});XS?.();const n=new WeakSet,i=J.interceptors.request.use(u=>(n.add(u),u)),r=J.interceptors.response.use((u,h,f)=>(u.ok&&n.has(h)&&VQ(e,h,f.body),u));return XS=()=>{J.interceptors.request.eject(i),J.interceptors.response.eject(r)},e}const FQ="modulepreload",QQ=function(e,n){return new URL(e,n).href},JS={},Zi=function(n,i,r){let u=Promise.resolve();if(i&&i.length>0){let x=function(S){return Promise.all(S.map(j=>Promise.resolve(j).then(C=>({status:"fulfilled",value:C}),C=>({status:"rejected",reason:C}))))};const f=document.getElementsByTagName("link"),b=document.querySelector("meta[property=csp-nonce]"),v=b?.nonce||b?.getAttribute("nonce");u=x(i.map(S=>{if(S=QQ(S,r),S in JS)return;JS[S]=!0;const j=S.endsWith(".css"),C=j?'[rel="stylesheet"]':"";if(r)for(let z=f.length-1;z>=0;z--){const q=f[z];if(q.href===S&&(!j||q.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${S}"]${C}`))return;const T=document.createElement("link");if(T.rel=j?"stylesheet":FQ,j||(T.as="script"),T.crossOrigin="",T.href=S,v&&T.setAttribute("nonce",v),document.head.appendChild(T),j)return new Promise((z,q)=>{T.addEventListener("load",z),T.addEventListener("error",()=>q(new Error(`Unable to preload CSS for ${S}`)))})}))}function h(f){const b=new Event("vite:preloadError",{cancelable:!0});if(b.payload=f,window.dispatchEvent(b),!b.defaultPrevented)throw f}return u.then(f=>{for(const b of f||[])b.status==="rejected"&&h(b.reason);return n().catch(h)})},sy=_.createContext({view:null,publish:()=>()=>{}});function ZQ({children:e}){const[n,i]=_.useState(null),r=_.useCallback(u=>(i(u),()=>i(h=>h===u?null:h)),[]);return l.jsx(sy.Provider,{value:_.useMemo(()=>({view:n,publish:r}),[n,r]),children:e})}function yse(e,n){const{publish:i}=_.useContext(sy),r=JSON.stringify(n);_.useEffect(()=>i({project:e,context:JSON.parse(r)}),[i,e,r])}function YQ(e,n){const{view:i}=_.useContext(sy);return i?.project===e&&i.context.view===n.view?i.context:n}var XQ=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(XQ||{});const bse={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},vse={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},JQ=F0;function xse(e){return e.endsWith("%")?{figure:e.slice(0,-1),sign:"%"}:{figure:e,sign:""}}function wse(e,n){return n==="cited"?WH(e):JH(e)}function Sse(e,n){const i=Lc(e);switch(n){case"cited":return`${i} cited (any page)`;case"emerging":return`${i} newly cited (any page)`;case"lost":return`${i} citation lost (any page)`;case"not-cited":return`${i} not cited (any page)`;case"pending":return"Pending"}}function WQ(e){const n=[];if(e.message&&n.push(e.message),e.providers)for(const[i,r]of Object.entries(e.providers)){const u=`[${i}] ${r.message}`;r.raw!==void 0?n.push(`${u}
52
+ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const f of e.seen.entries()){const b=f[1];if(n===f[0]){h(f);continue}if(e.external){const x=e.external.registry.get(f[0])?.id;if(n!==f[0]&&x){h(f);continue}}if(e.metadataRegistry.get(f[0])?.id){h(f);continue}if(b.cycle){h(f);continue}if(b.count>1&&e.reused==="ref"){h(f);continue}}}function Zj(e,n){const i=e.seen.get(n);if(!i)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=f=>{const b=e.seen.get(f);if(b.ref===null)return;const v=b.def??b.schema,x={...v},S=b.ref;if(b.ref=null,S){r(S);const C=e.seen.get(S),T=C.schema;if(T.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(v.allOf=v.allOf??[],v.allOf.push(T)):Object.assign(v,T),Object.assign(v,x),f._zod.parent===S)for(const q in v)q==="$ref"||q==="allOf"||q in x||delete v[q];if(T.$ref&&C.def)for(const q in v)q==="$ref"||q==="allOf"||q in C.def&&JSON.stringify(v[q])===JSON.stringify(C.def[q])&&delete v[q]}const j=f._zod.parent;if(j&&j!==S){r(j);const C=e.seen.get(j);if(C?.schema.$ref&&(v.$ref=C.schema.$ref,C.def))for(const T in v)T==="$ref"||T==="allOf"||T in C.def&&JSON.stringify(v[T])===JSON.stringify(C.def[T])&&delete v[T]}e.override({zodSchema:f,jsonSchema:v,path:b.path??[]})};for(const f of[...e.seen.entries()].reverse())r(f[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 f=e.external.registry.get(n)?.id;if(!f)throw new Error("Schema is missing an `id` property");u.$id=e.external.uri(f)}Object.assign(u,i.def??i.schema);const h=e.external?.defs??{};for(const f of e.seen.entries()){const b=f[1];b.def&&b.defId&&(h[b.defId]=b.def)}e.external||Object.keys(h).length>0&&(e.target==="draft-2020-12"?u.$defs=h:u.definitions=h);try{const f=JSON.parse(JSON.stringify(u));return Object.defineProperty(f,"~standard",{value:{...n["~standard"],jsonSchema:{input:im(n,"input",e.processors),output:im(n,"output",e.processors)}},enumerable:!1,writable:!1}),f}catch{throw new Error("Error converting schema to JSON.")}}function Un(e,n){const i=n??{seen:new Set};if(i.seen.has(e))return!1;i.seen.add(e);const r=e._zod.def;if(r.type==="transform")return!0;if(r.type==="array")return Un(r.element,i);if(r.type==="set")return Un(r.valueType,i);if(r.type==="lazy")return Un(r.getter(),i);if(r.type==="promise"||r.type==="optional"||r.type==="nonoptional"||r.type==="nullable"||r.type==="readonly"||r.type==="default"||r.type==="prefault")return Un(r.innerType,i);if(r.type==="intersection")return Un(r.left,i)||Un(r.right,i);if(r.type==="record"||r.type==="map")return Un(r.keyType,i)||Un(r.valueType,i);if(r.type==="pipe")return Un(r.in,i)||Un(r.out,i);if(r.type==="object"){for(const u in r.shape)if(Un(r.shape[u],i))return!0;return!1}if(r.type==="union"){for(const u of r.options)if(Un(u,i))return!0;return!1}if(r.type==="tuple"){for(const u of r.items)if(Un(u,i))return!0;return!!(r.rest&&Un(r.rest,i))}return!1}const bz=(e,n={})=>i=>{const r=Fj({...i,processors:n});return on(e,r),Qj(r,e),Zj(r,e)},im=(e,n,i={})=>r=>{const{libraryOptions:u,target:h}=r??{},f=Fj({...u??{},target:h,io:n,processors:i});return on(e,f),Qj(f,e),Zj(f,e)},vz={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},xz=(e,n,i,r)=>{const u=i;u.type="string";const{minimum:h,maximum:f,format:b,patterns:v,contentEncoding:x}=e._zod.bag;if(typeof h=="number"&&(u.minLength=h),typeof f=="number"&&(u.maxLength=f),b&&(u.format=vz[b]??b,u.format===""&&delete u.format,b==="time"&&delete u.format),x&&(u.contentEncoding=x),v&&v.size>0){const S=[...v];S.length===1?u.pattern=S[0].source:S.length>1&&(u.allOf=[...S.map(j=>({...n.target==="draft-07"||n.target==="draft-04"||n.target==="openapi-3.0"?{type:"string"}:{},pattern:j.source}))])}},wz=(e,n,i,r)=>{const u=i,{minimum:h,maximum:f,format:b,multipleOf:v,exclusiveMaximum:x,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 h=="number"&&(u.minimum=h,typeof S=="number"&&n.target!=="draft-04"&&(S>=h?delete u.minimum:delete u.exclusiveMinimum)),typeof x=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(u.maximum=x,u.exclusiveMaximum=!0):u.exclusiveMaximum=x),typeof f=="number"&&(u.maximum=f,typeof x=="number"&&n.target!=="draft-04"&&(x<=f?delete u.maximum:delete u.exclusiveMaximum)),typeof v=="number"&&(u.multipleOf=v)},Sz=(e,n,i,r)=>{i.type="boolean"},kz=(e,n,i,r)=>{n.target==="openapi-3.0"?(i.type="string",i.nullable=!0,i.enum=[null]):i.type="null"},jz=(e,n,i,r)=>{i.not={}},Az=(e,n,i,r)=>{},Nz=(e,n,i,r)=>{const u=e._zod.def,h=Aj(u.entries);h.every(f=>typeof f=="number")&&(i.type="number"),h.every(f=>typeof f=="string")&&(i.type="string"),i.enum=h},Cz=(e,n,i,r)=>{const u=e._zod.def,h=[];for(const f of u.values)if(f===void 0){if(n.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof f=="bigint"){if(n.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");h.push(Number(f))}else h.push(f);if(h.length!==0)if(h.length===1){const f=h[0];i.type=f===null?"null":typeof f,n.target==="draft-04"||n.target==="openapi-3.0"?i.enum=[f]:i.const=f}else h.every(f=>typeof f=="number")&&(i.type="number"),h.every(f=>typeof f=="string")&&(i.type="string"),h.every(f=>typeof f=="boolean")&&(i.type="boolean"),h.every(f=>f===null)&&(i.type="null"),i.enum=h},_z=(e,n,i,r)=>{if(n.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},Tz=(e,n,i,r)=>{if(n.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},Ez=(e,n,i,r)=>{const u=i,h=e._zod.def,{minimum:f,maximum:b}=e._zod.bag;typeof f=="number"&&(u.minItems=f),typeof b=="number"&&(u.maxItems=b),u.type="array",u.items=on(h.element,n,{...r,path:[...r.path,"items"]})},Rz=(e,n,i,r)=>{const u=i,h=e._zod.def;u.type="object",u.properties={};const f=h.shape;for(const x in f)u.properties[x]=on(f[x],n,{...r,path:[...r.path,"properties",x]});const b=new Set(Object.keys(f)),v=new Set([...b].filter(x=>{const S=h.shape[x]._zod;return n.io==="input"?S.optin===void 0:S.optout===void 0}));v.size>0&&(u.required=Array.from(v)),h.catchall?._zod.def.type==="never"?u.additionalProperties=!1:h.catchall?h.catchall&&(u.additionalProperties=on(h.catchall,n,{...r,path:[...r.path,"additionalProperties"]})):n.io==="output"&&(u.additionalProperties=!1)},Dz=(e,n,i,r)=>{const u=e._zod.def,h=u.inclusive===!1,f=u.options.map((b,v)=>on(b,n,{...r,path:[...r.path,h?"oneOf":"anyOf",v]}));h?i.oneOf=f:i.anyOf=f},zz=(e,n,i,r)=>{const u=e._zod.def,h=on(u.left,n,{...r,path:[...r.path,"allOf",0]}),f=on(u.right,n,{...r,path:[...r.path,"allOf",1]}),b=x=>"allOf"in x&&Object.keys(x).length===1,v=[...b(h)?h.allOf:[h],...b(f)?f.allOf:[f]];i.allOf=v},Iz=(e,n,i,r)=>{const u=i,h=e._zod.def;u.type="object";const f=h.keyType,v=f._zod.bag?.patterns;if(h.mode==="loose"&&v&&v.size>0){const S=on(h.valueType,n,{...r,path:[...r.path,"patternProperties","*"]});u.patternProperties={};for(const j of v)u.patternProperties[j.source]=S}else(n.target==="draft-07"||n.target==="draft-2020-12")&&(u.propertyNames=on(h.keyType,n,{...r,path:[...r.path,"propertyNames"]})),u.additionalProperties=on(h.valueType,n,{...r,path:[...r.path,"additionalProperties"]});const x=f._zod.values;if(x){const S=[...x].filter(j=>typeof j=="string"||typeof j=="number");S.length>0&&(u.required=S)}},Oz=(e,n,i,r)=>{const u=e._zod.def,h=on(u.innerType,n,r),f=n.seen.get(e);n.target==="openapi-3.0"?(f.ref=u.innerType,i.nullable=!0):i.anyOf=[h,{type:"null"}]},Pz=(e,n,i,r)=>{const u=e._zod.def;on(u.innerType,n,r);const h=n.seen.get(e);h.ref=u.innerType},qz=(e,n,i,r)=>{const u=e._zod.def;on(u.innerType,n,r);const h=n.seen.get(e);h.ref=u.innerType,i.default=JSON.parse(JSON.stringify(u.defaultValue))},Mz=(e,n,i,r)=>{const u=e._zod.def;on(u.innerType,n,r);const h=n.seen.get(e);h.ref=u.innerType,n.io==="input"&&(i._prefault=JSON.parse(JSON.stringify(u.defaultValue)))},Bz=(e,n,i,r)=>{const u=e._zod.def;on(u.innerType,n,r);const h=n.seen.get(e);h.ref=u.innerType;let f;try{f=u.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}i.default=f},Lz=(e,n,i,r)=>{const u=e._zod.def,h=n.io==="input"?u.in._zod.def.type==="transform"?u.out:u.in:u.out;on(h,n,r);const f=n.seen.get(e);f.ref=h},Uz=(e,n,i,r)=>{const u=e._zod.def;on(u.innerType,n,r);const h=n.seen.get(e);h.ref=u.innerType,i.readOnly=!0},Yj=(e,n,i,r)=>{const u=e._zod.def;on(u.innerType,n,r);const h=n.seen.get(e);h.ref=u.innerType},Vz=(e,n,i,r)=>{const u=e._zod.innerType;on(u,n,r);const h=n.seen.get(e);h.ref=u},$z=te("ZodISODateTime",(e,n)=>{B7.init(e,n),Xt.init(e,n)});function sm(e){return HD($z,e)}const Kz=te("ZodISODate",(e,n)=>{L7.init(e,n),Xt.init(e,n)});function Is(e){return FD(Kz,e)}const Gz=te("ZodISOTime",(e,n)=>{U7.init(e,n),Xt.init(e,n)});function Hz(e){return QD(Gz,e)}const Fz=te("ZodISODuration",(e,n)=>{V7.init(e,n),Xt.init(e,n)});function Qz(e){return ZD(Fz,e)}const Zz=(e,n)=>{Tj.init(e,n),e.name="ZodError",Object.defineProperties(e,{format:{value:i=>RR(e,i)},flatten:{value:i=>ER(e,i)},addIssue:{value:i=>{e.issues.push(i),e.message=JSON.stringify(e.issues,gg,2)}},addIssues:{value:i=>{e.issues.push(...i),e.message=JSON.stringify(e.issues,gg,2)}},isEmpty:{get(){return e.issues.length===0}}})},Ia=te("ZodError",Zz,{Parent:Error}),Yz=x0(Ia),Xz=w0(Ia),Jz=Im(Ia),Wz=Om(Ia),eI=IR(Ia),tI=OR(Ia),nI=PR(Ia),aI=qR(Ia),iI=MR(Ia),sI=BR(Ia),oI=LR(Ia),rI=UR(Ia),Ut=te("ZodType",(e,n)=>(Lt.init(e,n),Object.assign(e["~standard"],{jsonSchema:{input:im(e,"input"),output:im(e,"output")}}),e.toJSONSchema=bz(e,{}),e.def=n,e.type=n.type,Object.defineProperty(e,"_def",{value:n}),e.check=(...i)=>e.clone(Ms(n,{checks:[...n.checks??[],...i.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0}),e.with=e.check,e.clone=(i,r)=>Bs(e,i,r),e.brand=()=>e,e.register=((i,r)=>(i.add(e,r),e)),e.parse=(i,r)=>Yz(e,i,r,{callee:e.parse}),e.safeParse=(i,r)=>Jz(e,i,r),e.parseAsync=async(i,r)=>Xz(e,i,r,{callee:e.parseAsync}),e.safeParseAsync=async(i,r)=>Wz(e,i,r),e.spa=e.safeParseAsync,e.encode=(i,r)=>eI(e,i,r),e.decode=(i,r)=>tI(e,i,r),e.encodeAsync=async(i,r)=>nI(e,i,r),e.decodeAsync=async(i,r)=>aI(e,i,r),e.safeEncode=(i,r)=>iI(e,i,r),e.safeDecode=(i,r)=>sI(e,i,r),e.safeEncodeAsync=async(i,r)=>oI(e,i,r),e.safeDecodeAsync=async(i,r)=>rI(e,i,r),e.refine=(i,r)=>e.check(aO(i,r)),e.superRefine=i=>e.check(iO(i)),e.overwrite=i=>e.check(el(i)),e.optional=()=>vw(e),e.exactOptional=()=>VI(e),e.nullable=()=>xw(e),e.nullish=()=>vw(xw(e)),e.nonoptional=i=>QI(e,i),e.array=()=>y(e),e.or=i=>Fe([e,i]),e.and=i=>qI(e,i),e.transform=i=>vg(e,e2(i)),e.default=i=>GI(e,i),e.prefault=i=>FI(e,i),e.catch=i=>YI(e,i),e.pipe=i=>vg(e,i),e.readonly=()=>WI(e),e.describe=i=>{const r=e.clone();return Nc.add(r,{description:i}),r},Object.defineProperty(e,"description",{get(){return Nc.get(e)?.description},configurable:!0}),e.meta=(...i)=>{if(i.length===0)return Nc.get(e);const r=e.clone();return Nc.add(r,i[0]),r},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=i=>i(e),e)),Xj=te("_ZodString",(e,n)=>{S0.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(r,u,h)=>xz(e,r,u);const i=e._zod.bag;e.format=i.format??null,e.minLength=i.minimum??null,e.maxLength=i.maximum??null,e.regex=(...r)=>e.check(az(...r)),e.includes=(...r)=>e.check(oz(...r)),e.startsWith=(...r)=>e.check(rz(...r)),e.endsWith=(...r)=>e.check(lz(...r)),e.min=(...r)=>e.check(am(...r)),e.max=(...r)=>e.check(Gj(...r)),e.length=(...r)=>e.check(Hj(...r)),e.nonempty=(...r)=>e.check(am(1,...r)),e.lowercase=r=>e.check(iz(r)),e.uppercase=r=>e.check(sz(r)),e.trim=()=>e.check(uz()),e.normalize=(...r)=>e.check(cz(...r)),e.toLowerCase=()=>e.check(dz()),e.toUpperCase=()=>e.check(mz()),e.slugify=()=>e.check(pz())}),lI=te("ZodString",(e,n)=>{S0.init(e,n),Xj.init(e,n),e.email=i=>e.check(ND(cI,i)),e.url=i=>e.check(ED(dI,i)),e.jwt=i=>e.check(GD(NI,i)),e.emoji=i=>e.check(RD(mI,i)),e.guid=i=>e.check(pw(yw,i)),e.uuid=i=>e.check(Kj(Cc,i)),e.uuidv4=i=>e.check(CD(Cc,i)),e.uuidv6=i=>e.check(_D(Cc,i)),e.uuidv7=i=>e.check(TD(Cc,i)),e.nanoid=i=>e.check(DD(pI,i)),e.guid=i=>e.check(pw(yw,i)),e.cuid=i=>e.check(zD(hI,i)),e.cuid2=i=>e.check(ID(fI,i)),e.ulid=i=>e.check(OD(gI,i)),e.base64=i=>e.check(VD(kI,i)),e.base64url=i=>e.check($D(jI,i)),e.xid=i=>e.check(PD(yI,i)),e.ksuid=i=>e.check(qD(bI,i)),e.ipv4=i=>e.check(MD(vI,i)),e.ipv6=i=>e.check(BD(xI,i)),e.cidrv4=i=>e.check(LD(wI,i)),e.cidrv6=i=>e.check(UD(SI,i)),e.e164=i=>e.check(KD(AI,i)),e.datetime=i=>e.check(sm(i)),e.date=i=>e.check(Is(i)),e.time=i=>e.check(Hz(i)),e.duration=i=>e.check(Qz(i))});function s(e){return AD(lI,e)}const Xt=te("ZodStringFormat",(e,n)=>{Gt.init(e,n),Xj.init(e,n)}),cI=te("ZodEmail",(e,n)=>{E7.init(e,n),Xt.init(e,n)}),yw=te("ZodGUID",(e,n)=>{_7.init(e,n),Xt.init(e,n)}),Cc=te("ZodUUID",(e,n)=>{T7.init(e,n),Xt.init(e,n)});function uI(e){return Kj(Cc,e)}const dI=te("ZodURL",(e,n)=>{R7.init(e,n),Xt.init(e,n)}),mI=te("ZodEmoji",(e,n)=>{D7.init(e,n),Xt.init(e,n)}),pI=te("ZodNanoID",(e,n)=>{z7.init(e,n),Xt.init(e,n)}),hI=te("ZodCUID",(e,n)=>{I7.init(e,n),Xt.init(e,n)}),fI=te("ZodCUID2",(e,n)=>{O7.init(e,n),Xt.init(e,n)}),gI=te("ZodULID",(e,n)=>{P7.init(e,n),Xt.init(e,n)}),yI=te("ZodXID",(e,n)=>{q7.init(e,n),Xt.init(e,n)}),bI=te("ZodKSUID",(e,n)=>{M7.init(e,n),Xt.init(e,n)}),vI=te("ZodIPv4",(e,n)=>{$7.init(e,n),Xt.init(e,n)}),xI=te("ZodIPv6",(e,n)=>{K7.init(e,n),Xt.init(e,n)}),wI=te("ZodCIDRv4",(e,n)=>{G7.init(e,n),Xt.init(e,n)}),SI=te("ZodCIDRv6",(e,n)=>{H7.init(e,n),Xt.init(e,n)}),kI=te("ZodBase64",(e,n)=>{F7.init(e,n),Xt.init(e,n)}),jI=te("ZodBase64URL",(e,n)=>{Z7.init(e,n),Xt.init(e,n)}),AI=te("ZodE164",(e,n)=>{Y7.init(e,n),Xt.init(e,n)}),NI=te("ZodJWT",(e,n)=>{J7.init(e,n),Xt.init(e,n)}),k0=te("ZodNumber",(e,n)=>{Bj.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(r,u,h)=>wz(e,r,u),e.gt=(r,u)=>e.check(fw(r,u)),e.gte=(r,u)=>e.check(Tf(r,u)),e.min=(r,u)=>e.check(Tf(r,u)),e.lt=(r,u)=>e.check(hw(r,u)),e.lte=(r,u)=>e.check(_f(r,u)),e.max=(r,u)=>e.check(_f(r,u)),e.int=r=>e.check(bw(r)),e.safe=r=>e.check(bw(r)),e.positive=r=>e.check(fw(0,r)),e.nonnegative=r=>e.check(Tf(0,r)),e.negative=r=>e.check(hw(0,r)),e.nonpositive=r=>e.check(_f(0,r)),e.multipleOf=(r,u)=>e.check(gw(r,u)),e.step=(r,u)=>e.check(gw(r,u)),e.finite=()=>e;const i=e._zod.bag;e.minValue=Math.max(i.minimum??Number.NEGATIVE_INFINITY,i.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(i.maximum??Number.POSITIVE_INFINITY,i.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(i.format??"").includes("int")||Number.isSafeInteger(i.multipleOf??.5),e.isFinite=!0,e.format=i.format??null});function m(e){return YD(k0,e)}const CI=te("ZodNumberFormat",(e,n)=>{W7.init(e,n),k0.init(e,n)});function bw(e){return JD(CI,e)}const _I=te("ZodBoolean",(e,n)=>{eD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Sz(e,i,r)});function N(e){return WD(_I,e)}const TI=te("ZodNull",(e,n)=>{tD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>kz(e,i,r)});function de(e){return ez(TI,e)}const EI=te("ZodUnknown",(e,n)=>{nD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Az()});function kn(){return tz(EI)}const RI=te("ZodNever",(e,n)=>{aD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>jz(e,i,r)});function DI(e){return nz(RI,e)}const zI=te("ZodArray",(e,n)=>{iD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Ez(e,i,r,u),e.element=n.element,e.min=(i,r)=>e.check(am(i,r)),e.nonempty=i=>e.check(am(1,i)),e.max=(i,r)=>e.check(Gj(i,r)),e.length=(i,r)=>e.check(Hj(i,r)),e.unwrap=()=>e.element});function y(e,n){return hz(zI,e,n)}const Jj=te("ZodObject",(e,n)=>{oD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Rz(e,i,r,u),gt(e,"shape",()=>n.shape),e.keyof=()=>k(Object.keys(e._zod.def.shape)),e.catchall=i=>e.clone({...e._zod.def,catchall:i}),e.passthrough=()=>e.clone({...e._zod.def,catchall:kn()}),e.loose=()=>e.clone({...e._zod.def,catchall:kn()}),e.strict=()=>e.clone({...e._zod.def,catchall:DI()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=i=>AR(e,i),e.safeExtend=i=>NR(e,i),e.merge=i=>CR(e,i),e.pick=i=>kR(e,i),e.omit=i=>jR(e,i),e.partial=(...i)=>_R(t2,e,i[0]),e.required=(...i)=>TR(n2,e,i[0])});function d(e,n){const i={type:"object",shape:e??{},...qe(n)};return new Jj(i)}function II(e,n){return new Jj({type:"object",shape:e,catchall:kn(),...qe(n)})}const Wj=te("ZodUnion",(e,n)=>{Vj.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Dz(e,i,r,u),e.options=n.options});function Fe(e,n){return new Wj({type:"union",options:e,...qe(n)})}const OI=te("ZodDiscriminatedUnion",(e,n)=>{Wj.init(e,n),rD.init(e,n)});function Ue(e,n,i){return new OI({type:"union",options:n,discriminator:e,...qe(i)})}const PI=te("ZodIntersection",(e,n)=>{lD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>zz(e,i,r,u)});function qI(e,n){return new PI({type:"intersection",left:e,right:n})}const MI=te("ZodRecord",(e,n)=>{cD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Iz(e,i,r,u),e.keyType=n.keyType,e.valueType=n.valueType});function Ke(e,n,i){return new MI({type:"record",keyType:e,valueType:n,...qe(i)})}const bg=te("ZodEnum",(e,n)=>{uD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(r,u,h)=>Nz(e,r,u),e.enum=n.entries,e.options=Object.values(n.entries);const i=new Set(Object.keys(n.entries));e.extract=(r,u)=>{const h={};for(const f of r)if(i.has(f))h[f]=n.entries[f];else throw new Error(`Key ${f} not found in enum`);return new bg({...n,checks:[],...qe(u),entries:h})},e.exclude=(r,u)=>{const h={...n.entries};for(const f of r)if(i.has(f))delete h[f];else throw new Error(`Key ${f} not found in enum`);return new bg({...n,checks:[],...qe(u),entries:h})}});function k(e,n){const i=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new bg({type:"enum",entries:i,...qe(n)})}const BI=te("ZodLiteral",(e,n)=>{dD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Cz(e,i,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 E(e,n){return new BI({type:"literal",values:Array.isArray(e)?e:[e],...qe(n)})}const LI=te("ZodTransform",(e,n)=>{mD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Tz(e,i),e._zod.parse=(i,r)=>{if(r.direction==="backward")throw new kj(e.constructor.name);i.addIssue=h=>{if(typeof h=="string")i.issues.push(Bc(h,i.value,n));else{const f=h;f.fatal&&(f.continue=!1),f.code??(f.code="custom"),f.input??(f.input=i.value),f.inst??(f.inst=e),i.issues.push(Bc(f))}};const u=n.transform(i.value,i);return u instanceof Promise?u.then(h=>(i.value=h,i)):(i.value=u,i)}});function e2(e){return new LI({type:"transform",transform:e})}const t2=te("ZodOptional",(e,n)=>{$j.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Yj(e,i,r,u),e.unwrap=()=>e._zod.def.innerType});function vw(e){return new t2({type:"optional",innerType:e})}const UI=te("ZodExactOptional",(e,n)=>{pD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Yj(e,i,r,u),e.unwrap=()=>e._zod.def.innerType});function VI(e){return new UI({type:"optional",innerType:e})}const $I=te("ZodNullable",(e,n)=>{hD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Oz(e,i,r,u),e.unwrap=()=>e._zod.def.innerType});function xw(e){return new $I({type:"nullable",innerType:e})}const KI=te("ZodDefault",(e,n)=>{fD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>qz(e,i,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function GI(e,n){return new KI({type:"default",innerType:e,get defaultValue(){return typeof n=="function"?n():Cj(n)}})}const HI=te("ZodPrefault",(e,n)=>{gD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Mz(e,i,r,u),e.unwrap=()=>e._zod.def.innerType});function FI(e,n){return new HI({type:"prefault",innerType:e,get defaultValue(){return typeof n=="function"?n():Cj(n)}})}const n2=te("ZodNonOptional",(e,n)=>{yD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Pz(e,i,r,u),e.unwrap=()=>e._zod.def.innerType});function QI(e,n){return new n2({type:"nonoptional",innerType:e,...qe(n)})}const ZI=te("ZodCatch",(e,n)=>{bD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Bz(e,i,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function YI(e,n){return new ZI({type:"catch",innerType:e,catchValue:typeof n=="function"?n:()=>n})}const XI=te("ZodPipe",(e,n)=>{vD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Lz(e,i,r,u),e.in=n.in,e.out=n.out});function vg(e,n){return new XI({type:"pipe",in:e,out:n})}const JI=te("ZodReadonly",(e,n)=>{xD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Uz(e,i,r,u),e.unwrap=()=>e._zod.def.innerType});function WI(e){return new JI({type:"readonly",innerType:e})}const eO=te("ZodLazy",(e,n)=>{wD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>Vz(e,i,r,u),e.unwrap=()=>e._zod.def.getter()});function tO(e){return new eO({type:"lazy",getter:e})}const nO=te("ZodCustom",(e,n)=>{SD.init(e,n),Ut.init(e,n),e._zod.processJSONSchema=(i,r,u)=>_z(e,i)});function aO(e,n={}){return fz(nO,e,n)}function iO(e){return gz(e)}function Ya(e,n){return vg(e2(e),n)}const fe={custom:"custom"};function Ha(e){return XD(k0,e)}const a2=d({id:s(),name:s(),keyPrefix:s(),scopes:y(s()),projectId:s().nullable(),projectName:s().nullable(),readOnly:N(),operator:N().optional(),createdAt:s(),lastUsedAt:s().nullable(),revokedAt:s().nullable()});d({keys:y(a2)});d({name:s().min(1).max(100),scopes:y(s()).min(1).optional(),projectId:s().optional()});a2.extend({key:s()});const j0=k(["used","not-used","unknown","not-applicable"]);j0.enum;const A0=k(["native-auto-v1","search-required-v1"]);A0.enum;const sO=d({maxConcurrency:m().int().positive(),maxRequestsPerMinute:m().int().positive(),maxRequestsPerDay:m().int().positive()}),xg=["gemini","openai","claude","perplexity","muse","local","cdp:chatgpt"],bt=s().min(1),Mo=Ke(s(),s().trim().min(1));s().min(1);const Jt=d({label:s().min(1),city:s().min(1),region:s().min(1),country:s().length(2),timezone:s().optional()}),N0=k(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync","doctor"]);N0.enum;const qm=d({everyDays:m().int().min(1).max(3650),startDate:s().date(),time:s().regex(/^([01]\d|2[0-3]):[0-5]\d$/,"Time must be HH:mm")}).strict();d({id:s(),projectId:s(),kind:N0,cronExpr:s(),recurrence:qm.nullable().optional(),preset:s().nullable().optional(),timezone:s().default("UTC"),enabled:N().default(!0),providers:y(bt).default([]),sourceId:s().nullable().optional(),lastRunAt:s().nullable().optional(),nextRunAt:s().nullable().optional(),createdAt:s(),updatedAt:s()});const oO=s().datetime();d({kind:N0.optional(),preset:s().min(1).optional(),cron:s().min(1).optional(),recurrence:qm.optional(),timezone:s().optional().default("UTC"),enabled:N().optional().default(!0),providers:y(bt).optional().default([]),sourceId:s().optional(),expectedUpdatedAt:oO.nullable().optional()}).refine(e=>[e.preset,e.cron,e.recurrence].filter(n=>n!==void 0).length===1,{message:'Exactly one of "preset", "cron", or "recurrence" must be provided'});const Mm=k(["citation.lost","citation.gained","run.completed","run.failed","insight.critical","insight.high","health.degraded","health.recovered","health.urgent","health.urgent-resolved","review.negative","review.rating-dropped"]);d({id:s(),projectId:s(),channel:E("webhook"),url:s().url(),urlDisplay:s(),urlHost:s(),events:y(Mm),enabled:N().default(!0),source:s().optional(),webhookSecret:s().optional(),createdAt:s(),updatedAt:s()});d({channel:E("webhook"),url:s().url(),events:y(Mm).min(1),source:s().optional()});class rO extends Error{code;statusCode;details;constructor(n,i,r,u){super(i),this.name="AppError",this.code=n,this.statusCode=r,this.details=u}toJSON(){return{error:{code:this.code,message:this.message,...this.details?{details:this.details}:{}}}}}function wg(e,n){return new rO("VALIDATION_ERROR",e,400,n)}function Li(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"}}const tl={metrics:["7d","30d","90d","all"],gaMeasurementAnalysis:["30d","60d","90d"],gaSearchLanding:["7d","28d","90d"],googleAdsMetrics:["7d","14d","30d"],trafficAnalytics:["7d","14d","30d","90d"],organicEvidence:["60d","90d"]};function lO(e){if(e==="all")return"all";const n=String(e);if(!/^[1-9]\d*d?$/.test(n))return null;const i=Number(n.replace(/d$/,""));return Number.isSafeInteger(i)?{days:i}:null}function cO(e){const n=lO(e);if(n===null)throw wg(`Invalid window "${e}".`);return n==="all"?null:n.days}function i2(e){return e.map(n=>cO(n))}const Xn={openai:"openai.com",chatgpt:"chatgpt.com",chatgptLegacy:"chat.openai.com",claude:"claude.ai",perplexity:"perplexity.ai",gemini:"gemini.google.com",bard:"bard.google.com",copilotMicrosoft:"copilot.microsoft.com",copilot:"copilot.com",deepseek:"deepseek.com",metaAi:"meta.ai",grok:"grok.com",you:"you.com",phind:"phind.com"},uO="anthropic.com",dO=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,mO=/[\0-\x1F\x7F-\x9F]/,pO=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\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]/,hO=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;var fO=class{src_Any=dO.source;src_Cc=mO.source;src_Z=hO.source;src_P=pO.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,i=4){const r=this.escapeRE(e),u=this.escapeRE(n),h=`(?:(?!${this.src_ZCc}|${r}|${u}).)`;let f=`${r}${h}{0,1000}${u}`;for(let b=2;b<=i;b++)f=`${r}(?:${h}|${f}){0,1000}${u}`;return f}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")}},Ef={validate:(e,n,i)=>{const r=i.re.get_http_validator();r.lastIndex=n;const u=r.exec(e);return u?u[0].length:0},normalize:(e,n)=>n.normalize(e)},gO={"http:":Ef,"https:":Ef,"ftp:":Ef,"//":{validate:function(e,n,i){const r=i.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,i){const r=i.re.get_mailto_validator();r.lastIndex=n;const u=r.exec(e);return u?u[0].length:0},normalize:(e,n)=>n.normalize(e)}},yO="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",bO="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";function vO(){const e=bO.split("|");return yO.split("|").forEach(n=>{const i=n.indexOf(":"),r=n.slice(0,i);for(const u of n.slice(i+1))e.push(r+u)}),e}var xO={fuzzyLink:!1,fuzzyEmail:!0,fuzzyIP:!1,"---":!1,tlds:vO(),urlAuth:!1,maxLength:1e4},ww=class{schema;index;lastIndex;raw;text;url;constructor(e,n,i,r){const u=e.slice(i,r);this.schema=n.toLowerCase(),this.index=i,this.lastIndex=r,this.raw=u,this.text=u,this.url=u}},wO=class{__opts__;__schemas__;re;constructor(e={}){const{rebuilder:n,...i}=e;this.__opts__={...xO,...i},this.__schemas__={...gO},this.re=n||new fO,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)})}add(e,n=null){if(!n)delete this.__schemas__[e];else{const i={normalize:(r,u)=>u.normalize(r),...n};this.__schemas__[e]=i}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,i;for(i=this.re.get_schema_search(),i.lastIndex=0;(n=i.exec(e))!==null;)if(this.testSchemaAt(e,n[2],i.lastIndex))return!0;if(this.__opts__.fuzzyLink&&this.__schemas__["http:"]&&(i=this.re.get_fuzzy_link_search(),i.lastIndex=0,i.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 h=e.slice(Math.max(0,n.index-65),n.index);if(u.test(h))return!0}}return!1}testSchemaAt(e,n,i){return this.__schemas__[n.toLowerCase()]?this.__schemas__[n.toLowerCase()].validate(e.slice(0,i+this.__opts__.maxLength),i,this):0}match(e){const n=[],i=this.re.get_schema_search();let r,u,h,f,b,v,x=!1,S=!1,j=!1,C=0;if(!e.length)return null;for(i.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,h=this.re.get_mail_name_validator());;){const T=Math.max(C-1,0);if(u&&h&&!j&&(!b||b.index<C))for(u.lastIndex<T&&(u.lastIndex=T);;){const M=u.exec(e);if(!M){j=!0,b=void 0;break}const L=h.exec(e.slice(Math.max(0,M.index-65),M.index));if(L){if(b={schema:"mailto:",index:M.index-L[1].length,lastIndex:M.index+M[0].length},b.index>=C)break;u.lastIndex<T&&(u.lastIndex=T)}}if(r&&!S&&(!f||f.index<C))for(r.lastIndex<T&&(r.lastIndex=T);;){const M=r.exec(e);if(!M){S=!0,f=void 0;break}if(f={schema:"",index:M.index+M[1].length,lastIndex:M.index+M[0].length},f.index>=C)break;r.lastIndex<T&&(r.lastIndex=T)}let z=b;(!z||f&&(f.index<z.index||f.index===z.index&&f.lastIndex>z.lastIndex))&&(z=f);let q;if(!x)for(;;){if(!v){i.lastIndex<T&&(i.lastIndex=T);const $=i.exec(e);if(!$){x=!0;break}v={schema:$[2],index:$.index+$[1].length,lastIndex:$.index+$[0].length}}if(v.index<C){v=void 0;continue}if(z&&v.index>z.index)break;const M=v;v=void 0;const L=this.testSchemaAt(e,M.schema,M.lastIndex);if(L){q={schema:M.schema,index:M.index,lastIndex:M.lastIndex+L};break}}let R=q;if((!R||b&&(b.index<R.index||b.index===R.index&&b.lastIndex>R.lastIndex))&&(R=b),(!R||f&&(f.index<R.index||f.index===R.index&&f.lastIndex>R.lastIndex))&&(R=f),!R)break;R===b?b=void 0:R===f&&(f=void 0);const P=new ww(e,R.schema,R.index,R.lastIndex);P.schema?this.__schemas__[P.schema].normalize(P,this):this.normalize(P),n.push(P),C=R.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 i=this.testSchemaAt(e,n[2],n[0].length);if(!i)return null;const r=new ww(e,n[2],n.index+n[1].length,n.index+n[0].length+i);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 s2=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 SO(e,n){return e.endsWith(n)?e.length===n.length||e[e.length-n.length-1]===".":!1}function kO(e,n){const i=e.length-n.length-2,r=e.lastIndexOf(".",i);return r===-1?e:e.slice(r+1)}function jO(e,n,i){if(i.validHosts!==null){const u=i.validHosts;for(const h of u)if(SO(n,h))return h}let r=0;if(n.startsWith("."))for(;r<n.length&&n[r]===".";)r+=1;return e.length===n.length-r?null:kO(n,e)}function AO(e,n){return e.slice(0,-n.length-1)}const Rf=/[\t\n\r]/g;let Sg=!1;function Sw(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function kw(e,n,i){const r=i-n,u=e.charCodeAt(n)|32;if(r===2)return u===119&&(e.charCodeAt(n+1)|32)===115?1:0;if(r===3){const h=e.charCodeAt(n+1)|32,f=e.charCodeAt(n+2)|32;return u===119&&h===115&&f===115||u===102&&h===116&&f===112?1:0}else if(r===4){const h=e.charCodeAt(n+1)|32,f=e.charCodeAt(n+2)|32,b=e.charCodeAt(n+3)|32;return u===104&&h===116&&f===116&&b===112?1:u===102&&h===105&&f===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 _c(e,n,i=!1){let r=0,u=e.length,h=!1,f=!1;if(Sg=!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 R=e.indexOf(":/",r);if(R!==-1){const P=kw(e,r,R);if(P===1)for(f=!0,r=R+2;e.charCodeAt(r)===47||e.charCodeAt(r)===92;)r+=1;else if(P===2){f=!0,r=R+1;let M=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&M<2;)r+=1,M+=1;if(M<2)return null}else{for(let M=r;M<R;M+=1){const L=e.charCodeAt(M)|32;if(!(L>=97&&L<=122||L>=48&&L<=57||L===46||L===45||L===43)){const $=e.charCodeAt(M);return $===9||$===10||$===13?_c(e.replace(Rf,""),n,i):null}}if(e.charCodeAt(R+2)===47)r=R+3;else return null}}else if(e.charCodeAt(r)!==91){let P=-1;for(let M=r;M<u;M+=1){const L=e.charCodeAt(M);if(L===9||L===10||L===13)return _c(e.replace(Rf,""),n,i);if(L===58){P=M;break}if(L===47||L===92||L===63||L===35)break}if(P!==-1){let M=!1;for(let L=P+1;L<u;L+=1){const $=e.charCodeAt(L);if($===47||$===92||$===63||$===35)break;if($===64){M=!0;break}}if(!M){let L=!0,$=P+1;for(;$<u;$+=1){const Q=e.charCodeAt($);if(Q===47||Q===92||Q===63||Q===35)break;if(Q<48||Q>57){L=!1;break}}if($===P+1&&(L=!1),!L){const Q=kw(e,r,P);if(Q===0){let ae=!1;for(let V=P+1;V<u;V+=1){const Z=e.charCodeAt(V);if(Z===47||Z===92||Z===63||Z===35)break;if(Z===58){ae=!0;break}}if(!ae)return null}else if(f=!0,r=P+1,Q===2){let ae=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&ae<2;)r+=1,ae+=1;if(ae<2)return null}else for(;e.charCodeAt(r)===47||e.charCodeAt(r)===92;)r+=1}}}}}let v=-1,x=-1,S=-1,j=-1,C=!1,T=i,z=r-1,q=-1;if(i&&r<u){const R=e.charCodeAt(r);(!(Sw(R)||R===46||R===95)||R===45)&&(T=!1)}for(let R=r;R<u;R+=1){const P=e.charCodeAt(R);if(P<64)if(P===47||P===35||P===63){u=R;break}else P===58?(j===-1&&(j=R),S=R):P===9||P===10||P===13?C=!0:i&&(P===46?((R-z>64||q===46||q===45)&&(T=!1),z=R):(P<48||P>57)&&(P!==45||q===46)&&(T=!1));else if(f&&P===92){u=R;break}else P===64?(v=R,j=-1):P===93?x=R:P>=65&&P<=90?h=!0:i&&!Sw(P)&&(T=!1);i&&(q=P)}if(C)return _c(e.replace(Rf,""),n,i);if(v!==-1&&v>=r&&v<u&&(r=v+1),e.charCodeAt(r)===91)return x!==-1?e.slice(r+1,x).toLowerCase():null;if(S!==-1&&S>r&&S<u&&j===S&&(u=S),r>=u)return null;i&&T&&v===-1&&S===-1&&x===-1&&e.charCodeAt(u-1)!==46&&u-r<=255&&u-z-1<=63&&q!==45&&(Sg=!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 h?b.toLowerCase():b}function NO(e){if(e.length<7||e.length>15)return!1;let n=0;for(let i=0;i<e.length;i+=1){const r=e.charCodeAt(i);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 CO(e){if(e.length<3)return!1;let n=e.startsWith("[")?1:0,i=e.length;if(e[i-1]==="]"&&(i-=1),i-n>39)return!1;let r=!1;for(;n<i;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 _O(e){return CO(e)||NO(e)}const TO=["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 EO(e){for(const n of TO)if(e.endsWith(n)&&(e.length===n.length||e.charCodeAt(e.length-n.length-1)===46))return!0;return!1}function jw(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function Aw(e){if(e.length>255||e.length===0||!jw(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let n=-1,i=-1;const r=e.length;for(let u=0;u<r;u+=1){const h=e.charCodeAt(u);if(h===46){if(u-n>64||i===46||i===45)return!1;n=u}else if(!(jw(h)||h===45||h===95)||h===45&&i===46)return!1;i=h}return r-n-1<=63&&i!==45}function o2({allowIcannDomains:e=!0,allowPrivateDomains:n=!1,detectIp:i=!0,detectSpecialUse:r=!1,extractHostname:u=!0,mixedInputs:h=!0,validHosts:f=null,validateHostname:b=!0}){return{allowIcannDomains:e,allowPrivateDomains:n,detectIp:i,detectSpecialUse:r,extractHostname:u,mixedInputs:h,validHosts:f,validateHostname:b}}const RO=o2({});function DO(e){return e===void 0?RO:o2(e)}function zO(e,n){return n.length===e.length?"":e.slice(0,-n.length-1)}function IO(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function C0(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 _0(e,n,i,r,u){const h=DO(r);if(typeof e!="string")return u;let f=!1;return h.extractHostname?h.mixedInputs?(f=Aw(e),u.hostname=_c(e,f,h.validateHostname)):u.hostname=_c(e,!1,h.validateHostname):u.hostname=e,h.detectIp&&u.hostname!==null&&(u.isIp=_O(u.hostname),u.isIp)?u:h.validateHostname&&h.extractHostname&&u.hostname!==null&&!(f&&u.hostname===e)&&!Sg&&!Aw(u.hostname)?(u.hostname=null,u):(n===0||u.hostname===null||(n===5&&h.detectSpecialUse&&(u.isSpecialUse=EO(u.hostname)),i(u.hostname,h,u),n===2||u.publicSuffix===null)||(u.domain=jO(u.publicSuffix,u.hostname,h),n===3||u.domain===null)||(u.subdomain=zO(u.hostname,u.domain),n===4)||(u.domainWithoutSuffix=AO(u.domain,u.publicSuffix)),u)}function OO(e,n,i){if(!n.allowPrivateDomains&&e.length>3){const r=e.length-1,u=e.charCodeAt(r),h=e.charCodeAt(r-1),f=e.charCodeAt(r-2),b=e.charCodeAt(r-3);if(u===109&&h===111&&f===99&&b===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="com",!0;if(u===103&&h===114&&f===111&&b===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="org",!0;if(u===117&&h===100&&f===101&&b===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="edu",!0;if(u===118&&h===111&&f===103&&b===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="gov",!0;if(u===116&&h===101&&f===110&&b===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="net",!0;if(u===101&&h===100&&f===46)return i.isIcann=!0,i.isPrivate=!1,i.publicSuffix="de",!0}return!1}const Ao=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]),om=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]),rm=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]),Nw=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]),kg="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",PO=621,qO=625,r2=Ao.length,l2=rm.length,c2=new Uint32Array(l2),Fd=new Uint32Array(l2),jg=new Int32Array(r2).fill(-1);for(let e=0,n=0;e<r2;e+=1)for(let i=om[e];i<om[e+1];i+=1){c2[i]=n;const r=n+rm[i];let u=5381;for(let h=r-1;h>=n;h-=1)u=u*33^kg.charCodeAt(h);Fd[i]=u>>>0,rm[i]===1&&kg.charCodeAt(n)===42&&(jg[e]=i),n=r}let Ui=-1,Ag=0,Ng=0;function Cw(e,n,i,r){if(rm[e]!==r)return!1;const u=c2[e];for(let h=0;h<r;h+=1)if(kg.charCodeAt(u+h)!==n.charCodeAt(i+h))return!1;return!0}function _w(e,n,i,r,u){let h=om[e],f=om[e+1];for(;h<f;){const b=h+f>>>1,v=Fd[b];if(v<n)h=b+1;else if(v>n)f=b;else{for(let x=b;x>=h&&Fd[x]===n;x-=1)if(Cw(x,i,r,u))return x;for(let x=b+1;x<f&&Fd[x]===n;x+=1)if(Cw(x,i,r,u))return x;return-1}}return-1}function Tw(e,n,i){let r=n,u=e.length,h=5381;Ui=-1;for(let b=e.length-1;b>=0;b-=1){const v=e.charCodeAt(b);if(v===46){const x=b+1;let S=_w(r,h>>>0,e,x,u-x);if(S===-1&&(S=jg[r]),S===-1)return Ui!==-1;r=Nw[S],(Ao[r]&i)!==0&&(Ui=r,Ag=x,Ng=u),u=b,h=5381}else h=h*33^v}let f=_w(r,h>>>0,e,0,u);return f===-1&&(f=jg[r]),f!==-1&&(r=Nw[f],(Ao[r]&i)!==0&&(Ui=r,Ag=0,Ng=u)),Ui!==-1}function T0(e,n,i){if(OO(e,n,i))return;const r=(n.allowPrivateDomains?2:0)|(n.allowIcannDomains?1:0);if(Tw(e,qO,r)){i.isIcann=(Ao[Ui]&1)!==0,i.isPrivate=(Ao[Ui]&2)!==0,i.publicSuffix=e.slice(Ng+1);return}if(Tw(e,PO,r)){i.isIcann=(Ao[Ui]&1)!==0,i.isPrivate=(Ao[Ui]&2)!==0,i.publicSuffix=e.slice(Ag);return}i.isIcann=!1,i.isPrivate=!1;const u=e.lastIndexOf(".");i.publicSuffix=u===-1?e:e.slice(u+1)}const Hr=IO();function MO(e,n){return C0(Hr),_0(e,0,T0,n,Hr).hostname}function BO(e,n){return C0(Hr),_0(e,3,T0,n,Hr).domain}function LO(e,n){return C0(Hr),_0(e,5,T0,n,Hr).domainWithoutSuffix}function u2(e,n){return e<n?-1:e>n?1:0}const d2={allowPrivateDomains:!0};new wO({fuzzyLink:!0,fuzzyEmail:!1}).tlds(s2);function Wc(e){if(e==null)return null;const n=e.trim();if(!n)return null;const i=MO(n);return i?i.replace(/^www\./i,"").toLowerCase():null}function UO(e){return e==null||e.trim()===""?"":BO(e,d2)?.toLowerCase()??""}function Lc(e){return Wc(e)??e.trim().toLowerCase().replace(/^www\./,"")}function E0(e){return e==null||e.trim()===""?"":LO(e,d2)?.toLowerCase()??""}function Sae(e){return E0(e)||e}const m2=k(["chatgpt","perplexity","gemini","claude","copilot","grok","deepseek","meta-ai","phind","you-com"]),ri=m2.enum,R0=[{engine:ri.chatgpt,label:"ChatGPT",domains:[Xn.chatgpt,Xn.chatgptLegacy,Xn.openai],tokens:["chatgpt","openai"],labels:["chatgpt","openai"]},{engine:ri.perplexity,label:"Perplexity",domains:[Xn.perplexity],tokens:["perplexity"],labels:["perplexity"]},{engine:ri.gemini,label:"Gemini",domains:[Xn.gemini,Xn.bard],tokens:["gemini","bard"],labels:[]},{engine:ri.claude,label:"Claude",domains:[Xn.claude,uO],tokens:["claude","anthropic"],labels:["claude","anthropic"]},{engine:ri.copilot,label:"Copilot",domains:[Xn.copilotMicrosoft,Xn.copilot],tokens:["copilot"],labels:[]},{engine:ri.grok,label:"Grok",domains:[Xn.grok],tokens:["grok"],labels:[]},{engine:ri.deepseek,label:"DeepSeek",domains:[Xn.deepseek],tokens:["deepseek"],labels:["deepseek"]},{engine:ri["meta-ai"],label:"Meta AI",domains:[Xn.metaAi],tokens:[],labels:[]},{engine:ri.phind,label:"Phind",domains:[Xn.phind],tokens:["phind"],labels:["phind"]},{engine:ri["you-com"],label:"You.com",domains:[Xn.you],tokens:[],labels:[]}];new Map(R0.flatMap(e=>e.tokens.map(n=>[n,e.engine])));new Map(R0.flatMap(e=>e.labels.map(n=>[n,e.engine])));new Map(R0.map(e=>[e.engine,e.label]));const VO=k(["fraction","percent"]),Fa=VO.enum,$O="x-unit";function p2(e,n){return e.meta({[$O]:n})}function we(e=m()){return p2(e,Fa.fraction)}function ot(e=m()){return p2(e,Fa.percent)}Fa.fraction+"",Fa.percent+"";function Df(e,n=!1){const i=new Set,r=[];for(const u of e){const h=n?u.toLowerCase():u;i.has(h)||(i.add(h),r.push(u))}return r}function Ew(e){try{const n=e.includes("://"),i=new URL(n?e:`https://${e}`);if(!n&&(i.pathname!=="/"||i.search||i.hash)||i.username||i.password||i.port)return null;const r=i.hostname.trim().toLowerCase().replace(/^www\./,"");return!r||r.includes("/")||r.includes("?")||r.includes("#")?null:r}catch{return null}}const KO=s().trim().min(1).refine(e=>Ew(e)!==null,{message:"Marketing hosts must be valid hostnames without credentials or ports"}).overwrite(e=>Ew(e)??e),GO=s().trim().min(1),HO=s().trim().regex(/^[a-z]\w{0,39}$/i,{message:"GA4 event names must start with a letter and contain only letters, numbers, or underscores"}),ui=d({marketingHosts:y(KO).overwrite(e=>Df(e,!0)),brandTerms:y(GO).overwrite(e=>Df(e,!0)),leadEventNames:y(HO).overwrite(e=>Df(e))});function FO(){return{marketingHosts:[],brandTerms:[],leadEventNames:["generate_lead"]}}const zf=Object.freeze({marketingHosts:Object.freeze([]),brandTerms:Object.freeze([]),leadEventNames:Object.freeze(["generate_lead"])}),h2=()=>FO(),Cg=k(["never-synced","ready","error"]),QO=k(["landing-page","channel"]),ZO=k(tl.gaMeasurementAnalysis),YO=k(["marketing","all"]),Tc=Is(),nl=d({label:k(["earliest","middle","previous","latest"]),startDate:Tc,endDate:Tc}),If=nl.extend({sessions:m().int().nonnegative()}),Rw=nl.extend({eventCount:m().int().nonnegative()}),Dw=nl.extend({clicks:m().int().nonnegative(),impressions:m().int().nonnegative()}),XO=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()}),Of=nl.extend({eventCount:m().int().nonnegative(),sessions:m().int().nonnegative(),leadRate:we(m().nonnegative()).nullable()}),f2=k(["no-data","sync-not-ready","channel-leads-unfiltered","paid-split-needs-landing-page","sessions-behind-leads","sessions-missing-on-lead-days"]);f2.enum;const zw=d({periods:y(Of),engines:y(d({engine:m2,label:s(),sources:y(s()),periods:y(Of)})),unattributed:d({sources:y(s()),periods:y(Of)})}),JO=d({leadRateAvailable:N(),leadRateUnavailableReason:f2.nullable(),organic:zw,paid:zw}),WO=nl.extend({sessions:m().int().nonnegative(),engagementRate:we(m().min(0).max(1)).nullable(),dailyTotalUsers:m().int().nonnegative().nullable(),dailyNewUsers:m().int().nonnegative().nullable(),metricsAvailable:N(),daysInPeriod:m().int().nonnegative(),daysWithEngagementRate:m().int().nonnegative(),daysWithUserSplit:m().int().nonnegative()}),e9=d({window:ZO,bucketDays:E(30),filters:d({hostScope:YO,marketingHosts:y(s()),pathPrefix:s().nullable(),brandTerms:y(s()),queryMixScope:E("property")}),acquisition:d({status:Cg,error:s().nullable(),syncedAt:s().datetime().nullable(),periods:y(If),channels:y(d({channelGroup:s(),periods:y(If)})),pages:y(d({hostName:s(),landingPage:s(),periods:y(If)}))}),leads:d({status:Cg,error:s().nullable(),syncedAt:s().datetime().nullable(),attributionScope:QO.nullable(),hostAndPathFiltersApplied:N(),periods:y(Rw),channels:y(d({channelGroup:s(),periods:y(Rw)})),aiEngines:JO}),engagement:d({status:k(["ready","unavailable"]),availableFromDate:Tc.nullable(),latestDate:Tc.nullable(),periods:y(WO)}),searchDemand:d({status:k(["ready","unavailable"]),periods:y(XO),queries:y(d({query:s(),classification:k(["branded","non-branded"]),periods:y(Dw)})),pages:y(d({hostName:s(),landingPage:s(),periods:y(Dw)})),latestDate:Tc.nullable()})}),eu=k(["sync","batch"]);eu.enum;const al=Ke(s(),eu),g2=k(["submitting","submitted","ended","ingested","cancelled","failed","unknown"]),Iw=g2.enum;Iw.submitted,Iw.ended;const D0=k(["standard","batch"]),Ow=D0.enum,t9=d({inputTokens:m().int().nonnegative(),cachedInputTokens:m().int().nonnegative(),cacheWriteTokens:m().int().nonnegative(),outputTokens:m().int().nonnegative(),searchCount:m().int().nonnegative()}),n9=t9.extend({pricingTier:D0,estimatedCostMicros:m().int().nonnegative().nullable(),priceSource:Fe([k(["default","override"]),de()])}),y2=d({inputPerMTok:m().nonnegative(),cachedInputPerMTok:m().nonnegative().optional(),cacheWritePerMTok:m().nonnegative().optional(),outputPerMTok:m().nonnegative(),searchPer1k:m().nonnegative().optional(),searchUnit:k(["query","prompt"]).optional(),batchTokenDiscount:m().min(0).max(1).optional()}).strict();d({models:Ke(s().min(1),y2).default({})}).strict();d({enabled:N().default(!1),maxRequestsPerBatch:m().int().positive().optional(),deadlineHours:m().positive().optional()}).strict();const a9=new Intl.Segmenter("en",{granularity:"word"}),i9=/[^\p{L}\p{N}]+/gu,s9=/[\p{L}\p{N}]+/gu,o9=/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}]/u,r9=new RegExp("\\P{ASCII}","u");function l9(e){if(!r9.test(e))return e;let n="";for(const i of e){if(i.charCodeAt(0)<128){n+=i;continue}const r=i.normalize("NFD"),u=r[0];n+=r.length>1&&o9.test(u)?u:i}return n}function b2(e){return l9(e.normalize("NFKC")).toLocaleLowerCase("en")}function v2(e){const n=[];for(const i of a9.segment(e))if(i.isWordLike)for(const r of i.segment.match(s9)??[])n.push(r);return n}function c9(e){return v2(b2(e))}function za(e){return c9(e).join("")}const Pw=new WeakMap;function u9(e){if(!e)return null;const n=b2(e);return{normalized:n,stripped:n.replace(i9,"")}}function d9(e){const n=Pw.get(e);if(n)return n;const i=v2(e.normalized);return Pw.set(e,i),i}function m9(e){const n=new Set;let i=0;for(const r of e){if(!r)continue;const u=za(r);u&&(n.add(u),u.length>i&&(i=u.length))}return{keys:n,longest:i}}function p9(e,n){if(!n||e.keys.size===0)return!1;const i=typeof n=="string"?u9(n):n;if(!i)return!1;let r=!1;for(const h of e.keys)if(i.stripped.includes(h)){r=!0;break}if(!r)return!1;const u=d9(i);for(let h=0;h<u.length;h++){let f="";for(let b=h;b<u.length;b++){if(f+=u[b],e.keys.has(f))return!0;if(f.length>=e.longest)break}}return!1}const h9=d({name:s(),accountName:s().nullable(),type:s().nullable(),role:s().nullable()});d({accounts:y(h9),total:m().int().nonnegative()});const f9=d({id:s(),projectId:s(),accountName:s(),locationName:s(),displayName:s(),primaryCategoryDisplayName:s().nullable(),storefrontAddress:s().nullable(),websiteUri:s().nullable(),placeId:s().nullable(),mapsUri:s().nullable(),additionalCategories:y(s()),description:s().nullable(),serviceArea:Ke(s(),kn()).nullable(),regularHours:Ke(s(),kn()).nullable(),primaryPhone:s().nullable(),openStatus:s().nullable(),openingDate:s().nullable(),selected:N(),syncedAt:s().nullable(),createdAt:s(),updatedAt:s()});d({locations:y(f9),totalDiscovered:m().int().nonnegative(),totalSelected:m().int().nonnegative()});d({selectAllNew:N().default(!0),accountName:s().optional(),switchAccount:N().default(!1)});d({selected:N()});d({locationNames:y(s()).optional(),daysOfMetrics:m().int().positive().max(540).optional(),monthsOfKeywords:m().int().positive().max(18).optional()});d({runId:s(),status:s()});const g9=d({locationName:s(),date:s(),metric:s(),value:m().int()});d({metrics:y(g9),total:m().int().nonnegative()});const y9=d({locationName:s(),periodStart:s(),periodEnd:s(),keyword:s(),valueCount:m().int().nullable(),valueThreshold:m().int().nullable()});d({keywords:y(y9),total:m().int().nonnegative(),thresholdedPct:ot(m().min(0).max(100))});const b9=d({locationName:s(),placeActionLinkName:s(),placeActionType:s(),uri:s().nullable(),isPreferred:N(),providerType:s().nullable()});d({placeActions:y(b9),total:m().int().nonnegative()});const v9=d({locationName:s(),populatedGroupCount:m().int().nonnegative(),syncedAt:s(),attributes:Ke(s(),kn())});d({lodging:y(v9),total:m().int().nonnegative()});const x9=d({name:s(),valueType:s(),values:y(Fe([N(),s()])),unsetValues:y(s()),uris:y(s())}),w9=d({locationName:s(),attributeCount:m().int().nonnegative(),syncedAt:s(),attributes:y(x9)});d({attributes:y(w9),total:m().int().nonnegative()});const S9=d({locationName:s(),placeId:s(),tier:s(),amenities:y(s()),syncedAt:s(),place:Ke(s(),kn())});d({places:y(S9),total:m().int().nonnegative()});const x2=k(["gbp","places"]),Bm=m().int().min(1).max(4),k9=k(["ok","unavailable","error"]),w2=k(["none","baseline","stale","pending","sent","skipped","suppressed"]);w2.enum;const j9=d({locationName:s(),origin:x2,reviewName:s(),starRating:m().int().min(1).max(5).nullable(),negative:N(),comment:s().nullable(),reviewerName:s().nullable(),createTime:s().nullable(),updateTime:s(),replied:N().nullable(),replyComment:s().nullable(),replyUpdateTime:s().nullable(),reviewUri:s().nullable(),firstSeenAt:s(),lastSeenAt:s(),alertState:w2,alertStateAt:s().nullable()}),A9=d({locationName:s(),displayName:s(),reviewsAccess:k9.nullable(),reviewsAccessReason:s().nullable(),reviewsCheckedAt:s().nullable(),rating:m().nullable(),reviewCount:m().int().nonnegative().nullable(),ratingOrigin:x2.nullable(),ratingObservedAt:s().nullable()});d({negativeMaxStars:m().int().min(1).max(4),locations:y(A9),reviews:y(j9),total:m().int().nonnegative()});d({scope:d({locationName:s().nullable(),locationCount:m().int().nonnegative()}),performance:d({totals:Ke(s(),m()),recent7d:Ke(s(),m()),prior7d:Ke(s(),m()),deltaPct:Ke(s(),ot().nullable())}),freshness:d({dataThroughDate:s().nullable(),latestStoredDate:s().nullable(),pendingDays:m().int().nonnegative()}),timeseries:y(d({date:s(),pending:N(),metrics:Ke(s(),m())})),keywords:d({total:m().int().nonnegative(),thresholdedCount:m().int().nonnegative(),thresholdedPct:ot(m().min(0).max(100))}),placeActions:d({total:m().int().nonnegative(),hasReservationCta:N(),hasBookingCta:N(),hasDirectMerchantCta:N()}),lodging:d({lodgingLocationCount:m().int().nonnegative(),populatedLodgingCount:m().int().nonnegative(),emptyLodgingCount:m().int().nonnegative()}),profileCompleteness:d({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 N9={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 C9(e){const n=e.replace(/^BUSINESS_/,"").split("_").filter(Boolean).map(r=>r.toLowerCase());if(n.length===0)return e;const i=n.join(" ");return i.charAt(0).toUpperCase()+i.slice(1)}function kae(e){return N9[e]??C9(e)}const _9=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],T9=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function jae(e){return _9.includes(e)?"conversion":T9.includes(e)?"reach":"other"}const pt=s().trim().min(1),qw=s().regex(/^[a-f0-9]{64}$/i);function E9(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 jn=s().refine(E9,{message:"Expected a calendar date as YYYY-MM-DD."});function R9(e,n){const i=Date.parse(`${e}T00:00:00.000Z`),r=Date.parse(`${n}T00:00:00.000Z`);return Math.floor((r-i)/864e5)+1}const D9=k(["not-connected","selection-required","connected","stale"]),Td=D9.enum,S2=k(["enabled","suspended","closed","canceled","unspecified","unknown"]);S2.enum;const z0=k(["enabled","paused","removed","unknown"]);z0.enum;const k2=k(["enabled","hidden","removed","unknown"]);k2.enum;const I0=k(["customer","campaign"]);I0.enum;const j2=k(["customer-goal","campaign-goal","custom-goal"]);j2.enum;const A2=d({loginCustomerId:pt.nullable(),customerId:pt.nullable(),selectedAt:s().nullable()}).strict(),Pf=d({id:pt,projectId:pt,scopes:y(s()).default([]),selection:A2,lastValidatedAt:s().nullable(),lastInventorySnapshotAt:s().nullable(),lastMetricsSnapshotAt:s().nullable(),createdAt:s(),updatedAt:s()}).strict(),_g=d({resourceName:pt,customerId:pt,parentCustomerId:pt.nullable(),descriptiveName:s().nullable(),currencyCode:s().nullable(),timeZone:s().nullable(),manager:N(),hidden:N(),testAccount:N(),level:m().int().nonnegative(),status:S2}).strict(),z9=d({customers:y(_g),totalAccessible:m().int().nonnegative(),truncated:N(),selection:A2,fetchedAt:s()}).strict();Ue("status",[d({connected:E(!1),status:E(Td["not-connected"]),connection:de(),selectedCustomer:de()}).strict(),d({connected:E(!0),status:E(Td["selection-required"]),connection:Pf,selectedCustomer:de()}).strict(),d({connected:E(!0),status:E(Td.connected),connection:Pf,selectedCustomer:_g}).strict(),d({connected:E(!0),status:E(Td.stale),connection:Pf,selectedCustomer:_g}).strict()]);const I9=d({id:pt,resourceName:pt,name:s(),status:z0,advertisingChannelType:s().nullable(),biddingStrategyType:s().nullable()}).strict(),O9=d({id:pt,resourceName:pt,name:s(),status:k2,category:s(),origin:s(),primaryForGoal:N(),includeInConversionsMetric:N()}).strict(),P9=d({category:s(),origin:s(),biddable:N()}).strict(),q9=d({campaignId:pt,category:s(),origin:s(),biddable:N()}).strict(),M9=d({id:pt,name:s(),conversionActionIds:y(pt)}).strict(),B9=d({campaignId:pt,goalConfigLevel:I0,customGoalId:pt.nullable()}).strict(),L9=d({customerId:pt,fetchedAt:s(),campaigns:y(I9),conversionActions:y(O9),customerConversionGoals:y(P9),campaignConversionGoals:y(q9),campaignConversionGoalsComplete:N().optional(),customConversionGoals:y(M9),campaignGoalConfigurations:y(B9)}).strict(),U9=d({source:j2,category:s().nullable(),origin:s().nullable(),customGoalId:pt.nullable(),biddable:N().nullable(),conversionActionIds:y(pt),primaryConversionActionIds:y(pt),secondaryConversionActionIds:y(pt),missingConversionActionIds:y(pt)}).strict(),V9=d({campaignId:pt,goalConfigLevel:I0,customGoalId:pt.nullable(),missingCustomGoalId:pt.nullable(),goals:y(U9)}).strict();d({customerId:pt,derivedAt:s(),campaigns:y(V9)}).strict();const N2=50,Tg=31,$9=N2*Tg,K9=d({campaignIds:y(pt).min(1).max(N2),startDate:jn,endDate:jn}).strict().superRefine((e,n)=>{if(new Set(e.campaignIds).size!==e.campaignIds.length&&n.addIssue({code:fe.custom,path:["campaignIds"],message:"Campaign IDs must be unique."}),e.endDate<e.startDate){n.addIssue({code:fe.custom,path:["endDate"],message:"endDate must not precede startDate."});return}R9(e.startDate,e.endDate)>Tg&&n.addIssue({code:fe.custom,path:["endDate"],message:`Campaign metrics may cover at most ${Tg} calendar days.`})}),G9=d({campaignId:pt,date:jn,impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),conversionValueMicros:m().int().nonnegative().nullable()}).strict(),H9=d({query:K9,rows:y(G9).max($9),truncated:N(),fetchedAt:s()}).strict(),C2=k(["accessible-customers","inventory","campaign-metrics"]),qf=C2.enum,O0=d({id:pt,projectId:pt,connectionId:pt,runId:pt,kind:C2,customerId:pt.nullable(),payloadChecksum:qw,rawPayloadSha256:qw.nullable(),rawPayloadBytes:m().int().nonnegative().nullable(),redactedFieldCount:m().int().nonnegative(),capturedAt:s(),createdAt:s()}).strict(),F9=Ue("kind",[d({kind:E(qf["accessible-customers"]),data:z9}).strict(),d({kind:E(qf.inventory),data:L9}).strict(),d({kind:E(qf["campaign-metrics"]),data:H9}).strict()]),Q9=d({metadata:O0,payload:F9}).strict().superRefine((e,n)=>{e.metadata.kind!==e.payload.kind&&n.addIssue({code:fe.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),Z9=k(tl.googleAdsMetrics),P0=d({impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),conversionValueMicros:m().int().nonnegative().nullable(),ctr:we().nullable(),cpcMicros:m().int().nonnegative().nullable(),conversionRate:we().nullable(),costPerConversionMicros:m().int().nonnegative().nullable()}),Y9=d({date:jn,origin:k(["provider","filled"]),impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),ctr:we().nullable()}),X9=d({campaignId:pt,name:s().nullable(),status:z0,totals:P0}),J9=d({snapshotId:pt,capturedAt:s(),customerId:pt,currencyCode:s().nullable(),timeZone:s().nullable(),asOfDate:jn,openDate:jn.nullable(),truncated:N(),campaignsQueried:m().int().nonnegative(),campaignsInInventory:m().int().nonnegative()}),W9=d({startDate:jn,endDate:jn,days:m().int().positive(),totals:P0}),eP=d({days:m().int().positive(),prior:W9,change:d({impressions:we().nullable(),clicks:we().nullable(),costMicros:we().nullable(),conversions:we().nullable(),ctr:we().nullable(),conversionRate:we().nullable()})});d({window:Z9,startDate:jn,endDate:jn,days:m().int().positive(),totals:P0,daily:y(Y9),campaigns:y(X9),comparison:eP.nullable(),comparisonUnavailableReason:k(["insufficient-history","no-snapshot"]).nullable(),source:J9.nullable()});const Lm=k(["complete","partial","failed","unsupported"]);Lm.enum;const tP=["branded","non-brand"],Bo=k(tP),q0=k(["all","branded","non-brand"]);function nP(e){const n=e.filter(r=>za(r).length>0);if(n.length===0)return null;const i=m9(n);return i.keys.size===0?null:{matcher:i,classify(r){return p9(i,r)?"branded":"non-brand"}}}const aP=2,iP=s().regex(/^[a-f0-9]{64}$/),Um=s().trim().min(1).max(256),Mw=k(["sensitive","insensitive"]),ge=s().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),sP=s().trim().min(1).refine(e=>Wc(e)!==null,"A competitor domain must be a valid hostname"),oP=Ue("kind",[d({kind:E("exact"),url:s().min(1),pathCase:Mw}).strict(),d({kind:E("prefix"),host:s().min(1),pathPrefix:s().min(1),pathCase:Mw}).strict(),d({kind:E("host"),host:s().min(1)}).strict()]),rP=d({canonicalHost:s().min(1),ownedHosts:y(s().min(1)),names:y(s().min(1))}).strict(),lP=d({projectBrand:rP}).strict(),cP=d({stableKey:ge,label:s().trim().min(1),aliases:y(s().min(1)),identityAliases:y(s().trim().min(1)).optional(),urlMatchers:y(oP),mentionNotApplicable:N(),discoveryIdentity:s().min(1).nullable()}).strict(),_2=d({stableKey:ge,label:s().trim().min(1),domain:sP,aliases:y(s().min(1))}).strict(),uP=d({stableKey:ge,label:s().trim().min(1),parentGroupKey:ge.optional(),targetKeys:y(ge),competitors:y(_2)}).strict(),dP=k(["manual","query-set","template","discovery","research"]),mP=d({templateId:s().trim().min(1).max(256),templateVersion:s().trim().min(1).max(256),template:s().trim().min(1).max(4e3),bindings:Ke(s().trim().min(1).max(128),s().trim().min(1).max(128)),output:s().trim().min(1).max(4e3)}).strict(),T2=d({source:dP,sourceId:s().min(1).nullable(),capturedAt:s().datetime(),template:mP.optional()}).strict(),pP=d({queryId:Um,queryText:s().min(1),provenance:T2}).strict(),Vm=d({providers:y(bt).min(1),models:Ke(bt,s().min(1)),location:Jt.nullable()}).strict(),hP=d({stableKey:s().min(1),queryId:Um,queryText:s().min(1),context:Vm,expectedSnapshots:m().int().nonnegative()}).strict(),M0=Bo,fP=d({targetKey:ge,queryId:Um,queryClass:M0,classificationSource:k(["server","operator"]).optional(),executionNodeKey:s().min(1)}).strict(),B0=d({executionNodeKey:s().min(1),targetKey:ge,queryId:Um}).strict(),E2=d({stableKey:ge,label:s().trim().min(1),kind:E("market"),groupKey:ge.optional(),usageEdges:y(B0)}).strict();function Bw(e){return[e.executionNodeKey,e.targetKey,e.queryId].join("\0")}const $m=d({schemaVersion:E(aP),identities:lP,targets:y(cP),groups:y(uP),querySnapshots:y(pP),assignments:y(fP),executionNodes:y(hP),usageEdges:y(B0),reportingScopes:y(E2).optional(),compiledChecksum:iP}).strict().superRefine((e,n)=>{const i=new Set;for(const b of e.executionNodes)i.has(b.stableKey)&&n.addIssue({code:fe.custom,path:["executionNodes"],message:`Duplicate execution node key "${b.stableKey}"`}),i.add(b.stableKey);const r=new Set(e.targets.map(b=>b.stableKey));e.usageEdges.forEach((b,v)=>{i.has(b.executionNodeKey)||n.addIssue({code:fe.custom,path:["usageEdges",v,"executionNodeKey"],message:`Usage edge references unknown execution node "${b.executionNodeKey}"`}),r.has(b.targetKey)||n.addIssue({code:fe.custom,path:["usageEdges",v,"targetKey"],message:`Usage edge references unknown Target "${b.targetKey}"`})});const u=new Set(e.usageEdges.map(Bw)),h=new Set;e.reportingScopes?.forEach((b,v)=>{if(h.has(b.stableKey)&&n.addIssue({code:fe.custom,path:["reportingScopes",v,"stableKey"],message:`Duplicate reporting scope key "${b.stableKey}"`}),h.add(b.stableKey),b.groupKey!==void 0){const S=e.groups.find(j=>j.stableKey===b.groupKey);(!S||b.usageEdges.some(j=>!S.targetKeys.includes(j.targetKey)))&&n.addIssue({code:fe.custom,path:["reportingScopes",v,"groupKey"],message:"A market must link to an existing group containing all its assigned properties."})}const x=new Set;b.usageEdges.forEach((S,j)=>{const C=Bw(S);u.has(C)||n.addIssue({code:fe.custom,path:["reportingScopes",v,"usageEdges",j],message:`Reporting scope "${b.stableKey}" references a usage edge that this revision does not contain.`}),x.has(C)&&n.addIssue({code:fe.custom,path:["reportingScopes",v,"usageEdges",j],message:`Reporting scope "${b.stableKey}" repeats a usage edge.`}),x.add(C)})}),e.assignments.forEach((b,v)=>{r.has(b.targetKey)||n.addIssue({code:fe.custom,path:["assignments",v,"targetKey"],message:`Assignment references unknown Target "${b.targetKey}"`})});const f=new Map;e.groups.forEach((b,v)=>{f.has(b.stableKey)&&n.addIssue({code:fe.custom,path:["groups",v,"stableKey"],message:"Duplicate group stable key "+b.stableKey}),f.set(b.stableKey,b)}),e.groups.forEach((b,v)=>{const x=b.parentGroupKey;if(x===void 0)return;if(x===b.stableKey){n.addIssue({code:fe.custom,path:["groups",v,"parentGroupKey"],message:"A group cannot be its own parent."});return}const S=f.get(x);if(!S){n.addIssue({code:fe.custom,path:["groups",v,"parentGroupKey"],message:"Group parent does not exist: "+x});return}const j=new Set(S.targetKeys);b.targetKeys.forEach((z,q)=>{j.has(z)||n.addIssue({code:fe.custom,path:["groups",v,"targetKeys",q],message:"Group target membership must be a subset of its parent."})});const C=new Set([b.stableKey]);let T=S;for(;T.parentGroupKey!==void 0;){if(C.has(T.stableKey)){n.addIssue({code:fe.custom,path:["groups",v,"parentGroupKey"],message:"Group parent relationships cannot contain a cycle."});break}C.add(T.stableKey);const z=f.get(T.parentGroupKey);if(!z)break;T=z}});for(const b of e.groups)for(const v of b.targetKeys)r.has(v)||n.addIssue({code:fe.custom,path:["groups"],message:`Group "${b.stableKey}" references unknown Target "${v}"`})}),L0=100;function _o(e){return d({items:y(e),nextCursor:s().min(1).nullable(),totalEstimate:m().int().nonnegative().optional()}).strict()}const tu=k(["no_completed_run","plan_v1","no_population","evidence_incomplete","identity_ambiguous","not_applicable"]),pn=Ue("state",[d({state:E("available"),value:we(),numerator:m().int().nonnegative().optional(),denominator:m().int().positive().optional(),unattributed:m().int().positive().optional(),unchecked:m().int().positive().optional()}).strict().superRefine((e,n)=>{e.unattributed!==void 0&&e.unchecked!==void 0&&n.addIssue({code:"custom",path:["unchecked"],message:"A metric reads one signal: unattributed (mention) and unchecked (citation) cannot share it"})}),d({state:E("unavailable"),reason:tu}).strict()]),Eo=Ue("state",[d({state:E("available"),value:m().int().nonnegative(),numerator:m().int().nonnegative().optional(),denominator:m().int().positive().optional()}).strict(),d({state:E("unavailable"),reason:tu}).strict()]),R2=k(["all","group","market","property"]),ea=q0,gP="non-brand",yP=k(["label-asc","label-desc","citationCoverage-asc","citationCoverage-desc","mentionCoverage-asc","mentionCoverage-desc"]),U0=k(["not_measured","queued","running","complete","partial","failed"]),bP=k(["run_measurement","review_flags","complete_setup","republish_setup","none"]);d({scope:R2,groupKey:ge.optional(),marketKey:ge.optional(),targetKey:ge.optional(),queryClass:ea.optional(),provider:bt.optional(),location:s().trim().min(1).optional(),from:s().trim().min(1).optional(),to:s().trim().min(1).optional(),runId:s().trim().min(1).optional(),search:s().optional(),sort:yP.optional(),cursor:s().trim().min(1).optional(),limit:m().int().positive().max(L0).optional(),compact:N().optional()}).strict();const vP=d({provider:bt,mentionCoverage:pn,citationCoverage:pn}).strict(),xP=d({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(),Eg=d({groupKey:ge,label:s().trim().min(1)}).strict(),wP=d({targetKey:ge,label:s().min(1),metro:Eg.nullable().optional(),otherMetros:y(Eg).min(1).optional(),mentionCoverage:pn,citationCoverage:pn,providers:y(vP),flags:m().int().nonnegative()}).strict(),SP=d({kind:k(["project","competitor"]),stableKey:s().min(1),label:s().min(1),domain:s().min(1),credits:m().int().nonnegative(),share:we(m().min(0).max(1))}).strict(),kP=d({groupKey:ge,queryClass:E("non-brand"),denominator:m().int().positive(),entries:y(SP)}).strict();d({mode:k(["active-v1","active-v2"]),scope:d({kind:R2,key:s().min(1).optional(),label:s().min(1)}).strict(),queryClass:ea,measurement:d({state:U0,currentRunId:s().min(1).optional(),displayedRunId:s().min(1).optional(),completed:m().int().nonnegative(),expected:m().int().nonnegative(),completedAt:s().datetime().optional(),includesHistoricalData:N().optional()}).strict(),nextAction:d({kind:bP,count:m().int().nonnegative().optional()}).strict(),metrics:d({propertiesMentioned:Eo,mentionCoverage:pn,citationCoverage:pn,brandPresence:pn,sov:pn.describe("Deprecated alias of brandPresence carrying the identical value. Remove once the browser migrates.")}).strict(),properties:_o(wP),outcomes:xP,flags:d({total:m().int().nonnegative()}).strict(),namedShareOfVoice:kP.optional(),detailsOmitted:y(s()).optional()}).strict();const D2=k(["sources","answers","other-queries"]),jP=D2.enum;jP.sources;d({targetKey:ge,queryClass:ea.optional(),provider:bt.optional(),location:s().trim().min(1).optional(),runId:s().trim().min(1).optional(),shape:D2.optional(),cursor:s().trim().min(1).optional(),limit:m().int().positive().max(L0).optional()}).strict();const z2=1,nu=m().int().positive(),bn=s().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),au=s().trim().min(1).max(256),Lw=k(["sensitive","insensitive"]);function lm(e){const n=Wc(e);if(!n)throw new Error(`Invalid measurement host: ${e}`);return n}function AP(e){const n=[];let i=!1;for(let r=0;r<e.length;r++){const u=e[r];u==="/"?(i||n.push(u),i=!0):(n.push(u),i=!1)}for(;n.length>1&&n.at(-1)==="/";)n.pop();return n.length?n.join(""):"/"}function Uw(e){try{return decodeURI(e).normalize("NFC").toLowerCase()}catch{return e.normalize("NFC").toLowerCase()}}function I2(e){const n=new URL(`https://measurement.invalid${e}`).pathname;return AP(n.replace(/%[0-9a-f]{2}/gi,i=>i.toUpperCase()))}function Rg(e){const n=e.trim();if(!n||n.includes("?")||n.includes("#")||n.includes("://")||n.includes("\\"))throw new Error(`Invalid measurement path prefix: ${e}`);const i=n.startsWith("/")?n:`/${n}`;for(const r of i.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 I2(i)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}}function NP(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 Vw(e){const n=e.trim();if(!n||n.includes("\\"))throw new Error(`Invalid exact measurement URL: ${e}`);let i;try{i=new URL(n)}catch{throw new Error(`Invalid exact measurement URL: ${e}`)}if(i.protocol!=="http:"&&i.protocol!=="https:"||i.username||i.password||i.port||i.search||i.hash)throw new Error(`Invalid exact measurement URL: ${e}`);const r=lm(i.hostname),u=Rg(NP(n));return`https://${r}${u}`}const Uc=s().trim().min(1).refine(e=>{try{return lm(e),!0}catch{return!1}},"A target URL matcher host must be a valid hostname").overwrite(e=>lm(e)),CP=s().trim().min(1).refine(e=>{try{return Rg(e),!0}catch{return!1}},"A target URL matcher pathPrefix must be an absolute path without query or fragment").overwrite(e=>Rg(e)),_P=s().trim().min(1).refine(e=>{try{return Vw(e),!0}catch{return!1}},"A target exact matcher must be an HTTP(S) URL without credentials, port, query, or fragment").overwrite(e=>Vw(e)),TP=Ue("kind",[d({kind:E("exact"),url:_P,pathCase:Lw}).strict(),d({kind:E("prefix"),host:Uc,pathPrefix:CP,pathCase:Lw}).strict(),d({kind:E("host"),host:Uc}).strict()]),O2=s().trim().min(1).max(256).refine(e=>za(e).length>0,"A target alias must contain mention text"),EP=Ke(s().trim().min(1),s()),RP=Uc,P2=d({stableKey:bn,label:s().trim().min(1),urls:y(TP).min(1),aliases:y(O2),metadata:EP.optional()}).strict(),V0=d({stableKey:bn,label:s().trim().min(1),targetKeys:y(bn).min(1),competitors:y(RP).optional()}).strict(),q2=d({targetKey:bn,queryIds:y(au).min(1),context:Jt.nullable().optional()}).strict();function DP(e,n=i=>i){const i=new Set,r=new Set;for(const u of e){const h=n(u);i.has(h)&&r.add(h),i.add(h)}return r}function Mf(e,n,i,r,u){for(const h of DP(n,u))e.addIssue({code:"custom",path:[...i],message:`Duplicate ${r}: ${h}`})}function $w(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:lm(n.hostname),pathname:I2(n.pathname||"/")}}function zP(e,n,i,r){return e===i||(n==="insensitive"||r==="insensitive")&&Uw(e)===Uw(i)}function IP(e,n){if(e.kind!==n.kind)return!1;const i=$w(e),r=$w(n);return i.host!==r.host?!1:e.kind==="host"||n.kind==="host"?!0:zP(i.pathname,e.pathCase,r.pathname,n.pathCase)}function OP(e){const n=new Set;return[...e].sort(u2).filter(i=>{const r=za(i);return n.has(r)?!1:(n.add(r),!0)})}const M2=d({schemaVersion:E(z2),targets:y(P2).min(1),groups:y(V0).optional(),targetQuerySelections:y(q2).optional()}).strict().superRefine((e,n)=>{const i=e.groups??[],r=e.targetQuerySelections??[];Mf(n,e.targets.map(v=>v.stableKey),["targets"],"target stable key"),Mf(n,i.map(v=>v.stableKey),["groups"],"group stable key");const u=new Set(e.targets.map(v=>v.stableKey)),h=new Set(i.map(v=>v.stableKey));for(const v of u)h.has(v)&&n.addIssue({code:"custom",path:["groups"],message:`Target and group stable keys must be globally unique: ${v}`});const f=new Map,b=[];e.targets.forEach((v,x)=>{for(const S of OP(v.aliases)){const j=za(S),C=f.get(j);C&&C!==v.stableKey&&n.addIssue({code:"custom",path:["targets",x,"aliases"],message:`Target alias is already assigned to target ${C}: ${S}`}),f.set(j,v.stableKey)}v.urls.forEach((S,j)=>{b.find(T=>T.targetKey!==v.stableKey&&IP(T.matcher,S))&&n.addIssue({code:"custom",path:["targets",x,"urls",j],message:"Target URL matcher has an equal-specificity cross-target tie"}),b.push({targetKey:v.stableKey,matcher:S})})}),i.forEach((v,x)=>{Mf(n,v.targetKeys,["groups",x,"targetKeys"],"group target key");for(let S=0;S<v.targetKeys.length;S++){const j=v.targetKeys[S];u.has(j)||n.addIssue({code:"custom",path:["groups",x,"targetKeys",S],message:`Unknown target: ${j}`})}}),r.forEach((v,x)=>{u.has(v.targetKey)||n.addIssue({code:"custom",path:["targetQuerySelections",x,"targetKey"],message:`Unknown target: ${v.targetKey}`})})});M2.transform(e=>({...e,groups:e.groups??[],targetQuerySelections:e.targetQuerySelections??[]}));d({expectedActiveRevision:nu.nullable(),plan:M2}).strict();const PP=d({queryId:au,queryText:s().min(1)}).strict(),$0=d({stableKey:s().min(1),queryText:s().min(1),context:Jt.nullable(),expectedSnapshots:m().int().nonnegative()}).strict(),qP=d({kind:E("baseline"),executionNodeKey:s().min(1),queryId:au}).strict(),MP=d({kind:E("target"),executionNodeKey:s().min(1),queryId:au,targetKey:bn}).strict(),Dg=Ue("kind",[qP,MP]),B2=d({code:E("target-alias-prefix-overlap"),message:s().min(1),targetKeys:y(bn).min(1),aliases:y(s().min(1)).min(1)}).strict(),L2=P2.extend({mentionNotApplicable:N()}),U2=d({schemaVersion:E(z2),defaultContext:Jt.nullable(),effectiveOwnedHosts:y(Uc),projectCanonicalHost:Uc,projectBrandNames:y(O2),targets:y(L2),groups:y(V0),targetQuerySelections:y(q2),querySnapshots:y(PP),executionNodes:y($0),usageEdges:y(Dg),warnings:y(B2)}).strict(),BP=U2,V2=Ue("schemaVersion",[U2,$m]),K0=s().regex(/^[a-f0-9]{64}$/),G0=s().datetime(),$2=d({schemaVersion:E(1),language:s().min(1).optional(),providers:y(s().min(1)).min(1),models:Ke(s().min(1),s().min(1)),checksum:s().regex(/^[a-f0-9]{64}$/)}).strict(),LP=d({groups:y(bn).optional(),targets:y(bn).optional()}).strict(),UP=d({groups:y(bn),targets:y(bn),queries:y(s().min(1)),resolvedTargets:y(bn)}).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"})});d({stableKey:bn,retiredAt:s().datetime()});d({active:d({revision:nu,checksum:K0,createdAt:G0,plan:V2}).nullable()});d({versions:y(d({revision:nu,checksum:K0,createdAt:G0,active:N()}))});d({version:d({revision:nu,checksum:K0,createdAt:G0,active:N(),plan:V2})});const Qd=d({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(),VP=k(["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"]),K2=d({id:VP,severity:k(["fail","warn"]),message:s().min(1),path:y(Fe([s(),m().int()]))}).strict(),$P=d({baseline:m().int().nonnegative(),target:m().int().nonnegative()}).strict(),G2=d({ok:E(!0),checks:y(K2),executionNodes:y($0),dedupSaved:m().int().nonnegative(),usageEdges:$P,estCostUsd:de(),plan:BP,warnings:y(B2),counts:Qd}).strict(),H2=d({ok:E(!1),checks:y(K2).min(1),executionNodes:y($0).length(0),dedupSaved:E(0),usageEdges:d({baseline:E(0),target:E(0)}).strict(),estCostUsd:de()}).strict();Ue("ok",[G2,H2]);const Ed=d({targetKey:bn,context:Jt.nullable(),queryIds:y(au)}).strict();function Kw(e){return d({added:y(e),removed:y(e),changed:y(d({stableKey:bn,before:e,after:e}).strict()),unchanged:y(bn)}).strict()}const KP=G2.extend({diff:d({activeRevision:nu.nullable(),targets:Kw(L2),groups:Kw(V0),querySelections:d({added:y(Ed),removed:y(Ed),changed:y(d({targetKey:bn,before:Ed,after:Ed}).strict()),unchanged:y(d({targetKey:bn,context:Jt.nullable()}).strict())}).strict(),execution:d({addedNodeKeys:y(s().min(1)),removedNodeKeys:y(s().min(1)),addedUsageEdges:y(Dg),removedUsageEdges:y(Dg),counts:d({before:Qd.nullable(),after:Qd,delta:Qd.nullable()}).strict()}).strict()}).strict()}).strict(),GP=H2.extend({diff:de()}).strict();Ue("ok",[KP,GP]);const H0=k(["PROVIDER_AUTH","PROVIDER_BILLING","RATE_LIMITED","PROVIDER_UNAVAILABLE","NETWORK","TIMEOUT","PARSE_ERROR","UNKNOWN"]),Aae=H0.enum,ta=k(["queued","running","completed","partial","failed","cancelled"]),Nt=ta.enum,No=k(["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"]),Oe=No.enum;d({kind:No.optional(),excludeKind:No.optional(),excludeKinds:Ya(e=>{const n=typeof e=="string"?[e]:Array.isArray(e)?e:null;return n?[...new Set(n.flatMap(i=>typeof i=="string"?i.split(",").map(r=>r.trim()):[i]))]:e},y(No).max(No.options.length)).optional(),status:ta.optional()});const Km=k(["manual","scheduled","config-apply","backfill","probe"]),Ga=Km.enum,Ki=k(["cited","not-cited"]),Ec=Ki.enum,cm=k(["visible","not-visible"]);cm.enum;const Vc=k(["mentioned","not-mentioned"]);Vc.enum;const F2=k(["new","cited","lost","emerging","not-cited"]);F2.enum;const HP=k(["new","mentioned","lost","emerging","not-mentioned"]);HP.enum;const FP=k([Ga.manual,Ga.probe]);d({kind:E(Oe["answer-visibility"]).optional(),trigger:FP.optional(),providers:y(bt).optional(),queries:y(s().min(1)).min(1).optional(),measurementScope:LP.optional(),location:s().min(1).optional(),allLocations:N().optional(),noLocation:N().optional(),dispatchMode:eu.optional(),force:N().optional()}).refine(e=>+!!e.location+ +!!e.allLocations+ +!!e.noLocation<=1,{message:'Only one of "location", "allLocations", or "noLocation" may be provided'});const Q2=d({code:H0,consecutiveRuns:m().int().positive(),since:s(),latestRunId:s(),retryAfter:s()}),QP=d({message:s(),raw:kn().optional(),code:H0.optional(),skipped:N().optional()}),ZP=d({message:s().optional(),providers:Ke(s(),QP).optional()}),YP=Ke(s(),E(eu.enum.batch)),XP=d({id:s(),provider:s(),model:s(),status:g2,requestCount:m().int().nonnegative(),ingestedCount:m().int().nonnegative(),recordedCount:m().int().nonnegative(),submittedAt:s().nullable(),endedAt:s().nullable(),deadlineAt:s(),error:s().nullable()}),JP=d({provider:s(),pricingTier:D0,answers:m().int().nonnegative(),inputTokens:m().int().nonnegative(),cachedInputTokens:m().int().nonnegative(),cacheWriteTokens:m().int().nonnegative(),outputTokens:m().int().nonnegative(),searchCount:m().int().nonnegative(),estimatedCostMicros:m().int().nonnegative().nullable(),unpricedAnswers:m().int().nonnegative()}),WP=d({sourceId:s().nullable().optional(),id:s(),projectId:s(),kind:No,status:ta,trigger:Km.default("manual"),measurementPlanVersionId:s().nullable().optional(),measurementManifest:Ke(s(),kn()).nullable().optional(),measurementScope:UP.nullable().optional(),measurementExecutionIdentity:$2.nullable().optional(),location:s().nullable().optional(),queries:y(s()).nullable().optional(),startedAt:s().nullable().optional(),finishedAt:s().nullable().optional(),error:ZP.nullable().optional(),queryBasketRevision:m().int().nullable().optional(),dispatchModes:YP.optional(),skippedProviders:Ke(s(),Q2).optional(),createdAt:s()}),Gw=d({refused:N(),retryAfter:s().nullable(),providers:Ke(s(),Q2)});function F0(e){if(e.providers){const n=Object.entries(e.providers);if(n.length===1){const[i,r]=n[0];return`${i}: ${r.message}`}if(n.length>1)return n.map(([i,r])=>`${i}: ${r.message}`).join(" • ")}return e.message??"Run failed."}const Gm=d({uri:s(),title:s()}),eq=d({status:k(["applied","ignored","browser-implicit","unknown"]),resolved:Jt.nullable().optional()}),Z2=d({id:s(),runId:s(),queryId:s(),query:s().optional(),provider:bt,citationState:Ki,answerMentioned:N().optional(),visibilityState:cm.optional(),mentionState:Vc.optional(),transition:F2.optional(),answerText:s().nullable().optional(),citedDomains:y(s()).default([]),citedUrls:y(s()).nullable().default(null),captureStatus:Fe([Lm,de()]).default(null),sourceCount:m().int().nonnegative().nullable().default(null),resolvedCount:m().int().nonnegative().nullable().default(null),captureVersion:m().int().positive().nullable().default(null),retrievalStatus:Fe([j0,de()]).default(null),retrievalContract:Fe([A0,de()]).default(null),competitorOverlap:y(s()).default([]),citedCompetitorDomains:y(s()).default([]),mentionedCompetitorDomains:y(s()).default([]),mentionedCompetitorTerms:y(s()).default([]),recommendedCompetitors:y(s()).default([]),matchedTerms:y(s()).default([]),groundingSources:y(Gm).default([]),searchQueries:y(s()).default([]),model:s().nullable().optional(),servedModel:s().nullable().optional(),location:s().nullable().optional(),requestedContext:Jt.nullable().optional(),supportedContext:eq.nullable().optional(),dispatchMode:Fe([eu,de()]).optional(),stopReason:s().nullable().optional(),usage:n9.nullable().optional(),createdAt:s()});d({snapshots:y(Z2),total:m().int().nonnegative()});const tq=d({queryId:s().nullable(),query:s().nullable(),run1State:Ki.nullable(),run2State:Ki.nullable(),run1AnswerMentioned:N().nullable(),run2AnswerMentioned:N().nullable(),run1VisibilityState:cm.nullable(),run2VisibilityState:cm.nullable(),run1MentionState:Vc.nullable().optional(),run2MentionState:Vc.nullable().optional(),changed:N(),visibilityChanged:N()});d({run1:s(),run2:s(),diff:y(tq)});const nq=d({totalQueries:m().int().nonnegative(),citedQueries:m().int().nonnegative(),mentionedQueries:m().int().nonnegative()}),aq=WP.extend({snapshots:y(Z2).optional(),queryCounts:nq.nullable().optional(),providerBatches:y(XP).optional(),usage:y(JP).optional()}),iq=d({totalRuns:m().int().nonnegative(),run:aq.nullable(),admission:Gw.optional(),manualAdmission:Gw.optional()}),Hw=s().refine(e=>!Number.isNaN(Date.parse(e)),"Must be a valid ISO 8601 timestamp");d({limit:Fe([s(),m()]).optional(),offset:Fe([s(),m()]).optional(),since:Hw.optional().describe("Inclusive ISO 8601 lower bound."),until:Hw.optional().describe("Inclusive ISO 8601 upper bound."),action:s().trim().min(1).optional().describe("Exact audit action filter."),actionPrefix:s().trim().min(1).optional().describe("Literal audit action prefix; percent and underscore are not wildcards."),actor:s().trim().min(1).optional().describe("Exact actor, or api for legacy API, API-key, and user actors."),entityType:s().trim().min(1).optional().describe("Exact entity type filter."),entityId:s().trim().min(1).optional().describe("Exact entity identity filter."),excludeEntityTypes:Ya(e=>{const n=typeof e=="string"?[e]:Array.isArray(e)?e:null;return n?[...new Set(n.flatMap(i=>typeof i=="string"?i.split(",").map(r=>r.trim()):[i]))]:e},y(s().min(1))).optional()});d({id:s(),project:s().nullable().optional(),projectId:s().nullable().optional(),actor:s(),action:s(),entityType:s(),entityId:s().nullable().optional(),diff:kn().optional(),userAgent:s().nullable().optional(),actorSession:s().nullable().optional(),requestId:s().nullable().optional(),credentialId:s().nullable().optional(),createdAt:s()});const Q0=Fe([ta,de()]),Z0=k(["pass","partial","fail"]),Nae=Z0.enum,Y2=k(["up","down","flat"]);Y2.enum;const sq=d({id:s(),name:s(),weight:m(),sharePct:ot(m().min(0).max(100)).nullable().default(null),avgScore:m(),status:Z0,pagesPassing:m().int().nonnegative(),pagesPartial:m().int().nonnegative(),pagesFailing:m().int().nonnegative()}),oq=d({factorId:s(),factorName:s(),avgScore:m(),affectedPages:m().int().nonnegative(),totalPages:m().int().nonnegative(),affectedPct:ot(m().nonnegative()),topRecommendations:y(s()).default([])}),Ea=d({reason:k(["explicit-run","latest-date-complete","latest-date-most-pages","latest-scored-scan","requested-date-complete","requested-date-most-pages"]),date:s(),sameDateRunCount:m().int().nonnegative(),ambiguousDate:N(),candidates:y(d({runId:s(),createdAt:s(),complete:N(),pages:m().int().nonnegative()})).max(10),candidatesTruncated:N()});d({project:s(),hasData:N(),runId:s().nullable(),runStatus:Q0,sitemapUrl:s().nullable(),auditedAt:s().nullable(),aggregateScore:m(),pagesDiscovered:m().int().nonnegative(),pagesAudited:m().int().nonnegative(),pagesSkipped:m().int().nonnegative(),pagesErrored:m().int().nonnegative(),deltaScore:m().nullable(),trend:Fe([Y2,de()]),previousScore:m().nullable(),previousAuditedAt:s().nullable(),runSelection:Ea.optional(),factors:y(sq).default([]),affectedPageRanking:d({basis:E("pages-below-pass"),scope:E("audited-pages"),pagesAudited:m().int().nonnegative(),items:y(d({factorId:s(),pagesBelowPass:m().int().nonnegative(),pagesFailing:m().int().nonnegative(),pagesPartial:m().int().nonnegative()})),unavailableFactorIds:y(s())}).optional(),crossCuttingIssues:y(oq).default([]),prioritizedFixes:y(s()).default([])});const X2=d({id:s(),name:s(),weight:m(),score:m(),sharePct:ot(m().min(0).max(100)).nullable().default(null)}),rq=d({url:s(),overallScore:m(),status:k(["success","error"]),error:s().nullable().optional(),factors:y(X2).default([])});d({project:s(),runId:s().nullable(),auditedAt:s().nullable(),runSelection:Ea.optional(),total:m().int().nonnegative(),pages:y(rq).default([])});const lq=d({runId:s(),auditedAt:s(),aggregateScore:m(),pagesAudited:m().int().nonnegative()});d({project:s(),points:y(lq).default([])});const cq=k(["disabled","complete","partial","unavailable"]);cq.enum;const il=k(["indexable","redirect-terminal","canonical-to-other","robots-disallow","noindex","non-html","fetch-error","not-fetched","unknown"]);il.enum;const J2=d({healthReason:il,pages:m().int().nonnegative(),exampleUrl:s()}),W2=d({scope:E("selected-snapshot"),total:m().int().nonnegative(),eligible:m().int().nonnegative(),excluded:m().int().nonnegative(),excludedReasons:y(J2).max(il.options.length)}),e3=d({recentDates:y(jn).max(10),totalDates:m().int().nonnegative(),matchingMonthDayDates:y(jn).max(10),matchingMonthDayTotal:m().int().nonnegative()}),uq=d({pagesDiscovered:m().int().nonnegative(),pagesFetched:m().int().nonnegative(),pagesEligible:m().int().nonnegative(),edges:m().int().nonnegative(),findings:m().int().nonnegative()}),dq=Ue("state",[d({state:E("unavailable")}),d({state:E("disabled")}),d({state:E("complete"),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative()}),d({state:E("partial"),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative()})]);d({project:s(),hasCrawlData:N(),legacyAuditAvailable:N(),runId:s().nullable(),runSelection:Ea.optional(),requestedDate:jn.optional(),availableScanDates:e3.optional(),inventorySummary:W2.nullable().optional(),runStatus:Q0,requestedRootUrl:s().nullable(),rootUrl:s().nullable(),crawlSchemaVersion:s().nullable().optional(),engineVersion:s().nullable().optional(),normalizationVersion:s().nullable().optional(),indexabilityVersion:s().nullable().optional(),linkScoreVersion:s().nullable().optional(),effectiveOptions:Ke(s(),kn()).default({}),complete:N(),termination:s().nullable(),detailsAvailable:N(),counts:uq,deadLinks:dq});k(["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 Hm=k(["eligible","hidden","resource","redirect","failed","unchecked"]),Cae=Hm.enum,_ae=Hm.options,Or={discovered:"discovered",robotsBlocked:"robots-blocked",html:"html",redirect:"redirect",nonHtml:"non-html",fetchError:"fetch-error"},Rd={indexable:"indexable",noindex:"noindex",blocked:"blocked",unknown:"unknown"},mq={robotsDisallow:"robots-disallow",redirectTerminal:"redirect-terminal",metaRobotsNoindex:"meta-robots-noindex",xRobotsNoindex:"x-robots-noindex",canonicalToOther:"canonical-to-other",notHtmlOrUnavailable:"not-html-or-unavailable"};function pq(e){return e.indexabilityReasons?.some(n=>n===mq.canonicalToOther)===!0||e.nodeKey!==void 0&&e.canonicalNodeKey!==null&&e.canonicalNodeKey!==void 0&&e.canonicalNodeKey!==e.nodeKey}function Tae(e){switch(e.fetchState){case Or.fetchError:return"failed";case Or.discovered:return"unchecked";case Or.nonHtml:return"resource";case Or.redirect:return"redirect";case Or.robotsBlocked:return"hidden";case Or.html:break;default:return"unchecked"}if(pq(e))return"hidden";switch(e.indexabilityState){case Rd.indexable:return"eligible";case Rd.noindex:case Rd.blocked:return"hidden";case Rd.unknown:default:return"unchecked"}}const Eae=15,hq=k(["navigation","content","unknown"]);hq.enum;const fq=d({navigation:m().int().nonnegative(),content:m().int().nonnegative(),unknown:m().int().nonnegative()}),t3=k(["placement","ubiquity","unmeasured"]);t3.enum;const Fm=k(["applied","applied-placement","applied-placement-with-ubiquity","applied-placement-partial","unavailable-too-few-pages","unavailable-legacy-scan"]);Fm.enum;function Rae(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 Qm=k(["all","content","template"]);Qm.enum;const gq=k(["anchor","redirect","canonical","link"]);gq.enum;const $c=d({nodeKey:s(),url:s(),finalUrl:s().nullable(),path:s(),parentPath:s(),discoverySource:s(),fetchState:s(),httpStatus:m().int().nullable(),canonicalUrl:s().nullable(),indexabilityState:s(),indexabilityReasons:y(s()).default([]),auditState:s(),auditScore:m().nullable(),inventoryEligible:N(),depth:m().int().nullable(),inboundUniqueEdges:m().int().nonnegative(),outboundUniqueEdges:m().int().nonnegative(),inboundOccurrences:m().int().nonnegative(),outboundOccurrences:m().int().nonnegative(),linkScoreRaw:m().nullable(),linkScoreNormalized:ot().nullable(),healthState:Hm,healthReason:il.optional()}),n3=d({type:k(["found","missing","info","timeout","unreachable"]),code:s().min(1),message:s().min(1)}),Fw=X2.extend({status:Z0,applicable:N().nullable(),findings:y(n3).default([]),recommendations:y(s()).default([]),advisoryRecommendations:y(s()).optional()}),Qw=d({id:s().min(1),severity:k(["critical","warning"]),detail:s().min(1),recommendation:s().min(1)}),Dd=d({project:s(),runId:s(),complete:N(),termination:s().nullable(),runSelection:Ea.optional()}),Zw=d({nodeKey:s(),url:s(),auditState:s()});Ue("state",[d({state:E("no-crawl"),project:s(),runId:de()}),Dd.extend({state:E("details-unavailable")}),Dd.extend({state:E("not-found")}),Dd.merge(Zw).extend({state:E("not-audited"),auditScore:de(),factors:y(Fw).length(0).default([]),criticalDefects:y(Qw).length(0).default([])}),Dd.merge(Zw).extend({state:E("ready"),auditScore:m(),evidenceState:k(["complete","scores-only"]),factors:y(Fw).default([]),criticalDefects:y(Qw).default([])})]);const yq=k(["applied","unavailable-legacy-scan"]),iu={complete:N(),termination:s().nullable(),runSelection:Ea.optional()};d({project:s(),hasCrawlData:N(),runId:s().nullable(),...iu,requestedDate:jn.optional(),availableScanDates:e3.optional(),inventorySummary:W2.nullable().optional(),healthReasonCounts:y(J2).max(il.options.length).nullable().optional(),total:m().int().nonnegative(),nextCursor:s().nullable(),healthStateFilter:Fe([yq,de()]).default(null),pages:y($c).default([])});const bq=d({path:s(),url:s().nullable(),hasPage:N(),pageCount:m().int().positive(),inventoryEligibleCount:m().int().nonnegative(),fetchedCount:m().int().nonnegative()});d({project:s(),hasCrawlData:N(),runId:s().nullable(),...iu,parentPath:s(),nextCursor:s().nullable(),children:y(bq).default([])});const Ro=d({edgeKey:s(),sourceNodeKey:s(),sourceUrl:s(),targetNodeKey:s().nullable(),targetUrl:s(),relation:s(),internal:N(),followable:N(),occurrences:m().int().positive(),followableOccurrences:m().int().nonnegative(),nofollowOccurrences:m().int().nonnegative(),anchors:y(s()).default([]),isTemplate:Fe([N(),de()]),templateRatio:Fe([we(),de()]),templateSource:t3,placementOccurrences:Fe([fq,de()])}),vq=d({nodeKey:s(),url:s(),path:s(),depth:m().int().nonnegative().nullable(),indexabilityState:s(),fetchState:s(),auditState:s(),auditScore:m().nullable(),inventoryEligible:N(),inboundUniqueEdges:m().int().nonnegative(),outboundUniqueEdges:m().int().nonnegative(),linkScoreNormalized:ot().nullable(),healthState:Hm,healthReason:il.optional(),x:m(),y:m()}),xq=d({edgeKey:s(),sourceNodeKey:s(),targetNodeKey:s(),followable:N(),occurrences:m().int().positive(),isTemplate:N()}),wq=k(["no-crawl","legacy-snapshot","details-unavailable","layout-failed","empty-crawl"]),Sq=Ue("state",[d({state:E("ready"),version:s().min(1),computedAt:s().min(1),templateLinksExcluded:N()}),d({state:E("unavailable"),version:de(),reason:wq})]);d({project:s(),hasCrawlData:N(),runId:s().nullable(),rootNodeKey:s().nullable(),...iu,layout:Sq,templateDetection:Fm,linkKind:Qm,totalNodes:m().int().nonnegative(),totalEdges:m().int().nonnegative(),totalTemplateEdges:m().int().nonnegative(),totalContentEdges:m().int().nonnegative(),nodes:y(vq).default([]),edges:y(xq).default([]),omittedNodes:m().int().nonnegative(),omittedEdges:m().int().nonnegative(),sampled:N()});const Dae=2e4,zae=5e4,kq=k(["focus","inbound","outbound","both","transitive"]),jq=$c.extend({distance:m().int().nonnegative(),relationToFocus:kq});d({project:s(),hasCrawlData:N(),runId:s().nullable(),complete:N(),termination:s().nullable(),runSelection:Ea.optional(),state:k(["no-crawl","details-unavailable","ready"]),focusNodeKey:s().nullable(),focusUrl:s().nullable(),hops:m().int().min(0).max(3),totalNodes:m().int().nonnegative(),totalEdges:m().int().nonnegative(),nodes:y(jq).default([]),edges:y(Ro).default([]),omittedNodes:m().int().nonnegative(),omittedEdges:m().int().nonnegative(),countAccuracy:k(["exact","lower-bound"]),truncated:N()});const Yw=d({nodeKey:s(),url:s(),path:s()});d({project:s(),runId:s().nullable(),complete:N(),termination:s().nullable(),runSelection:Ea.optional(),state:k(["no-crawl","details-unavailable","found","unreachable","truncated"]),from:Yw.nullable(),to:Yw.nullable(),maxDepth:m().int().positive(),visitedNodes:m().int().nonnegative(),nodes:y($c).default([]),edges:y(Ro).default([])});const a3=k(["added","removed","changed"]),Aq=d({entity:E("page"),change:a3,key:s(),changedFields:y(s()).default([]),before:$c.nullable(),after:$c.nullable()}),Nq=d({entity:E("link"),change:a3,key:s(),changedFields:y(s()).default([]),before:Ro.nullable(),after:Ro.nullable()}),Cq=Ue("entity",[Aq,Nq]),Xw=d({added:m().int().nonnegative(),removed:m().int().nonnegative(),changed:m().int().nonnegative()}),_q=d({scope:k(["all","pages","links"]),change:k(["all","added","removed","changed"])});Ue("state",[d({project:s(),state:E("unavailable"),reason:k(["no-crawl","insufficient-history","details-unavailable","partial-not-comparable"]),fromRunId:s().nullable(),toRunId:s().nullable()}),d({project:s(),state:E("incompatible"),reason:E("incompatible-versions"),fromRunId:s(),toRunId:s(),mismatchedVersions:y(s()).min(1)}),d({project:s(),state:E("ready"),fromRunId:s(),toRunId:s(),versions:d({crawlSchema:s(),normalization:s(),indexability:s(),linkScore:s()}),filters:_q,summaryState:k(["exact","omitted-on-continuation"]),summary:d({pages:Xw,links:Xw}).nullable(),total:m().int().nonnegative().nullable(),nextCursor:s().nullable(),changes:y(Cq).default([])})]);d({project:s(),hasCrawlData:N(),runId:s().nullable(),...iu,total:m().int().nonnegative(),nextCursor:s().nullable(),templateDetection:Fm,linkKind:Qm,edges:y(Ro).default([])});d({project:s(),hasCrawlData:N(),runId:s().nullable(),...iu,nodeKey:s().nullable(),url:s().nullable(),templateDetection:Fm,linkKind:Qm,inbound:y(Ro).default([]),outbound:y(Ro).default([]),inboundTruncated:N(),outboundTruncated:N()});const Jw=d({findingKey:s(),severity:s(),sourceNodeKey:s().nullable(),sourceUrl:s().nullable(),targetNodeKey:s().nullable(),targetUrl:s().nullable(),evidence:Ke(s(),kn()).default({})});Ue("state",[d({project:s(),runId:s().nullable(),state:E("unavailable"),legacyAuditAvailable:N(),runSelection:Ea.optional()}),d({project:s(),runId:s(),state:E("disabled"),checkDeadLinks:E(!1),runSelection:Ea.optional()}),d({project:s(),runId:s(),state:E("complete"),checkDeadLinks:E(!0),runSelection:Ea.optional(),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative(),total:m().int().nonnegative(),nextCursor:s().nullable(),deadLinks:y(Jw).default([])}),d({project:s(),runId:s(),state:E("partial"),checkDeadLinks:E(!0),runSelection:Ea.optional(),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative(),total:m().int().nonnegative(),nextCursor:s().nullable(),deadLinks:y(Jw).default([])})]);const i3=5e4,su=m().int().min(1).max(i3);function Tq(e){return`${e.toLocaleString("en-US")} ${e===1?"page":"pages"}`}function Iae(e){return`full site (up to ${Tq(i3)})`}const Oae=10,s3=100;d({sitemapUrl:s().url().optional(),limit:m().int().positive().max(2e3).optional(),maxPages:su.optional(),maxEdges:m().int().positive().max(1e6).optional(),maxDepth:m().int().min(0).max(100).optional(),checkDeadLinks:N().default(!1),includeGeo:N().default(!1),includeAgentSkills:N().default(!0)});d({runId:s(),status:ta});const Eq=d({runId:s(),status:ta,createdAt:s(),startedAt:s().nullable(),finishedAt:s().nullable(),hasCrawlData:N()});d({project:s(),preferredRunId:s().nullable().optional(),scans:y(Eq).default([])});const Rq=k(["queued","discovering","checking","arranging-map","completed","partial","failed","cancelled"]),Dq=d({state:k(["pending","ready","unavailable"]),layoutVersion:s().nullable(),failureCode:s().nullable(),updatedAt:s().nullable()}),zq=d({id:s(),state:s(),pagesDiscovered:m().int().nonnegative(),pagesFetched:m().int().nonnegative(),pagesEligible:m().int().nonnegative(),pagesErrored:m().int().nonnegative(),edgesDiscovered:m().int().nonnegative(),lastUpdatedAt:s(),startedAt:s().nullable(),finishedAt:s().nullable(),error:s().nullable()});d({project:s(),runId:s(),status:ta,phase:Rq,attempt:zq.nullable(),layout:Dq,error:s().nullable()});const Iq=k(["waiting","collecting","terminal"]),Oq=d({nodeKey:s(),url:s(),auditScore:m(),checksNeedingAttention:m().int().nonnegative()});d({project:s(),runId:s(),status:ta,state:Iq,attemptId:s().nullable(),pagesAudited:m().int().nonnegative(),updatedAt:s().nullable(),examples:y(Oq).max(12).default([])});d({schemaVersion:E("1.0"),groupIdentityVersion:E("duplicate-metadata-v1"),siteIssues:y(d({key:s().min(1).nullable(),code:s().min(1),message:s(),affectedUrls:y(s().min(1))}))});const Y0=100;d({runId:s().min(1).max(128).optional(),cursor:s().min(1).max(2048).optional(),limit:m().int().min(1).max(Y0).optional()}).strict();const Pq=k(["actionable","advisory","unverified","informational"]),o3=d({nodeKey:s().nullable(),url:s(),message:s().max(400),messageTruncated:N(),recommendations:y(s().max(400)).max(3),recommendationsScope:k(["factor","issue","none"]),recommendationsTruncated:N()}),qq=d({id:s(),stableIdentity:N(),code:s(),source:k(["page-finding","cross-page","critical-defect"]),severity:k(["critical","warning"]).nullable(),factorId:s().nullable(),findingType:n3.shape.type,disposition:Pq,message:s().max(400),messageTruncated:N(),affectedPages:m().int().nonnegative(),examples:y(o3).max(3),examplesTruncated:N()}),Mq=d({pageFindings:k(["available","partial","unavailable"]),crossPage:k(["available","unavailable"]),auditedPages:m().int().nonnegative(),pagesWithFindingEvidence:m().int().nonnegative(),pagesWithoutFindingEvidence:m().int().nonnegative(),omittedFindings:m().int().nonnegative()}),r3=d({project:s(),runId:s().nullable(),attemptId:s().nullable(),auditedAt:s().nullable(),runStatus:Q0,complete:N(),termination:s().nullable(),runSelection:Ea.optional(),state:k(["no-crawl","unavailable","partial","available"]),coverage:Mq,total:m().int().nonnegative().nullable(),nextCursor:s().nullable()});r3.extend({issues:y(qq).max(Y0)});r3.extend({issueId:s(),pages:y(o3).max(Y0)});new Set(s2.map(e=>e.toLowerCase()));const Bq=4,l3=3;function Pae(e){return e.filter(n=>za(n).length>=l3)}const Lq=10,qae=24,Uq="bulk-add-unacknowledged";k([Uq]);const Vq=80,c3=k(["too-long","too-short","project-brand","other-competitor","market-competitor","claimed-by-alias"]);c3.enum;const u3=k(["too-long","too-short","blocked","already-matched","subsumed","project-brand","other-competitor","over-limit"]);u3.enum;const d3=y(s()).describe(`Operator-curated names this competitor goes by in answer text (at most ${Lq}, each ${Vq} characters or fewer, at least ${l3} letters or digits).`);d({aliases:d3});const Kc=s().trim().min(1).refine(e=>!!UO(e),{message:"Competitor domain must be a valid domain or URL"}),$q=d({domain:Kc,aliases:d3.optional()}),X0=Fe([Kc,$q]),Ww=d({domain:s(),before:y(s()),after:y(s())}).strict(),Kq=d({domain:s(),alias:s(),reason:c3,conflictsWith:s().optional(),conflictingName:s().optional(),markets:y(s()).optional(),supersededRevision:m().int().optional()}).strict(),Gq=d({domain:s(),alias:s(),reason:u3,stored:N(),conflictsWith:s().optional(),conflictingName:s().optional()}).strict();function m3(e,n){return Number((n===Fa.percent?e:e*100).toFixed(6))}function p3(e){return Math.round(Number((e*10).toFixed(4)))/10}function um(e,n=Fa.fraction){if(e==null||!Number.isFinite(e))return"—";const i=m3(e,n);if(i===0)return"0%";const r=i<0?"-":"",u=Math.abs(i);if(u===100)return`${r}100%`;const h=p3(u);return h===0?`${r}<0.1%`:h===100&&u<100?`${r}>99.9%`:`${r}${h.toFixed(1)}%`}function Mae(e){return Number.isFinite(e)?Math.abs(e)>=1e6?`${(e/1e6).toFixed(1)}M`:Math.abs(e)>=1e3?`${(e/1e3).toFixed(1)}K`:e.toLocaleString("en-US"):"—"}function Bae(e){if(!e)return"—";try{const n=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e),i={month:"short",day:"numeric",year:"numeric"},r=n&&n[1]&&n[2]&&n[3]?new Date(Date.UTC(Number(n[1]),Number(n[2])-1,Number(n[3]))):new Date(e);return Number.isNaN(r.getTime())?e:r.toLocaleDateString("en-US",n?{...i,timeZone:"UTC"}:i)}catch{return e}}const Hq=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Rc(e,n=new Date){const i=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e),r=i?Hq[Number(i[2])-1]:void 0;if(!i||!r)return e;const u=`${r} ${Number(i[3])}`;return Number(i[1])===n.getFullYear()?u:`${u}, ${i[1]}`}function Lae(e,n,i=800){const r=[];if(!/^\d{4}-\d{2}-\d{2}$/.test(e)||!/^\d{4}-\d{2}-\d{2}$/.test(n))return r;for(let u=e;u<=n&&(r.push(u),!(r.length>=i));u=Fq(u,1));return r}function Fq(e,n){if(!Number.isFinite(n))return e;const i=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e);if(!i?.[1]||!i[2]||!i[3])return e;const r=new Date(Date.UTC(Number(i[1]),Number(i[2])-1,Number(i[3])+Math.trunc(n)));if(Number.isNaN(r.getTime()))return e;const u=r.getUTCFullYear(),h=String(r.getUTCMonth()+1).padStart(2,"0"),f=String(r.getUTCDate()).padStart(2,"0");return`${u}-${h}-${f}`}function Uae(e,n=Fa.fraction){const i=m3(e,n);if(i===0)return{direction:"none",magnitude:"0"};const r=p3(Math.abs(i));return{direction:i>0?"up":"down",magnitude:r===0?"<0.1":r.toFixed(1)}}function Vae(e,n="UTC"){const i=new Date(e);if(!Number.isFinite(i.getTime()))return null;const r={weekday:"short",year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"2-digit",timeZoneName:"short"};try{return i.toLocaleString("en-US",{...r,timeZone:n})}catch{return i.toLocaleString("en-US",{...r,timeZone:"UTC"})}}const Qq=d({basis:k(["tracked","observed"]).nullable(),availability:k(["measured","not-measured","unavailable"]),reason:k(["select-query-class","answer-selection","no-competitors","insufficient-observed","no-answers","no-mentions","unavailable"]).nullable()}),J0=Qq.partial().shape,h3=k(["introduced","repointed","retired"]),Zq=h3.enum;d({modelId:s().trim().min(1),date:s().regex(/^\d{4}-\d{2}-\d{2}$/,"date must be YYYY-MM-DD"),kind:h3,confirmed:N(),sourceUrl:s().url(),note:s().min(1)});const Yq=[{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.'}];Zq.repointed;new Set(Yq.map(e=>e.modelId.toLowerCase()));const Xq=k(["not-exposed","no-known-change","known-change"]);Xq.enum;const Jq=d({modelId:s().trim().min(1),date:s().regex(/^\d{4}-\d{2}-\d{2}$/),confirmed:N(),sourceUrl:s().url()}),Wq=d({status:k(["no-known-change","known-change"]),modelIds:y(s().trim().min(1)).min(1),changes:y(Jq),changeCount:m().int().nonnegative(),unverifiedChangeCount:m().int().nonnegative(),firstChangeDate:s().optional(),lastChangeDate:s().optional(),knownGoodAsOf:s(),checkedThroughPeriodEnd:N()}),eM={openai:"ChatGPT",chatgpt:"ChatGPT",anthropic:"Claude",claude:"Claude",google:"Gemini",gemini:"Gemini",perplexity:"Perplexity"};function tM(e){const n=e.trim().toLowerCase();return eM[n]??e.charAt(0).toUpperCase()+e.slice(1)}function Bf(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):0}function bc(e){return typeof e=="string"&&e.trim().length>=10?e.trim().slice(0,10):null}function Lf(e){return[...new Set(e.filter(n=>n!==null))].sort()}function nM(e,n,i){const r=i(e),u=Array.isArray(n.changes)?n.changes:[],h=Bf(n.changeCount)||u.length,f=Math.min(h,Bf(n.unverifiedChangeCount)||Bf(n.unconfirmedChangeCount)||u.filter(j=>j.confirmed===!1).length),b=bc(n.knownGoodAsOf),v=n.checkedThroughPeriodEnd!==!1,x={engine:r,confirmedCount:h-f,unconfirmedCount:f,knownGoodAsOf:b,checkedThroughPeriodEnd:v};if(u.length>0)return{...x,confirmedDates:Lf(u.filter(j=>j.confirmed!==!1).map(j=>bc(j.date))),unconfirmedDates:Lf(u.filter(j=>j.confirmed===!1).map(j=>bc(j.date)))};const S=Lf([bc(n.firstChangeDate),bc(n.lastChangeDate)]);return h===0?{...x,confirmedDates:[],unconfirmedDates:[]}:f===0?{...x,confirmedDates:S,unconfirmedDates:[]}:x.confirmedCount===0?{...x,confirmedDates:[],unconfirmedDates:S}:{...x,confirmedDates:[],unconfirmedDates:[]}}function aM(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 eS(e,n){return e.length===0?null:e.length===1&&n<=1?`on ${Rc(e[0])}`:`more than once between ${Rc(e[0])} and ${Rc(e[e.length-1])}`}function iM(e){const n=eS(e.confirmedDates,e.confirmedCount),i=eS(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 i?`${r} may have been updated ${i}, inside this period, though that is not confirmed.`:`${r} may have been updated inside this period, though that is not confirmed.`;if(n&&i)return`${r} was updated ${n}, inside this period, and may also have been updated ${i}.`;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 tS(e){const n=e.filter(r=>!r.checkedThroughPeriodEnd&&r.knownGoodAsOf!==null);if(n.length===0)return null;const i=n.map(r=>r.knownGoodAsOf).sort()[0];return`We last checked for model updates on ${Rc(i)}, and this period runs past that date, so there may be later updates we do not know about.`}function $ae(e,n={}){const i=n.engineName??tM,r=Object.entries(e??{}).map(([S,j])=>nM(S,j??{},i)).sort((S,j)=>S.engine.localeCompare(j.engine));if(r.length===0)return null;const u=r.filter(S=>S.confirmedCount+S.unconfirmedCount>0);if(u.length===0){const S=[...new Set(r.map(q=>q.engine))],j=S.length>1,C=tS(r),T=[...new Set(r.map(q=>q.knownGoodAsOf).filter(q=>q!==null))].sort(),z=C??(T.length>0?`We last checked for model updates on ${Rc(T[0])}.`:null);return{kind:"no-known-change",text:`No model updates are on record for ${aM(S)} in this period.`,detail:`${j?"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.${z?` ${z}`:""}`}}const h=u.reduce((S,j)=>S+j.confirmedCount+j.unconfirmedCount,0),f=u.some(S=>S.confirmedCount>0),b=h===1?"this update":"these updates",v=f?`Some of the movement in these numbers may come from ${b} 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 ${b} rather than from a real change in how AI answers about you, so compare periods carefully.`,x=tS(r);return{kind:"change",text:`${u.map(iM).join(" ")} ${v}${x?` ${x}`:""}`}}const W0=k(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);W0.enum;const e1=k(["cited","aspirational","wasted-surface"]),nS=e1.enum;nS.cited,nS.aspirational;const ou=k(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),sM=ou.enum;sM["direct-competitor"];const Zm=k(["queued","seeding","probing","completed","failed"]);Zm.enum;const f3=d({domain:s().min(1),hits:m().int().positive(),competitorType:ou.default("unknown")}),oM=d({id:s(),sessionId:s(),projectId:s(),query:s(),bucket:e1.nullable().default(null),citationState:Ki,citedDomains:y(s()).default([]),answerMentioned:N().nullable().default(null),createdAt:s()}),rM=d({id:s(),projectId:s(),status:Zm,icpDescription:s().nullable().optional(),seedProvider:s().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:s().nullable().optional(),locations:y(Jt).nullable().optional(),seedRawCandidates:y(s()).nullable().optional(),dedupClusterMinSims:y(m()).nullable().optional(),dedupBandPairFraction:we().nullable().optional(),dedupPairsTotal:m().int().nullable().optional(),seedProviders:y(s()).nullable().optional(),seedProviderCounts:Ke(s(),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(f3).default([]),warning:s().nullable().optional(),error:s().nullable().optional(),startedAt:s().nullable().optional(),finishedAt:s().nullable().optional(),createdAt:s()});rM.extend({probes:y(oM).default([])});const lM=500,cM=8,uM=["gemini","openai"],dM=k(uM);d({icpDescription:s().min(1).optional(),buyerDescription:s().min(1).optional(),seedProviders:y(dM).min(1).transform(e=>[...new Set(e)].sort()).optional(),dedupThreshold:m().min(0).max(1).optional(),maxProbes:m().int().positive().max(lM).optional(),probeConcurrency:m().int().min(1).max(cM).optional(),locations:y(s().min(1)).optional()});d({buckets:y(e1).min(1).optional(),includeCompetitors:N().optional(),competitorTypes:y(ou).min(1).optional()});const t1=d({domain:s().min(1),hits:m().int().positive(),competitorType:ou,sources:y(f3)}),g3=k(["already-tracked","project-domain","shared-host","claimed-by-alias"]);g3.enum;const y3=t1.extend({reason:g3,message:s()});d({sessionId:s(),projectId:s(),status:Zm,queriesByBucket:d({cited:y(s()),aspirational:y(s()),"wasted-surface":y(s())}),suggestedCompetitors:y(t1),skippedCompetitors:y(y3)});d({sessionId:s(),projectId:s(),promoted:d({queries:y(s()),competitors:y(s())}),skipped:d({queries:y(s()),competitors:y(s())}),competitorDetails:d({promoted:y(t1),skipped:y(y3)})});Fe([E("cli"),s().regex(/^discovery:.+$/)]);const mM=d({query:s().min(1),probeHits:m().int().positive()}),pM=d({rawCandidates:m().int().nonnegative(),admitted:m().int().nonnegative(),rejected:d({belowFloor:m().int().nonnegative(),length:m().int().nonnegative(),navigational:m().int().nonnegative(),duplicate:m().int().nonnegative(),offAnchor:m().int().nonnegative(),semanticDuplicate:m().int().nonnegative()})});d({sessionId:s(),projectId:s(),provider:s(),status:Zm,minProbeHits:m().int().positive(),anchorApplied:N(),semanticNoveltyApplied:N(),candidates:y(mM),stats:pM});const n1=k(["own","direct-competitor","ota-aggregator","editorial-media","other"]);n1.enum;const Ls=k(tl.metrics),aS=k(["improving","declining","stable"]),hM=k(["mentioned","cited"]);hM.enum;const zg=d({citationRate:we(),cited:m().int(),total:m().int(),mentionRate:we(),mentionedCount:m().int()}),sl=s().trim().min(1),fM=y(sl).min(1).superRefine((e,n)=>{for(let i=1;i<e.length;i+=1)e[i-1]>=e[i]&&n.addIssue({code:"custom",message:"mixed model IDs must be sorted and unique",path:[i]})}),Do=Ue("status",[d({status:E("known"),model:sl}),d({status:E("unknown")}),d({status:E("mixed"),models:fM,includesUnknown:N()})]),gM=d({observedAt:s(),bucketStartDate:s(),from:Do,to:Do,fromPreWindowAnchor:N().optional(),anchorObservedAt:s().optional()}),b3=d({latestObservation:d({observedAt:s(),state:Do}),events:y(gM),eventTotal:m().int().nonnegative().optional(),anchorUnavailable:N().optional()}),yM=Ke(s(),b3),bM=b3.extend({latestServedModelIds:y(sl).default([])}),vM=Ke(s(),bM),xM=d({observedAt:s(),configured:Do,served:Do}),wM=d({scope:k(["non-brand","pooled"]),rate:we().nullable(),projectMentionSnapshots:m().int().nonnegative(),competitorMentionSnapshots:m().int().nonnegative()}),SM=d({startDate:s(),endDate:s(),dataStartDate:s(),dataEndDate:s(),sweepCount:m().int().nonnegative(),citationRate:we(),cited:m().int(),total:m().int(),queryCount:m().int(),mentionRate:we(),mentionedCount:m().int(),mentionShare:wM,byProvider:Ke(s(),zg),modelEvidenceByProvider:Ke(s(),Do).default({}),basketRevision:m().int().nullable().default(null)}),Uf=d({first:we(m().min(0).max(1)),latest:we(m().min(0).max(1)),delta:we(m().min(-1).max(1))}),kM=d({citationRate:Uf.nullable(),mentionRate:Uf.nullable(),mentionShare:Uf.nullable()}),jM=d({revision:m().int(),at:s(),added:y(s()),removed:y(s())}),AM=d({date:s(),delta:m().int(),label:s()}),NM=d({at:s(),identity:$2}),a1=s().nullable().describe("When the names the project's competitors are matched by last changed: a tracked competitor's curated or stored auto-detected names (a block counts only when it removes a stored name), a detection pass that stored or removed a market-only competitor's learned names, a write that claimed, released or dropped a market-only competitor's learned names, or a published revision that renamed a market pin; null if never. The competitor landscape reads every period with the current names, so a figure for any period quoted before this time was restated at this time. Analytics mention share and project-frame visibility-compare share of voice read only tracked competitors' names, so a market pin or learned-name change moves this time without changing them. Adding or removing a competitor or a pin is a names change only when it moves a stored or learned name."),i1=s().nullable().describe("When the tracked competitor set last changed: a non-empty competitor add, removal, replacement, or discovery promotion. Older replacement audit rows without added/removed fields count conservatively; an identical replacement with both arrays empty does not. Null when the set never changed.");d({window:Ls,mentionShareScope:k(["non-brand","pooled"]),buckets:y(SM),overall:zg,byProvider:Ke(s(),zg),trend:aS,mentionTrend:aS,windowChange:kM.default(()=>({citationRate:null,mentionRate:null,mentionShare:null})),queryChanges:y(AM),basketChanges:y(jM).default([]),executionIdentityChanges:y(NM).default([]),referenceBasketRevision:m().int().nullable().default(null),modelAttribution:yM.default({}),servedModelAttribution:vM.default({}),modelServiceMismatch:Ke(s(),xM).default({}),modelPointerChanges:Ke(s(),Wq).default({}),competitorIdentityChangedAt:a1.optional(),competitorSetChangedAt:i1.optional()});const iS=d({category:W0,label:s(),count:m().int(),percentage:we(),topDomains:y(d({domain:s(),count:m().int()}))}),CM=d({domain:s(),rank:m().int().positive().optional(),count:m().int(),percentage:we(),answerShare:we().optional(),category:W0,label:s(),surfaceClass:n1}),_M=d({surfaceClass:n1,label:s(),count:m().int(),percentage:we(),domainCount:m().int()}),sS=d({totalCitedSlots:m().int(),answerTotal:m().int().optional(),answersWithSources:m().int().optional(),domainTotal:m().int(),entries:y(CM),truncatedDomainCount:m().int(),truncatedCitedSlots:m().int(),bySurfaceClass:y(_M)}),TM=d({answers:y(s()),distinctDomains:y(s()),answerDomainPairs:y(s()),runs:y(s())}),EM=k(["measurement-plan","query-text"]);d({runId:s().trim().min(1).optional(),queryClass:q0.optional(),includeByQuery:k(["true","false","1","0"]).optional()});d({ranked:sS,byProvider:Ke(s(),sS),providersWithoutSources:y(s()).optional(),answerTotal:m().int().optional(),runCount:m().int().optional(),pooledAcrossRuns:N().optional(),unclassifiedAnswers:m().int().optional(),filters:d({runId:s().nullable(),queryClass:q0,queryClassBasis:Fe([EM,de()]),includeByQuery:N()}).optional(),runId:s(),runIds:y(s()).optional(),countUnits:TM.optional(),window:Ls,limit:m().int().nullable(),overall:y(iS),byQuery:Ke(s(),y(iS)).optional()});const v3=k(["own","direct-competitor","ota-aggregator","editorial-media","other","unknown"]),x3=Ue("kind",[d({kind:E("project")}).strict(),d({kind:E("group"),groupKey:s().trim().min(1)}).strict(),d({kind:E("all-markets")}).strict()]),w3=k(["all","branded","non-brand"]),S3=k(["project","all-markets"]);d({window:Ls.optional(),groupKey:s().trim().min(1).optional(),scope:S3.optional(),provider:s().trim().min(1).optional(),model:sl.optional(),groupBy:E("model").optional(),queryClass:w3.optional(),location:s().trim().min(1).optional(),runId:s().trim().min(1).optional(),answers:k(["all","not-mentioned"]).optional()}).strict().superRefine((e,n)=>{e.scope==="all-markets"&&e.groupKey!==void 0&&n.addIssue({code:"custom",path:["groupKey"],message:"groupKey cannot be combined with scope=all-markets"}),e.model!==void 0&&e.provider===void 0&&n.addIssue({code:"custom",path:["provider"],message:"provider is required when filtering by model"})});const Ts=d({domain:s().trim().min(1),label:s().trim().min(1),surfaceClass:v3,pinned:N(),mentionCount:m().int().nonnegative(),shareOfVoice:ot(m().min(0).max(100)).nullable(),citationCount:m().int().nonnegative(),answeredResults:m().int().nonnegative(),firstSeenAt:s().datetime().nullable(),lastSeenAt:s().datetime().nullable(),sampleUrls:y(s().url()).max(3)}).strict(),k3=d({answeredResults:m().int().nonnegative(),sourceResults:m().int().nonnegative(),missingAnswerTextResults:m().int().nonnegative(),mentionCredits:m().int().nonnegative(),incompleteSourceResults:m().int().nonnegative(),excludedProbeResults:m().int().nonnegative(),excludedNonCompletedResults:m().int().nonnegative()}).strict(),RM=d({answers:y(s()),distinctNames:y(s()),runs:y(s())}).strict(),DM=50,zM=d({...J0,comparison:y(d({domain:s(),mentions:m().int().nonnegative()})).optional(),observedNames:y(d({name:s(),answerCount:m().int().nonnegative()})).optional(),observedNamesTotal:m().int().nonnegative().optional(),provider:s().trim().min(1),model:sl.nullable(),servedModels:Do,snapshotCount:m().int().positive(),project:Ts,pinned:y(Ts),observed:y(Ts),otherSources:y(Ts),evidence:k3,truncated:N()}).strict(),IM=d({basis:E("requested-model"),groups:y(zM).max(DM),totalGroups:m().int().nonnegative(),truncated:N()}).strict();d({...J0,comparison:y(d({domain:s(),mentions:m().int().nonnegative()})).optional(),observedNames:y(d({name:s(),answerCount:m().int().nonnegative()})).optional(),observedNamesTotal:m().int().nonnegative().optional(),answerSelection:d({answers:E("not-mentioned"),populationSize:m().int().nonnegative(),answerCount:m().int().nonnegative(),unknownMentionAnswers:m().int().nonnegative()}).strict().optional(),window:Ls,scope:x3,project:Ts,pinned:y(Ts),observed:y(Ts),otherSources:y(Ts),evidence:k3,modelComparison:IM.optional(),marketState:d({activeRevision:m().int().positive(),draft:d({etag:s().trim().min(1),pendingCompetitorDomains:y(s().trim().min(1))}).strict().nullable()}).strict().nullable(),filters:d({scope:S3,groupKey:s().nullable(),provider:s().nullable(),model:sl.optional(),groupBy:E("model").optional(),queryClass:w3,location:s().nullable(),runId:s().nullable(),answers:k(["all","not-mentioned"]).optional()}).strict(),truncated:N(),runCount:m().int().nonnegative().optional(),runIds:y(s()).optional(),countUnits:RM.optional(),competitorIdentityChangedAt:a1.optional(),competitorSetChangedAt:i1.optional(),competitorListRestated:N().optional()}).strict();const s1=d({total:m().int(),checked:m().int(),mentioned:m().int(),cited:m().int(),mentionRate:we().nullable(),citedRate:we().nullable()}),j3=s1.extend({provider:s(),firstObserved:s(),lastObserved:s()}),OM=s1.extend({queryId:s().nullable(),query:s(),firstObserved:s(),lastObserved:s(),providers:y(j3).optional()}),PM=d({since:s().nullable(),until:s().nullable(),lastRuns:m().int().nullable(),runCount:m().int()}),qM=k(["provider"]),Ig=d({domain:s(),mentions:m().int()}),Og=d({...J0,measurementScope:k(["project","all-markets"]).optional(),queryClass:k(["branded","non-brand","pooled"]),percent:ot().nullable(),competitorCount:m().int().nonnegative(),projectMentions:m().int(),competitorMentions:m().int(),snapshotsWithAnswerText:m().int(),perCompetitor:y(Ig)});d({project:s(),groupBy:qM.optional(),window:PM,totals:s1,byProvider:y(j3).optional(),queries:y(OM),shareOfVoice:Og.optional()});const MM=k(["within-noise","moved","insufficient-data","model-discontinuous","model-unknown"]),BM=k(["up","down","flat"]),oS=d({availability:k(["available","no-observations","no-competitive-frame","classification-unavailable"]),point:we().nullable(),ciLow:we().nullable(),ciHigh:we().nullable(),numerator:m().int(),denominator:m().int(),excludedUnknown:m().int().nonnegative().optional(),excludedNoRetrieval:m().int().nonnegative().optional()}),LM=k(["mention-share-of-voice","cited-share-of-voice","mention-rate","cited-rate","mention-rate-branded","cited-rate-branded","mention-rate-non-brand","cited-rate-non-brand"]),UM=d({key:LM,label:s(),queryClass:k(["all","branded","non-brand","pooled"]),driftRobust:N(),from:oS,to:oS,rateRatio:m().nullable(),direction:Fe([BM,de()]),verdict:MM}),dm=d({month:s(),since:s(),until:s(),runCount:m().int(),lowRunCount:N()}),A3=d({queryCount:m().int(),excludedFromOnly:m().int(),excludedToOnly:m().int(),providers:y(s()),excludedProviders:y(s())}),N3=d({provider:s(),fromModels:y(s()),toModels:y(s())}),VM=k(["included","model-discontinuous","model-unknown"]),$M=d({provider:s(),status:VM,fromModels:y(s()),toModels:y(s())}),KM=k(["comparable","model-discontinuous","model-unknown","insufficient-data"]),C3=d({status:KM,comparedProviders:y(s()),providers:y($M)}),GM=d({provider:s(),from:d({checked:m().int(),mentioned:m().int(),cited:m().int()}),to:d({checked:m().int(),mentioned:m().int(),cited:m().int()})}),HM=d({from:d({count:m().int(),of:m().int()}),to:d({count:m().int(),of:m().int()})}),FM=d({scope:k(["project","group","market","property"]).optional(),scopeKey:s().min(1).optional(),marketKey:s().min(1).optional(),provider:s().min(1).optional(),location:s().min(1).optional()}),QM=d({from:dm,to:dm,basket:A3,continuity:C3,modelChanges:y(N3)});d({project:s(),selection:FM.optional(),classComparison:QM.optional(),from:dm,to:dm,basket:A3,metrics:y(UM),queriesMentioned:HM,byProvider:y(GM),modelChanges:y(N3),continuity:C3,competitors:d({from:y(Ig),to:y(Ig)}),competitorIdentityChangedAt:a1.optional(),competitorSetChangedAt:i1.optional()});const _3=k(["add","remove","replace","aliases"]),zd=_3.enum,T3=k(["basis-changed","auto-alias-rescan-pending","no-latest-sweep","pooled"]);T3.enum;Ue("change",[d({change:E(zd.add),competitors:y(X0).min(1)}).strict(),d({change:E(zd.remove),competitors:y(s().trim().min(1)).min(1)}).strict(),d({change:E(zd.replace),competitors:y(Kc)}).strict(),d({change:E(zd.aliases),domain:Kc,aliases:y(s().trim().min(1)),mode:k(["set","add"])}).strict()]);const E3=d({instrument:E("competitor-landscape"),queryClass:k(["non-brand","pooled"]),scope:k(["project","all-markets"]),runIds:y(s()),runCount:m().int().nonnegative(),sweepAt:s().datetime().nullable(),before:Og,after:Og,deltaPercent:ot().nullable(),restatesHistory:E(!0),caveats:y(T3)}).strict(),ZM=d({limit:m().int().positive(),count:m().int().nonnegative(),acknowledgementRequired:N()}).strict();d({project:s().trim().min(1),change:_3,plan:d({added:y(s()),alreadyTracked:y(s()),removed:y(s()),aliasChanges:y(Ww),droppedAliases:y(Kq),autoAliasChanges:y(Ww),droppedAutoAliases:y(Gq)}).strict(),bulkAdd:ZM,impact:E3}).strict();const R3=k(["openai-annotation","claude-citation","gemini-support","perplexity-marker","answer-link","answer-host"]);R3.enum;const D3=d({name:s(),directPairs:m().int().nonnegative(),cooccurrences:m().int().nonnegative(),namingAnswers:m().int().nonnegative(),precision:we(m().min(0).max(1)),lift:m().nonnegative().nullable().optional(),nameCasedAnswers:m().int().nonnegative().optional(),runs:m().int().nonnegative(),firstSeen:s(),lastSeen:s(),addedAt:s()}),YM=k(["added","kept","removed","review","rejected"]),z3=k(["name-shape","too-few-pairs","too-few-runs","too-few-naming-answers","low-precision","low-lift","lowercase-usage","other-competitor-dominates","no-label-affinity","needs-approval","subsumed","too-long","too-short","blocked","already-matched","project-brand","other-competitor","over-limit"]),XM=d({name:s(),status:YM,reason:z3.optional(),conflictsWith:s().optional(),directPairs:m().int().nonnegative(),runs:m().int().nonnegative(),cooccurrences:m().int().nonnegative(),namingAnswers:m().int().nonnegative(),citingAnswers:m().int().nonnegative(),nameCasedAnswers:m().int().nonnegative(),precision:we(m().min(0).max(1)).nullable(),lift:m().nonnegative().nullable(),otherCompetitorPairs:m().int().nonnegative(),labelAffinity:N(),via:y(R3),firstSeen:s(),lastSeen:s()}),JM=d({domain:s(),marketKeys:y(s()).optional(),aliases:y(s()),autoAliases:y(D3),blockedAliases:y(s()),added:y(s()),removed:y(d({name:s(),reason:z3,conflictsWith:s().optional()})),candidates:y(XM)});d({project:s(),applied:N(),changed:N(),scan:d({runs:m().int().nonnegative(),snapshots:m().int().nonnegative(),answers:m().int().nonnegative(),maxRuns:m().int().positive(),maxSnapshots:m().int().positive(),providerCitations:N()}),thresholds:d({minDirectPairs:m().int().positive(),minRuns:m().int().positive(),minNamingAnswers:m().int().positive(),minPrecision:we(m().min(0).max(1)),minLift:m().positive(),minNameCasedShare:we(m().min(0).max(1)),minKeyLength:m().int().positive(),dominanceMultiple:m().positive(),removeBelowPrecision:we(m().min(0).max(1)),removeBelowLift:m().nonnegative(),removeBelowNameCasedShare:we(m().min(0).max(1))}),competitors:y(JM),impact:E3.optional()});d({aliases:y(s().trim().min(1)).min(1).describe("Names to block from (or release back to) answer-derived auto-detection for this competitor. Compared by brand key, so case, spacing and punctuation variants are one name.")});const Ym=k(["cli","api","config-file"]);function WM(e){const n=new Set,i=new Set;for(const r of e){if(n.has(r.label)){i.add(r.label);continue}n.add(r.label)}return[...i]}function eB(e,n){return n?e.some(i=>i.label===n):!0}const o1=k(["off","preview","apply"]);o1.options;const r1=o1.optional().describe("Answer-derived competitor alias detection mode for the unattended passes queued after a completed or partial sweep, a competitor add, an unblock or a market pin write that changes pins: `off` (no pass), `preview` (the pass logs what it would add or remove and stores nothing; a new project starts here) or `apply` (the pass stores detected names and removes stored ones it no longer keeps, which restates every period's competitor counts). Omit to keep the stored mode. An explicit apply (POST /projects/{name}/competitor-auto-aliases) stores in every mode."),l1=20,c1=200,tB=d({displayName:s().min(1),canonicalDomain:s().min(1),ownedDomains:y(s().min(1)).optional(),aliases:y(s()).optional(),country:s().length(2),language:s().min(2),tags:y(s()).optional(),labels:Ke(s(),s()).optional(),providers:y(bt).optional(),providerModels:Mo.optional(),providerDispatchModes:al.optional(),locations:y(Jt).optional(),defaultLocation:s().nullable().optional(),measurement:ui.optional(),autoExtractBacklinks:N().optional(),qualifiedAliases:y(s().trim().min(1).max(c1)).max(l1).optional(),negativeReviewMaxStars:Bm.nullable().optional(),siteAuditMaxPages:su.nullable().optional(),competitorAutoAliases:r1,configSource:Ym.optional()});d({displayName:s().min(1).optional(),canonicalDomain:s().min(1).optional(),ownedDomains:y(s().min(1)).optional(),aliases:y(s()).optional(),country:s().length(2).optional(),language:s().min(2).optional(),tags:y(s()).optional(),labels:Ke(s(),s()).optional(),providers:y(bt).optional(),providerModels:Mo.optional(),providerDispatchModes:al.optional(),locations:y(Jt).optional(),defaultLocation:s().nullable().optional(),measurement:ui.partial().strict().optional(),autoExtractBacklinks:N().optional(),qualifiedAliases:y(s().trim().min(1).max(c1)).max(l1).optional(),negativeReviewMaxStars:Bm.nullable().optional(),siteAuditMaxPages:su.nullable().optional(),competitorAutoAliases:r1,expectedConfigRevision:m().int().positive().optional()}).strict();tB.extend({name:s().trim().min(1).max(120)});const nB=d({id:s(),name:s(),displayName:s().optional(),canonicalDomain:s(),ownedDomains:y(s()).default([]),aliases:y(s()).default([]),qualifiedAliases:y(s()).default([]),country:s().length(2),language:s().min(2),tags:y(s()).default([]),labels:Ke(s(),s()).default({}),providers:y(s()).default([]),providerModels:Mo.default({}),providerDispatchModes:al.default({}),locations:y(Jt).default([]),defaultLocation:s().nullable().optional(),measurement:ui.default(h2),autoExtractBacklinks:N().default(!1),negativeReviewMaxStars:Bm.nullable().optional(),siteAuditMaxPages:su.nullable().optional(),competitorAutoAliases:o1.optional().describe("Answer-derived competitor alias detection mode for the unattended passes queued after a completed or partial sweep, a competitor add, an unblock or a market pin write that changes pins. `preview` (every project's default): the pass scores the stored answers and logs what it would add or remove, storing nothing. `apply`: the pass stores the detected names and removes stored ones it no longer keeps; the read-time competitor matchers then use them, restating every period's competitor counts (see competitorIdentityChangedAt). `off`: no pass runs. An explicit apply (POST /projects/{name}/competitor-auto-aliases) stores in every mode; switching to preview or off keeps names already stored. Absent only from a server that predates the setting."),answerFieldsRecompute:k(["full","competitors"]).nullable().optional(),configSource:Ym.default("cli"),configRevision:m().int().positive().default(1),createdAt:s().optional(),updatedAt:s().optional()});d({defaultLocation:s()});d({id:s(),query:s(),createdAt:s(),queryClass:Bo.nullable().optional()});d({id:s(),keyword:s(),createdAt:s()});d({queries:y(s().trim().min(1)).min(1)});d({keywords:y(s().trim().min(1)).min(1)});d({provider:bt,count:m().int().min(1).max(20).optional()});d({queries:y(s()),provider:s()});d({keywords:y(s()),provider:s()});d({id:s(),domain:s(),aliases:y(s()),autoAliases:y(D3).optional(),blockedAliases:y(s()).optional(),marketKeys:y(s()).optional(),createdAt:s()});d({competitors:y(s().trim().min(1)).min(1)});d({competitors:y(X0).min(1),acknowledgeBulkAdd:N().optional()});d({competitors:y(Kc),acknowledgeBulkAdd:N().optional()});function I3(e){const n=[e.canonicalDomain,...e.ownedDomains??[]],i=new Set,r=[];for(const u of n){const h=u.trim();if(!h)continue;const f=Lc(h);i.has(f)||(i.add(f),r.push(h))}return r}function aB(e,n){if(!n||n.length===0)return[];const i=e?.trim().toLowerCase()??"",r=new Set,u=[];for(const h of n){const f=h.trim();if(!f)continue;const b=f.toLowerCase();b!==i&&(r.has(b)||(r.add(b),u.push(f)))}return u}function iB(e){const n=[],i=new Set,r=h=>{const f=za(h);!f||i.has(f)||(i.add(f),n.push(h))},u=e.displayName?.trim()??"";u&&r(u);for(const h of aB(e.displayName,e.aliases))r(h);for(const h of I3({canonicalDomain:e.canonicalDomain??"",ownedDomains:e.ownedDomains??[]})){const f=E0(h);if(za(f).length>=Bq)r(f);else{const b=Lc(h);b.includes(".")&&r(b)}}return n}const sB=d({name:s().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:Ke(s(),s()).optional().default({})}),O3=d({preset:s().min(1).optional(),cron:s().min(1).optional(),recurrence:qm.optional(),timezone:s().optional().default("UTC"),providers:y(bt).optional().default([]),enabled:N().optional()});function P3(e){return[e.preset,e.cron,e.recurrence].filter(n=>n!==void 0).length===1}const q3={message:'Exactly one of "preset", "cron", or "recurrence" must be provided'},oB=O3.refine(P3,q3).optional(),rB=d({id:s().min(1).optional(),channel:E("webhook"),url:s().url(),events:y(Mm).min(1)}),lB=d({gsc:d({propertyUrl:s()}).optional(),syncSchedule:d({preset:s().optional(),cron:s().optional()}).optional()}).optional(),Pg=y(s().min(1)),M3={displayName:s().min(1),canonicalDomain:s().min(1),ownedDomains:y(s().min(1)).optional().default([]),aliases:y(s().min(1)).optional().default([]),qualifiedAliases:y(s().min(1).max(c1)).max(l1).optional(),country:s().length(2),language:s().min(2),queries:Pg.optional(),keywords:Pg.optional(),competitors:y(X0).optional().default([]),providers:y(bt).optional().default([]),providerModels:Mo.optional().default({}),providerDispatchModes:al.optional(),locations:y(Jt).optional().default([]),defaultLocation:s().optional(),measurement:ui.optional().default(h2),schedule:oB,notifications:y(rB).optional().default([]),google:lB,autoExtractBacklinks:N().optional().default(!1),negativeReviewMaxStars:Bm.optional(),siteAuditMaxPages:su.nullable().optional(),competitorAutoAliases:r1};function B3(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 i=WM(e.locations);i.length>0&&n.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${i.join(", ")}`,path:["locations"]}),eB(e.locations,e.defaultLocation)||n.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})}const cB=d(M3).superRefine(B3),uB=d({apiVersion:E("canonry/v1"),kind:E("Project"),metadata:sB,spec:cB});uB.extend({spec:d({...M3,queries:Pg,providerModels:Mo.optional(),schedule:O3.extend({enabled:N()}).refine(P3,q3).optional(),autoExtractBacklinks:N().optional()}).superRefine(B3)});function sn(e){return d({before:e.nullable(),after:e.nullable()})}const dB=d({displayName:s().optional(),canonicalDomain:s().optional(),ownedDomains:y(s()).optional(),aliases:y(s()).optional(),qualifiedAliases:y(s()).optional(),country:s().optional(),language:s().optional(),labels:Ke(s(),s()).optional(),providers:y(s()).optional(),providerModels:Mo.optional(),providerDispatchModes:al.optional(),"measurement.marketingHosts":ui.shape.marketingHosts.optional(),"measurement.brandTerms":ui.shape.brandTerms.optional(),"measurement.leadEventNames":ui.shape.leadEventNames.optional(),locations:y(Jt).optional(),defaultLocation:s().nullable().optional(),autoExtractBacklinks:N().optional(),negativeReviewMaxStars:m().int().nullable().optional(),siteAuditMaxPages:m().int().nullable().optional(),competitorAutoAliases:k(["off","preview","apply"]).optional(),configSource:Ym.optional()}).strict(),mB=d({displayName:sn(s()).optional(),canonicalDomain:sn(s()).optional(),ownedDomains:sn(y(s())).optional(),aliases:sn(y(s())).optional(),qualifiedAliases:sn(y(s())).optional(),country:sn(s()).optional(),language:sn(s()).optional(),labels:sn(Ke(s(),s())).optional(),providers:sn(y(s())).optional(),providerModels:sn(Mo).optional(),providerDispatchModes:sn(al).optional(),"measurement.marketingHosts":sn(ui.shape.marketingHosts).optional(),"measurement.brandTerms":sn(ui.shape.brandTerms).optional(),"measurement.leadEventNames":sn(ui.shape.leadEventNames).optional(),locations:sn(y(Jt)).optional(),defaultLocation:sn(s()).optional(),autoExtractBacklinks:sn(N()).optional(),negativeReviewMaxStars:sn(m().int()).optional(),siteAuditMaxPages:sn(m().int().nullable()).optional(),competitorAutoAliases:sn(k(["off","preview","apply"])).optional(),configSource:sn(Ym).optional()}).strict(),qg=d({cron:s().optional(),preset:s().optional(),recurrence:qm.optional(),timezone:s(),providers:y(s()),enabled:N()}).strict(),pB=d({domain:s(),alias:s(),reason:k(["too-long","too-short","project-brand","other-competitor","market-competitor","claimed-by-alias"]),conflictsWith:s().optional(),conflictingName:s().optional(),markets:y(s()).optional()}).strict(),hB=d({id:s(),url:s().optional(),urlHost:s(),events:y(s()),enabled:N(),source:s().optional()});d({project:d({id:s(),name:s()}),configRevision:m().int(),fields:dB,queries:y(d({id:s(),text:s()})),competitors:y(d({id:s(),domain:s(),aliases:y(s())})),schedule:qg.nullable(),notifications:y(hB),managed:d({queries:N(),competitors:N(),schedule:N(),notifications:N()}),detachedSnapshotCount:m().int().nonnegative()});const L3=d({urlHost:s(),events:y(s())}),fB=L3.extend({id:s()}),gB=d({id:s(),urlHost:s(),urlChanged:N(),eventsBefore:y(s()),eventsAfter:y(s())});d({project:d({id:s().nullable(),name:s()}),action:k(["create","update","none"]),changed:N(),configRevision:d({before:m().int().nullable(),after:m().int()}),fields:mB,queries:d({managed:N(),added:y(s()),removed:y(s()),unchangedCount:m().int().nonnegative(),snapshotsDetached:m().int().nonnegative()}),competitors:d({managed:N(),added:y(s()),removed:y(s()),aliasChanges:y(d({domain:s(),before:y(s()),after:y(s())})),droppedAliases:y(pB)}),schedule:d({managed:N(),action:k(["create","update","delete","none"]),before:qg.nullable(),after:qg.nullable()}),notifications:d({managed:N(),added:y(L3),removed:y(fB),kept:y(gB),secretsRotated:m().int().nonnegative()}),effects:y(k(["mention-backfill","competitor-rescore","competitor-auto-alias-rescan","schedule-reload","gsc-property-update"]))});const U3=k(["stored","live","write"]);Object.freeze(U3.enum);const yB=1,bB=s().refine(e=>e.trim().length>0,{message:"Must not be blank"}),V3=d({displayName:s(),aliases:y(s()),canonicalDomain:s(),ownedDomains:y(s()),qualifiedAliases:y(s()).optional()}).strict(),$3=d({provider:bt.refine(e=>e.trim().length>0,{message:"Provider must not be blank"}),requestedModel:s().nullable()}).strict(),K3=d({domain:s(),label:s(),aliases:y(s())}).strict(),G3=d({queryId:bB,queryText:s(),provenance:s().nullable()}).strict(),vB=G3.extend({queryClass:Bo.nullable()}).strict();function H3(e,n){const i=new Set;e.engines.forEach((h,f)=>{const b=h.provider.trim().toLocaleLowerCase("en");i.has(b)&&n.addIssue({code:fe.custom,path:["engines",f,"provider"],message:`Duplicate engine provider "${h.provider}"`}),i.add(b)});const r=new Set;e.queries.forEach((h,f)=>{r.has(h.queryId)&&n.addIssue({code:fe.custom,path:["queries",f,"queryId"],message:`Duplicate query id "${h.queryId}"`}),r.add(h.queryId)});const u=new Set;e.competitors?.forEach((h,f)=>{const b=h.domain;u.has(b)&&n.addIssue({code:fe.custom,path:["competitors",f,"domain"],message:`Duplicate competitor domain "${h.domain}"`}),u.add(b)})}d({capturedAt:s().datetime(),identity:V3,country:s(),language:s(),location:Jt.nullable(),engines:y($3).min(1),competitors:y(K3).optional(),queries:y(G3)}).strict().superRefine(H3);d({schemaVersion:E(yB),capturedAt:s().datetime(),identity:V3,country:s(),language:s(),location:Jt.nullable(),engines:y($3).min(1),competitors:y(K3).optional(),queries:y(vB)}).strict().superRefine(H3);const xB=k(["auto","simple","advanced"]),wB=k(["simple","advanced"]),F3=k(["branded","non-brand","unknown","all"]),SB=k(["branded","non-brand","unknown"]),u1=k(["project","group","market","property"]),Q3=Ue("kind",[d({kind:E("all")}).strict(),d({kind:E("none")}).strict(),d({kind:E("exact"),value:s().trim().min(1)}).strict()]);function kB(e){if(e===void 0||e==="")return{kind:"all"};const n=e.normalize("NFKC").trim();return n===""?{kind:"all"}:n.toLocaleLowerCase("en")==="none"?{kind:"none"}:{kind:"exact",value:n}}const St=s().trim().min(1),Gi=s().datetime(),jB={mode:xB.default("auto"),queryClass:F3.default("non-brand"),scope:u1.default("project"),scopeKey:St.optional(),marketKey:St.optional(),provider:St.optional(),model:St.optional(),location:s().trim().min(1).optional(),from:Gi.optional(),to:Gi.optional(),revision:m().int().positive().optional(),runId:St.optional(),queryKey:St.optional(),queryId:St.optional(),search:s().trim().min(1).optional(),cursor:St.optional(),limit:m().int().min(1).max(100).default(50)},mm=d(jB).strict().superRefine((e,n)=>{e.scope!=="project"&&e.scopeKey===void 0&&n.addIssue({code:fe.custom,path:["scopeKey"],message:`scopeKey is required for ${e.scope} scope`}),e.scope==="project"&&e.scopeKey!==void 0&&n.addIssue({code:fe.custom,path:["scopeKey"],message:"scopeKey is not valid for project scope"}),e.scope==="market"&&e.marketKey!==void 0&&n.addIssue({code:fe.custom,path:["marketKey"],message:"marketKey is not valid for market scope"}),e.from!==void 0&&e.to!==void 0&&e.from>e.to&&n.addIssue({code:fe.custom,path:["to"],message:"to must be on or after from"}),e.queryKey!==void 0&&e.queryId!==void 0&&n.addIssue({code:fe.custom,path:["queryId"],message:"queryKey and queryId cannot both be supplied"})});mm.transform(e=>({...e,location:kB(e.location)}));const Da=d({numerator:m().int().nonnegative().nullable(),denominator:m().int().nonnegative().nullable(),rate:we(m().min(0).max(1)).nullable(),reason:k(["no-population","incomplete","evidence-incomplete","identity-ambiguous","not-applicable"]).optional(),unattributed:m().int().positive().optional(),unchecked:m().int().positive().optional()}).strict().superRefine((e,n)=>{if(e.numerator===null||e.denominator===null||e.rate===null){(e.numerator!==null||e.denominator!==null||e.rate!==null||e.reason===void 0)&&n.addIssue({code:fe.custom,message:"Unavailable rates require null values and a reason"}),e.unattributed!==void 0&&n.addIssue({code:fe.custom,path:["unattributed"],message:"Only an available rate can leave answers out"}),e.unchecked!==void 0&&n.addIssue({code:fe.custom,path:["unchecked"],message:"Only an available rate can leave answers out"});return}e.reason!==void 0&&n.addIssue({code:fe.custom,message:"Available rates cannot carry a reason"}),e.unattributed!==void 0&&e.unchecked!==void 0&&n.addIssue({code:fe.custom,path:["unchecked"],message:"A rate reads one signal: unattributed (mention) and unchecked (citation) cannot share it"});const{numerator:r,denominator:u}=e;u===null||r===null||(u===0&&n.addIssue({code:fe.custom,path:["denominator"],message:"Available rates require a positive denominator"}),r>u&&n.addIssue({code:fe.custom,path:["numerator"],message:"Numerator cannot exceed denominator"}))}),Z3=Ue("kind",[d({kind:E("frozen-simple"),definitionRevision:de()}).strict(),d({kind:E("legacy-simple"),definitionRevision:de()}).strict(),d({kind:E("frozen-advanced"),definitionRevision:m().int().positive()}).strict(),d({kind:E("unsupported-advanced-v1"),definitionRevision:m().int().positive()}).strict()]),pm=d({id:St,label:s().trim().min(1),kind:u1,targetCount:m().int().nonnegative(),parentGroupIds:y(St).optional(),marketKeys:y(St).optional()}).strict(),AB=d({provider:St,model:St}).strict(),NB=d({providers:y(St),models:y(AB),locations:y(Q3)}).strict(),CB=d({queryCount:m().int().nonnegative(),answerCount:m().int().nonnegative(),mentionCoverage:Da,citationCoverage:Da,propertyReach:Da,outcomes:d({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().superRefine((e,n)=>{e.bothSignals+e.mentionedOnly+e.citedOnly+e.neither+e.notMeasured!==e.total&&n.addIssue({code:fe.custom,message:"Outcome partition must sum to total"})}),notMeasuredUnchecked:m().int().positive().optional()}).strict().superRefine((e,n)=>{e.notMeasuredUnchecked!==void 0&&e.notMeasuredUnchecked>e.outcomes.notMeasured&&n.addIssue({code:fe.custom,path:["notMeasuredUnchecked"],message:"notMeasuredUnchecked is a subset of outcomes.notMeasured"})}),_B=d({runId:St,createdAt:Gi,revision:m().int().positive().nullable(),provenance:Z3,queryCount:m().int().nonnegative(),answerCount:m().int().nonnegative(),mentionCoverage:Da,citationCoverage:Da,continuity:d({state:k(["first","comparable","definition-changed","model-changed","legacy-unknown"]),comparedRunId:s().nullable()}).strict()}).strict(),TB=d({sourceSnapshotIds:y(St).default([]),queryKey:St,queryId:s().nullable(),query:s(),provider:St,model:s().nullable(),location:s().nullable(),targetKeys:y(St),marketKeys:y(St).optional(),answerCount:m().int().nonnegative(),mentionCoverage:Da,citationCoverage:Da,uncheckedSources:d({answers:m().int().positive(),citedAnswers:m().int().nonnegative(),citedTargetKeys:y(St)}).strict().superRefine((e,n)=>{e.citedAnswers>e.answers&&n.addIssue({code:fe.custom,path:["citedAnswers"],message:"citedAnswers cannot exceed answers"}),e.citedAnswers===0!=(e.citedTargetKeys.length===0)&&n.addIssue({code:fe.custom,path:["citedTargetKeys"],message:"citedTargetKeys is empty exactly when no saved link cites a Property"})}).optional()}).strict(),EB=d({answerId:St,runId:St,queryKey:St,query:s(),provider:St,model:s().nullable(),location:s().nullable(),targetKeys:y(St),mentioned:N().nullable(),mentionUnavailableReason:E("identity-ambiguous").optional(),cited:N().nullable(),answerText:s().nullable(),createdAt:Gi,sources:y(s()),observedCompetitors:y(St)}).strict(),RB=d({domain:St,answerCount:m().int().nonnegative(),mentionCoverage:Da,citationCoverage:Da}).strict(),DB=d({name:St,answerCount:m().int().nonnegative()}).strict(),zB=Ue("state",[d({state:E("available")}).strict(),d({state:E("unavailable"),reason:E("frozen-competitor-identity-missing")}).strict()]),rS=d({id:St,label:s().trim().min(1),queryCount:m().int().nonnegative(),mentionCoverage:Da,citationCoverage:Da}).strict();function lS(e){return d({items:y(e),nextCursor:s().nullable(),total:m().int().nonnegative()}).strict()}const Y3=k(["current-unavailable","previous-unavailable","not-applicable"]),Kae=Y3.enum,Vf=Ue("state",[d({state:E("available"),previous:Da,delta:we(m().min(-1).max(1))}).strict(),d({state:E("unavailable"),reason:Y3}).strict()]),cS=d({id:St,createdAt:Gi,completedAt:Gi.nullable()}).strict(),X3=k(["no-selected-run","no-previous-run","scoped-run","partial-run","definition-changed","model-changed","legacy-unknown"]),Gae=X3.enum,IB=Ue("state",[d({state:E("available"),previousRun:cS,mentionCoverage:Vf,citationCoverage:Vf,propertyReach:Vf}).strict(),d({state:E("unavailable"),reason:X3,previousRun:cS.nullable()}).strict()]),OB=d({queryClass:SB,summary:CB,trend:y(_B),comparison:IB.optional(),queries:lS(TB),evidence:lS(EB),competitorAvailability:zB,competitors:y(RB),observedCompetitors:y(DB),breakdown:d({properties:y(rS),groups:y(rS)}).strict()}).strict(),PB=k(["measured","not-measured","partial"]),qB=d({state:PB,activeRevision:m().int().positive().nullable(),measuredRevision:m().int().positive().nullable(),awaitingSweep:N(),pendingAssignmentCount:m().int().nonnegative(),completedAt:Gi.nullable()}).strict(),MB=d({mode:wB,queryClass:F3,scope:pm,market:pm.optional(),provider:s().nullable(),model:s().nullable(),location:Q3,time:d({from:Gi.nullable(),to:Gi.nullable()}).strict(),revision:m().int().positive().nullable(),run:d({id:s().nullable(),explicit:N()}).strict(),provenance:Z3,measurement:qB,availability:Ue("state",[d({state:E("available")}).strict(),d({state:E("unsupported"),reason:E("advanced-v1")}).strict()])}).strict();d({selection:MB,scopeOptions:y(pm),filterOptions:NB,populations:y(OB).min(1)}).strict().superRefine((e,n)=>{const i=e.selection.queryClass==="all"?["branded","non-brand","unknown"]:[e.selection.queryClass],r=e.populations.map(u=>u.queryClass);(r.length!==i.length||r.some((u,h)=>u!==i[h]))&&n.addIssue({code:fe.custom,path:["populations"],message:"Populations must exactly match the selected query class order"});for(const[u,h]of e.populations.entries()){const f=h.comparison;if(f?.state==="available")for(const b of["mentionCoverage","citationCoverage","propertyReach"]){const v=f[b];if(v.state!=="available")continue;const x=["populations",u,"comparison",b],S=h.summary[b].rate,j=v.previous.rate;S===null&&n.addIssue({code:fe.custom,path:x,message:"Available changes require a current rate"}),j===null&&n.addIssue({code:fe.custom,path:[...x,"previous","rate"],message:"Available changes require a previous rate"}),S!==null&&j!==null&&Math.abs(v.delta-(S-j))>Number.EPSILON&&n.addIssue({code:fe.custom,path:[...x,"delta"],message:"Delta must equal current minus previous"}),e.selection.run.id===null&&n.addIssue({code:fe.custom,path:x,message:"Available changes require a selected run"})}}});const J3=k(["retired-scope","retired-market"]),BB=J3.enum,LB=d({reason:J3,kind:u1.exclude(["project"]),key:St}).strict().superRefine((e,n)=>{e.reason===BB["retired-market"]&&e.kind!=="market"&&n.addIssue({code:fe.custom,path:["kind"],message:"retired-market details must name a market"})});function Hae(e){const n=LB.safeParse(e);return n.success?n.data:void 0}function UB(e,n){let i=e;for(const[r,u]of Object.entries(n))i=i.split(`{${r}}`).join(u);return i.trim()}const d1=s().regex(/^[a-f0-9]{64}$/),pa=s().trim().min(1).max(256),Qa=s().trim().min(1).max(4e3),m1=s().datetime(),Xm=s().regex(/^qtw_[a-f0-9]{64}$/),W3=s().regex(/^qtp_[a-f0-9]{64}$/),p1=k(["simple","advanced"]),eA=d({templateId:pa,templateVersion:s().trim().min(1).max(256),template:Qa,bindings:Ke(s().trim().min(1).max(128),s().trim().min(1).max(128)),output:Qa}).strict(),VB=d({source:k(["manual","query-set","template","research","discovery"]),sourceId:pa.nullable(),capturedAt:s().datetime(),template:eA.optional()}).strict().superRefine((e,n)=>{e.source==="template"&&e.template===void 0&&n.addIssue({code:fe.custom,path:["template"],message:"Template provenance is required for a template query."}),e.source!=="template"&&e.template!==void 0&&n.addIssue({code:fe.custom,path:["template"],message:"Only a template query may carry template provenance."})}),$B=Ue("source",[d({source:E("manual"),text:Qa}).strict(),d({source:E("template"),templateId:pa,templateVersion:s().trim().min(1).max(256),template:Qa}).strict(),d({source:E("research"),researchRunQueryId:pa}).strict(),d({source:E("discovery"),discoveryProbeId:pa}).strict()]),h1=d({targetKeys:y(ge).optional(),groupKeys:y(ge).optional(),marketKeys:y(ge).optional()}).strict(),KB=d({providers:y(bt).min(1),models:Ke(bt,s().trim().min(1)),location:s().trim().min(1).nullable()}).strict(),GB=d({input:$B,audience:h1.optional(),contexts:y(KB).min(1).optional(),queryClass:Bo.optional()}).strict(),HB=d({queryId:pa.optional(),queryText:Qa.optional(),audience:h1.optional()}).strict().superRefine((e,n)=>{e.queryId===void 0==(e.queryText===void 0)&&n.addIssue({code:fe.custom,message:"Provide exactly one of queryId or queryText."})}),FB=d({queryId:pa,audience:h1.optional(),text:Qa.optional(),queryClass:Fe([Bo,de()]).optional()}).strict().superRefine((e,n)=>{e.text===void 0&&e.queryClass===void 0&&n.addIssue({code:fe.custom,message:"Provide query text or a classification change."})}),QB=d({additions:y(GB),removals:y(HB),edits:y(FB).optional()}).strict(),ZB=QB.extend({expectedWorkspaceVersion:Xm}).strict();ZB.extend({previewToken:W3,reviewedAt:m1}).strict();const YB=d({stableKey:ge,label:s().trim().min(1)}).strict(),XB=d({stableKey:ge,parentGroupKey:ge.optional(),label:s().trim().min(1),targetKeys:y(ge)}).strict(),JB=d({stableKey:ge,groupKey:ge.optional(),label:s().trim().min(1),usageEdges:y(B0)}).strict(),WB=d({targetKey:ge,groupKeys:y(ge),marketKeys:y(ge),queryClass:Bo.nullable(),classificationSource:k(["frozen","server","operator"]),contexts:y(Vm).min(1)}).strict(),tA=d({queryId:pa,queryText:Qa,normalizedText:Qa,provenance:VB.nullable(),state:k(["tracked","awaiting-sweep"]),lastMeasuredAt:s().datetime().nullable(),assignments:y(WB)}).strict(),eL=d({researchRunId:pa,researchRunQueryId:pa,queryText:Qa,createdAt:s().datetime()}).strict(),tL=d({discoverySessionId:pa,discoveryProbeId:pa,queryText:Qa,createdAt:s().datetime()}).strict();d({mode:p1,workspaceVersion:Xm,active:d({revision:m().int().positive(),compiledChecksum:d1}).strict().nullable(),defaultContexts:y(Vm),targets:y(YB),groups:y(XB),markets:y(JB),scopeOptions:y(pm).optional(),tracked:y(tA),savedSources:d({research:y(eL),discovery:y(tL)}).strict()}).strict();const Id=d({queryId:pa,queryText:Qa,assignmentCount:m().int().nonnegative()}).strict(),nA=d({added:y(Id),removed:y(Id),reused:y(Id),unchanged:y(Id),noOp:N()}).strict(),aA=d({existingNodes:m().int().nonnegative(),existingProviderCalls:m().int().nonnegative(),nextSweepNodes:m().int().nonnegative(),nextSweepProviderCalls:m().int().nonnegative(),addedNodes:m().int().nonnegative(),addedProviderCalls:m().int().nonnegative(),removedNodes:m().int().nonnegative(),removedProviderCalls:m().int().nonnegative()}).strict();d({mode:p1,workspaceVersion:Xm,previewToken:W3,reviewedAt:m1,active:d({revision:m().int().positive(),compiledChecksum:d1}).strict().nullable(),tracked:y(tA),diff:nA,workload:aA}).strict();d({committed:N(),mode:p1,workspaceVersion:Xm,reviewedAt:m1,active:d({revision:m().int().positive(),compiledChecksum:d1}).strict().nullable(),diff:nA,workload:aA}).strict();k(["proposed","alias","shared","unmatched","excluded"]);k(["primary-match","exact-slug-match","excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"]);const nL=k(["invalid-url","unowned-host","duplicate-url","url-cap-reached"]),aL=d({kind:k(["exact","prefix","suffix","contains"]),value:s().trim().min(1)}).strict(),uS=d({host:s().trim().min(1),pathTemplate:s().trim().min(1)}).strict(),f1=d({primary:uS,aliases:y(uS).optional(),excludedSlugSuffixes:y(s().trim().min(1)).optional(),excludedSlugPatterns:y(aL).optional()}).strict();d({sitemapUrl:s().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:f1,maxUrls:m().int().positive().max(1e4).optional()}).strict();const $f=d({url:s(),canonicalUrl:s().nullable(),classification:k(["shared","unmatched","excluded"]),reason:k(["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"})}),iL=d({classification:E("proposed"),reason:E("primary-match"),stableKey:bn,slug:s().trim().min(1),label:s().trim().min(1),primaryUrl:s().url(),aliasCoverageUrls:y(s().url())}).strict(),sL=d({classification:E("alias"),reason:E("exact-slug-match"),slug:s().trim().min(1),url:s().url(),targetStableKey:bn}).strict(),oL=d({kind:nL,url:s(),canonicalUrl:s().nullable(),duplicateOf:s().optional()}).strict();d({proposed:y(iL),aliases:y(sL),shared:y($f),unmatched:y($f),excluded:y($f),diagnostics:y(oL)}).strict().superRefine((e,n)=>{const i=[["shared",["shared"]],["unmatched",["unmatched"]],["excluded",["excluded"]]];for(const[r,u]of i)for(const h of e[r])u.includes(h.classification)||n.addIssue({code:"custom",path:[r],message:"Discovery item is in the wrong result bucket"})});const g1=k(["assigned","sibling","ownedUnmapped","external","ambiguous","invalid"]),iA=k(["baseline","target"]),sA=k(["incomplete","evidence-incomplete","identity-ambiguous","no-population","aliasless","no-competitors","no-project-aliases"]),zo=Fe([d({numerator:m().int().nonnegative(),denominator:m().int().positive(),rate:we(m().min(0).max(1)),unattributed:m().int().positive().optional(),unchecked:m().int().positive().optional()}).strict(),d({numerator:de(),denominator:de(),rate:de(),reason:sA}).strict()]).superRefine((e,n)=>{e.numerator!==null&&e.numerator>e.denominator&&n.addIssue({code:"custom",path:["numerator"],message:"Rate numerator cannot exceed denominator"}),e.numerator!==null&&e.unattributed!==void 0&&e.unchecked!==void 0&&n.addIssue({code:"custom",path:["unchecked"],message:"A rate reads one signal: unattributed (mention) and unchecked (citation) cannot share it"})}),rL=s().trim().min(1).overwrite(e=>e.toLocaleLowerCase("en")),lL=d({executionId:s().trim().min(1),queryText:s().trim().min(1),provider:rL,context:Jt.nullable(),requestedModel:s().trim().min(1).optional()}).strict();d({schemaVersion:E(1),expectedSlots:y(lL)}).strict().superRefine((e,n)=>{const i=new Set;for(const[r,u]of e.expectedSlots.entries()){const h=[u.executionId,u.provider].join("\0");i.has(h)&&n.addIssue({code:"custom",path:["expectedSlots",r],message:"Duplicate expected provider slot"}),i.add(h)}});const Jm=d({executed:m().int().nonnegative(),expected:m().int().nonnegative(),complete:N(),sourceComplete:N(),sourceCompleteObservations:m().int().nonnegative(),answerComplete:N()}).strict(),dS=Fe([d({domain:s().trim().min(1),own:N(),presentIn:m().int().nonnegative(),of:m().int().positive()}).strict(),d({domain:s().trim().min(1),own:N(),presentIn:de(),of:de(),reason:sA}).strict()]),cL=d({domains:y(dS),providers:y(d({provider:bt,domains:y(dS)}).strict())}).strict(),uL=d({provider:bt,completeness:Jm,answerCoverage:zo}).strict(),dL=d({id:s().trim().min(1),label:s().trim().min(1),targetIds:y(s().trim().min(1)),completeness:Jm,answerCoverage:zo,targetCoverage:zo,sov:cL,providers:y(uL)}).strict(),mL=d({provider:bt,completeness:Jm,citationCoverage:zo,mentionCoverage:zo}).strict(),pL=d({id:s().trim().min(1),label:s().trim().min(1),completeness:Jm,citationCoverage:zo,mentionCoverage:zo,providers:y(mL)}).strict(),oA=d({observationId:s().trim().min(1),expectedSlotId:s().trim().min(1),executionId:s().trim().min(1),usageEdgeId:s().trim().min(1),usageEdgeType:iA,provider:bt,queryText:s().trim().min(1),location:s().nullable(),sourceUrl:s(),bridged:N(),historical:N(),evidenceComplete:N(),classification:g1,normalizedUrl:s().nullable(),matchedTargetIds:y(s().trim().min(1)),matchedUrlIds:y(s().trim().min(1))}).strict(),hL=d({sourceUrl:s(),normalizedUrl:s().nullable(),classification:g1,matchedTargetIds:y(s().trim().min(1)),matchedUrlIds:y(s().trim().min(1))}).strict(),fL=d({observationId:s().trim().min(1),expectedSlotId:s().trim().min(1),executionId:s().trim().min(1),usageEdgeId:s().trim().min(1),usageEdgeType:iA,provider:bt,queryText:s().trim().min(1),location:s().nullable(),queryClass:Fe([k(["branded","non-brand"]),de()]),mentioned:N().nullable(),cited:N().nullable(),sources:y(hL),sourceCount:m().int().nonnegative(),sourcesTruncated:N(),bridged:N(),historical:N(),evidenceComplete:N()}).strict(),gL=d({sourceUrl:s(),normalizedUrl:s().nullable(),matchedUrlIds:y(s().trim().min(1))}).strict(),yL=d({observationId:s().trim().min(1),expectedSlotId:s().trim().min(1),executionId:s().trim().min(1),provider:bt,queryText:s().trim().min(1),location:s().nullable(),queryClass:k(["branded","non-brand"]),assignedTargetKeys:y(ge).min(1),sources:y(gL).min(1),sourceCount:m().int().positive(),sourcesTruncated:N(),evidenceComplete:N()}).strict(),bL=d({bridgedObservationIds:y(s()),historicalObservationIds:y(s()),evidenceIncompleteObservationIds:y(s()),ambiguousObservationIds:y(s()),unmatchedObservationIds:y(s())}).strict(),vL=d({id:s().trim().min(1),status:k(["completed","partial"]),createdAt:s().datetime(),startedAt:s().datetime().nullable(),finishedAt:s().datetime().nullable()}).strict();d({revision:m().int().positive(),queryClass:ea.nullable().optional(),run:vL.nullable(),groups:y(dL),targets:y(pL),evidence:y(oA),diagnostics:bL}).strict();d({property:d({targetKey:ge,label:s().min(1)}).strict(),queryClass:ea,measurement:d({state:U0,displayedRunId:s().min(1).optional(),completedAt:s().datetime().optional()}).strict(),evidence:_o(oA).optional(),answers:_o(fL).optional(),otherQueries:_o(yL).optional()}).strict().refine(e=>[e.evidence,e.answers,e.otherQueries].filter(n=>n!==void 0).length===1,{message:"Exactly one of evidence, answers or otherQueries is present, naming the shape that was served."});const y1=k(["queued","running","completed","partial","failed"]);y1.enum;const rA=k(["not_answer_visibility","not_plan_run","scoped_or_probe","status_not_partial","plan_revision_changed","manifest_unreadable","model_not_frozen","model_retired","provider_not_in_plan","provider_nothing_missing","provider_not_configured","too_old","superseded","quota_insufficient"]);rA.enum;d({providers:y(bt).min(1).optional(),dryRun:N().optional()}).strict();const lA=d({id:s(),runId:s(),projectId:s(),status:y1,providers:y(s()),expected:m().int().nonnegative(),filled:m().int().nonnegative(),error:s().nullable(),createdAt:s(),startedAt:s().nullable(),finishedAt:s().nullable()}),xL=d({runId:s(),status:ta,planned:N(),readable:N(),expected:m().int().nonnegative(),executed:m().int().nonnegative(),missing:m().int().nonnegative(),missingByProvider:Ke(s(),m().int().nonnegative()),fillable:N(),refusal:d({code:rA,message:s()}).nullable(),latestFill:lA.nullable()}),wL=k(["queued","already-complete","dry-run"]);d({outcome:wL,completeness:xL,fill:lA.nullable()});const fa=s().trim().min(1),Us=s().trim().min(1),SL=s().trim().min(1),je=m().int().nonnegative(),ru=d({state:U0,displayedRunId:fa.nullable(),planRevision:m().int().positive(),completedAt:s().datetime().nullable()}).strict(),Lo=d({targetKey:ge,label:Us}).strict(),ha={runId:fa.optional(),provider:bt.optional(),location:SL.optional()},Io=s().trim().min(1),Kf=5,kL=10,jL=5,AL=10,NL="tied Properties have both zero mentions and zero citations; ordered by name, not ranked",b1=k(["weakest-properties","strongest-mentions","weakest-mentions","excluded-mentions","markets","observed-names","cited-domains"]);b1.enum;d({runId:ha.runId,groupKey:ge.optional(),queryClass:ea.default("non-brand"),provider:ha.provider,location:ha.location,limit:m().int().positive().max(50).optional(),includeNestedMarkets:N().optional(),compact:N().optional(),list:b1.optional(),cursor:fa.optional(),answers:k(["all","not-mentioned"]).optional()}).strict();const mS=Eg,cA={metro:mS.nullable(),otherMetros:y(mS).min(1).optional(),submarkets:y(Us),queries:je},uA=d({name:Io,answers:je}).strict(),CL=d({name:Io,occurrences:je}).strict(),Wm=d({domain:s().trim().min(1),answers:je}).strict(),_L=Lo.extend({...cA,mentionCoverage:pn,citationCoverage:pn,flags:je,namedInsteadInAnswerText:y(uA).max(Kf).optional(),namedInsteadInAnswerTextTotal:je.optional(),citedDomains:y(Wm).max(Kf).optional(),citedDomainsTotal:je.optional(),recommendedInstead:y(CL).max(Kf).optional().meta({deprecated:!0,description:"Deprecated: read namedInsteadInAnswerText, which carries the same names in the same order. occurrences counts answers, exactly as answers does there."}),recommendedInsteadTotal:je.optional().meta({deprecated:!0,description:"Deprecated: read namedInsteadInAnswerTextTotal, which it always equals."}),recommendedInsteadTruncated:N().optional().meta({deprecated:!0,description:"Deprecated: true when namedInsteadInAnswerTextTotal exceeds the names returned in namedInsteadInAnswerText."})}).strict().superRefine((e,n)=>{e.namedInsteadInAnswerText!==void 0&&(e.namedInsteadInAnswerTextTotal===void 0||e.namedInsteadInAnswerText.length>e.namedInsteadInAnswerTextTotal)&&n.addIssue({code:fe.custom,path:["namedInsteadInAnswerTextTotal"],message:"Total cannot be smaller than the returned names"}),e.citedDomains!==void 0&&(e.citedDomainsTotal===void 0||e.citedDomains.length>e.citedDomainsTotal)&&n.addIssue({code:fe.custom,path:["citedDomainsTotal"],message:"Total cannot be smaller than the returned domains"}),e.recommendedInsteadTotal!==e.namedInsteadInAnswerTextTotal&&n.addIssue({code:fe.custom,path:["recommendedInsteadTotal"],message:"The deprecated total must equal namedInsteadInAnswerTextTotal"}),e.recommendedInstead!==void 0&&(e.recommendedInsteadTotal===void 0||e.recommendedInstead.length>e.recommendedInsteadTotal)&&n.addIssue({code:fe.custom,path:["recommendedInsteadTotal"],message:"Total cannot be smaller than the returned replacements"}),e.recommendedInstead!==void 0&&e.recommendedInsteadTotal!==void 0&&e.recommendedInsteadTruncated!==e.recommendedInstead.length<e.recommendedInsteadTotal&&n.addIssue({code:fe.custom,path:["recommendedInsteadTruncated"],message:"Truncation must agree with the replacement total"})}),TL=d({metro:Us.nullable(),count:m().int().positive()}).strict(),EL=d({count:m().int().min(2),mentionRate:we(),citationRate:we(),note:k([NL,"tied Properties are ordered by name, not ranked"]),byMetro:y(TL).optional(),namedInstead:y(uA).max(AL).optional(),namedInsteadTotal:je.optional()}).strict().superRefine((e,n)=>{e.namedInstead!==void 0&&(e.namedInsteadTotal===void 0||e.namedInstead.length>e.namedInsteadTotal)&&n.addIssue({code:fe.custom,path:["namedInsteadTotal"],message:"Total cannot be smaller than the returned names"})}),RL=d({basis:E("initial-weakest-selection-and-zero-signal-tie").optional(),properties:je,answers:je,domains:y(Wm).max(kL),domainTotal:je,ownDomainAnswers:je.optional()}).strict().superRefine((e,n)=>{e.ownDomainAnswers!==void 0&&e.ownDomainAnswers>e.answers&&n.addIssue({code:fe.custom,path:["ownDomainAnswers"],message:"Own-domain answers cannot exceed the basis"}),e.domains.length>e.domainTotal&&n.addIssue({code:fe.custom,path:["domainTotal"],message:"Total cannot be smaller than the returned domains"}),e.domains.some(i=>i.answers>e.answers)&&n.addIssue({code:fe.custom,path:["domains"],message:"A domain cannot be cited by more answers than the basis holds"})}),DL=d({groupKey:ge,label:Us,parentGroupKey:ge.nullable(),childMarketCount:je,propertyCount:je,propertiesMentioned:Eo,propertiesNeverMentioned:Eo.optional(),mentionCoverage:pn,citationCoverage:pn}).strict(),zL=d({population:E("top-level-markets"),queryClass:ea,totalMarkets:je,eligibleMarketCount:je,excludedMarketCount:je,items:y(d({groupKey:ge,label:Us,propertyCount:je,mentionCoverage:pn.options[0],citationCoverage:pn.options[0]}).strict()).max(jL)}).strict(),pS=Lo.extend({...cA,mentionCoverage:pn.options[0],citationCoverage:pn}).strict(),IL=d({eligiblePropertyCount:je,strongest:y(pS).max(50),weakest:y(pS).max(50),excluded:y(Lo.extend({reason:tu}).strict()),truncated:N(),excludedTotal:je.optional()}).strict();d({portfolio:d({groupKey:ge.nullable(),label:Us.nullable(),measurementScope:Fe([k(["full","spot_check"]),de()])}).strict(),measurement:ru,queryClass:ea,engines:y(bt),metrics:d({propertiesMentioned:Eo,propertiesNeverMentioned:Eo.optional(),mentionCoverage:pn,citationCoverage:pn}).strict(),weakestMarkets:zL.optional().describe("Compact unscoped ranking from actual full top-level metro aggregates before pagination. Each rate uses the complete selected run/filter/class market population; tiedAtWeakest.byMetro counts only zero-signal Properties and never supplies these rates."),weakestProperties:y(_L),tiedAtWeakest:EL.nullable(),weakestAnswerSources:RL.nullable().optional(),mentionRanking:IL,markets:y(DL),totalMarkets:je,marketsTruncated:N(),totalProperties:je,truncated:N(),pageList:b1.optional(),nextCursor:fa.nullable().optional(),detailsOmitted:y(s()).optional(),answerEvidence:d({answers:E("not-mentioned"),populationSize:je,answerCount:je,unknownMentionAnswers:je,observedNames:y(d({name:Io,answerCount:je}).strict()),observedNamesTotal:je,citedDomains:y(Wm),citedDomainsTotal:je}).strict().optional()}).strict().superRefine((e,n)=>{const i=e.detailsOmitted?.includes("weakestProperties.answerEvidence")??!1,r=["namedInsteadInAnswerText","namedInsteadInAnswerTextTotal","citedDomains","citedDomainsTotal","recommendedInstead","recommendedInsteadTotal","recommendedInsteadTruncated"];i||e.weakestProperties.forEach((u,h)=>{for(const f of r)u[f]===void 0&&n.addIssue({code:fe.custom,path:["weakestProperties",h,f],message:"Detailed evidence is required unless explicitly omitted by the compact projection"})}),e.weakestAnswerSources===void 0&&!e.detailsOmitted?.includes("weakestAnswerSources")&&n.addIssue({code:fe.custom,path:["weakestAnswerSources"],message:"Source evidence is required unless explicitly omitted by the compact projection"}),e.marketsTruncated!==e.markets.length<e.totalMarkets&&n.addIssue({code:fe.custom,path:["marketsTruncated"],message:"Market truncation must agree with the market total"})});d({targetKey:ge,runId:ha.runId,provider:ha.provider,location:ha.location,queryClass:ea.optional(),offset:m().int().nonnegative().optional(),limit:m().int().positive().max(100).optional()}).strict();k(["answered","missing"]);const Mg={queryId:fa,text:Us,class:M0,provider:bt,requestedModel:s().nullable(),servedModel:s().nullable(),location:s().nullable()},OL=Ue("status",[d({resultId:fa,...Mg,status:E("answered"),mentioned:N().nullable(),cited:N().nullable(),recommendedInstead:y(Io),answerExcerpt:s().nullable()}).strict(),d({resultId:de(),...Mg,status:E("missing"),mentioned:de(),cited:de(),recommendedInstead:y(Io).length(0),answerExcerpt:de()}).strict()]);d({property:Lo,measurement:ru,queryClass:ea,questions:y(OL),total:je,truncated:N()}).strict();d({targetKey:ge,resultId:fa}).strict();const PL=d({url:fa,classification:g1,matchedTargetKeys:y(ge),assigned:N(),historical:N(),evidenceComplete:N()}).strict().superRefine((e,n)=>{e.assigned!==(e.classification==="assigned")&&n.addIssue({code:fe.custom,path:["assigned"],message:"Assigned must agree with the source attribution classification"})});d({property:Lo,measurement:ru,question:d({resultId:fa,...Mg,status:E("answered")}).strict(),mentioned:N().nullable(),cited:N().nullable(),recommendedInstead:y(Io),answer:s().nullable(),sources:y(PL),captureStatus:Fe([Lm,de()]),retrievalStatus:Fe([j0,de()]),retrievalContract:Fe([A0,de()])}).strict();d({targetKey:ge,runId:ha.runId,provider:ha.provider,location:ha.location,queryClass:ea.optional(),limit:m().int().positive().max(50).optional()}).strict();const qL=Ue("state",[d({state:E("available"),answeredResults:je,targetMissResults:je,recommendationOccurrences:je}).strict(),d({state:E("unavailable"),reason:tu}).strict()]),ML=d({name:Io,occurrences:je,providers:y(bt).max(5),providerTotal:je,providersTruncated:N(),questions:y(Us).max(5),questionTotal:je,questionsTruncated:N()}).strict().superRefine((e,n)=>{(e.providers.length>e.providerTotal||e.questions.length>e.questionTotal)&&n.addIssue({code:fe.custom,message:"Evidence totals cannot be smaller than returned evidence"}),e.providersTruncated!==e.providers.length<e.providerTotal&&n.addIssue({code:fe.custom,path:["providersTruncated"],message:"Provider truncation must agree with its total"}),e.questionsTruncated!==e.questions.length<e.questionTotal&&n.addIssue({code:fe.custom,path:["questionsTruncated"],message:"Question truncation must agree with its total"})}),BL=10;d({property:Lo,measurement:ru,queryClass:ea,basis:qL,competitors:y(ML),total:je,truncated:N(),citedDomains:y(Wm).max(BL).optional(),citedDomainsTotal:je.optional(),citedDomainsAnswers:je.optional()}).strict().superRefine((e,n)=>{const{citedDomains:i,citedDomainsTotal:r,citedDomainsAnswers:u}=e;if(i!==void 0){if(r===void 0||u===void 0){n.addIssue({code:fe.custom,path:["citedDomains"],message:"Cited domains require their total and answer basis"});return}i.length>r&&n.addIssue({code:fe.custom,path:["citedDomainsTotal"],message:"Total cannot be smaller than the returned domains"}),i.some(h=>h.answers>u)&&n.addIssue({code:fe.custom,path:["citedDomains"],message:"A domain cannot be cited by more answers than the basis holds"})}});const dA=k(["magnitude","label"]),LL=2,UL=k(["all","group","property"]);d({runId:ha.runId,scope:UL.default("all"),groupKey:ge.optional(),targetKey:ge.optional(),queryClass:ea.default(gP),provider:ha.provider,location:ha.location,limit:m().int().positive().max(50).optional(),sort:dA.optional()}).strict().superRefine((e,n)=>{e.scope==="all"&&(e.groupKey!==void 0||e.targetKey!==void 0)&&n.addIssue({code:fe.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:fe.custom,path:["groupKey"],message:"Group scope requires groupKey only"}),e.scope==="property"&&(e.targetKey===void 0||e.groupKey!==void 0)&&n.addIssue({code:fe.custom,path:["targetKey"],message:"Property scope requires targetKey only"})});const mA=k(["no_previous_run","execution_identity_changed","incomplete","not_comparable"]),pA=ru.extend({executionIdentity:fa.nullable(),measurementScope:Fe([k(["full","spot_check"]),de()])}).strict();function hA(e,n){if(e.previous.state!=="available"||e.current.state!=="available"){n.addIssue({code:fe.custom,message:"Available deltas require two available metrics"});return}Math.abs(e.delta-(e.current.value-e.previous.value))>Number.EPSILON&&n.addIssue({code:fe.custom,path:["delta"],message:"Delta must equal current minus previous"})}const fA=d({state:E("unavailable"),reason:tu}).strict(),hm=Ue("state",[d({state:E("available"),previous:pn,current:pn,delta:we()}).strict().superRefine(hA),fA]),VL=Ue("state",[d({state:E("available"),previous:Eo,current:Eo,delta:m().int()}).strict().superRefine(hA),fA]),Gf=d({propertiesMentioned:VL,mentionCoverage:hm,citationCoverage:hm}).strict(),$L=d({improved:je,declined:je,mixed:je,withinNoise:je,unchanged:je,notComparable:je,total:je,noiseAnswers:E(LL)}).strict().superRefine((e,n)=>{e.improved+e.declined+e.mixed+e.withinNoise+e.unchanged+e.notComparable!==e.total&&n.addIssue({code:fe.custom,path:["total"],message:"Move buckets must sum to total"})}),KL=Lo.extend({mentionCoverage:hm,citationCoverage:hm,flags:je,mentionAnswersDelta:m().int().nullable().optional(),citationAnswersDelta:m().int().nullable().optional(),denominatorChanged:N().optional(),withinNoise:N().optional(),mentionWithinNoise:N().nullable().optional(),citationWithinNoise:N().nullable().optional()}).strict();d({current:pA,queryClass:ea.optional(),comparison:Ue("state",[d({state:E("available"),previous:d({displayedRunId:fa,planRevision:m().int().positive(),completedAt:s().datetime().nullable(),executionIdentity:fa,measurementScope:k(["full","spot_check"])}).strict(),metrics:Gf,metricsByClass:d({branded:Gf,nonBrand:Gf}).strict().optional(),sort:dA.optional(),distribution:$L.optional(),changedProperties:y(KL),totalProperties:je,truncated:N()}).strict(),d({state:E("unavailable"),reason:mA}).strict()])}).strict().superRefine((e,n)=>{if(e.comparison.state!=="available")return;const{distribution:i}=e.comparison;if(i!==void 0&&i.total-i.unchanged!==e.comparison.totalProperties&&n.addIssue({code:fe.custom,path:["comparison","distribution"],message:"Changed Properties must equal the distribution total less unchanged"}),e.current.displayedRunId===null||e.current.executionIdentity===null){n.addIssue({code:fe.custom,path:["current"],message:"A comparison requires an identified current run"});return}e.comparison.previous.planRevision!==e.current.planRevision&&n.addIssue({code:fe.custom,path:["comparison","previous","planRevision"],message:"Comparisons cannot cross plan revisions"}),e.comparison.previous.executionIdentity!==e.current.executionIdentity&&n.addIssue({code:fe.custom,path:["comparison","previous","executionIdentity"],message:"Comparisons cannot cross execution identities"})});d({runId:ha.runId}).strict();const GL=k(["no_completed_run","incomplete","evidence_incomplete","no_population","not_applicable"]),lu=d({state:E("unavailable"),reason:GL}).strict(),HL=d({state:E("available"),expected:je,executed:je,answered:je,missing:je}).strict(),FL=Ue("state",[HL,lu]).superRefine((e,n)=>{e.state==="available"&&(e.executed+e.missing!==e.expected&&n.addIssue({code:fe.custom,message:"Expected must equal executed plus missing"}),e.answered>e.executed&&n.addIssue({code:fe.custom,path:["answered"],message:"Answered cannot exceed executed"}))}),QL=d({state:E("available"),complete:je,partial:je,failed:je,unsupported:je,notRecorded:je}).strict(),ZL=Ue("state",[QL,lu]),YL=d({state:E("available"),used:je,notUsed:je,unknown:je,notApplicable:je,notRecorded:je}).strict(),XL=Ue("state",[YL,lu]),JL=d({state:E("available"),expectedQuestions:je,answeredQuestions:je,missingQuestions:je}).strict(),WL=Ue("state",[JL,lu]).superRefine((e,n)=>{e.state==="available"&&e.answeredQuestions+e.missingQuestions!==e.expectedQuestions&&n.addIssue({code:fe.custom,message:"Expected questions must equal answered plus missing"})}),hS=Ue("state",[d({state:E("available"),answered:je,unattributed:je}).strict(),lu]).superRefine((e,n)=>{e.state==="available"&&e.unattributed>e.answered&&n.addIssue({code:fe.custom,path:["unattributed"],message:"Unattributed answers cannot exceed answered"})}),eU=d({status:y1,providers:y(s()),expected:je,filled:je,createdAt:s(),finishedAt:s().nullable()}).strict();d({run:pA,completeness:FL,capture:ZL,retrieval:XL,population:WL,comparison:Ue("state",[d({state:E("available"),previousDisplayedRunId:fa}).strict(),d({state:E("unavailable"),reason:mA}).strict()]),unattributedByClass:d({branded:hS,nonBrand:hS}).strict().optional(),latestFill:eU.nullable().optional()}).strict().superRefine((e,n)=>{if(e.completeness.state!=="available")return;const i=e.completeness.executed;e.capture.state==="available"&&e.capture.complete+e.capture.partial+e.capture.failed+e.capture.unsupported+e.capture.notRecorded!==i&&n.addIssue({code:fe.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!==i&&n.addIssue({code:fe.custom,path:["retrieval"],message:"Retrieval counts must total executed snapshots"})});const Fr=s().regex(/^[a-f0-9]{64}$/),Za=s().trim().min(1).max(256),di=m().int().positive(),fS=d({kind:k(["user","api-key","system"]),id:s().trim().min(1),label:s().trim().min(1)}).strict(),tU=k(["proposed","included","excluded"]),nU=k(["manual","sitemap"]),v1=d({stableKey:ge,label:s().trim().min(1),status:tU,aliases:y(s().trim().min(1)),identityAliases:y(s().trim().min(1)).optional(),urlMatchers:y(s().trim().min(1)),source:nU,discoveredUrl:s().trim().min(1).optional(),discoveryIdentity:s().trim().min(1).optional()}).strict(),ep=d({providers:y(bt).optional(),models:Ke(bt,s().trim().min(1)).optional(),locations:y(s().trim().min(1)).optional()}).strict(),aU=k(["branded","non-brand","unclassified"]),iU=k(["rule","operator"]),gA=d({targetKey:ge,queryId:Za,contextOverride:ep.optional(),executionContexts:y(Vm.extend({executionNodeKey:s().min(1).optional()})).min(1).optional(),queryProvenance:T2.optional(),queryClass:aU,classificationSource:iU}).strict().superRefine((e,n)=>{e.contextOverride!==void 0&&e.executionContexts!==void 0&&n.addIssue({code:"custom",path:["executionContexts"],message:"Use either frozen execution contexts or a context override, not both."})}),tp=_2,yA=d({stableKey:ge,label:s().trim().min(1),parentGroupKey:ge.optional(),targetKeys:y(ge),competitors:y(tp)}).strict(),sU=d({sitemapUrl:s().url(),rule:f1,exclusions:y(s().trim().min(1)),inputChecksum:Fr,reviewedAt:s().datetime().optional()}).strict(),oU=d({providers:y(bt),models:Ke(bt,s().trim().min(1)).optional(),locations:y(s().trim().min(1))}).strict(),bA=E2,rU=d({defaultContext:oU,targets:y(v1),assignments:y(gA),groups:y(yA),reportingScopes:y(bA).optional(),discovery:sU.optional()}).strict(),lU=d({id:s().trim().min(1),projectId:s().trim().min(1),schemaVersion:E(2),baseActiveVersionId:s().trim().min(1).nullable(),baseActiveRevision:di.nullable(),authoring:rU,createdBy:fS,updatedBy:fS,createdAt:s().datetime(),updatedAt:s().datetime()}).strict(),x1=d({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(),cU=d({code:s().trim().min(1),message:s().trim().min(1),path:y(Fe([s(),m().int()]))}).strict(),vA=d({etag:s().trim().min(1),changed:N(),warnings:y(cU),counts:x1}).strict();d({draft:lU.nullable(),etag:s().trim().min(1).nullable()}).strict();_o(v1);_o(gA);_o(yA);d({search:s().optional(),cursor:s().trim().min(1).optional(),limit:m().int().positive().max(L0).optional()}).strict();d({expectedActiveRevision:di.nullable()}).strict();d({sitemapUrl:s().url(),rule:f1,exclusions:y(s().trim().min(1)).optional()}).strict();const uU=d({discoveryIdentity:s().trim().min(1),action:k(["create","rebind","ignore"]),targetKey:ge.optional(),label:s().trim().min(1).optional()}).strict();d({selections:y(uU),selectedTargetKeys:y(ge).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."})});d({target:v1}).strict();d({targetKey:ge,label:s().trim().min(1)}).strict();d({targetKey:ge,mergedKeys:y(ge).min(1)}).strict();d({targetKey:ge,cleanup:E("assignments-and-group-memberships").optional()}).strict();d({targetKey:ge,discoveryIdentity:s().trim().min(1),discoveredUrl:s().url()}).strict();const xA={targetKeys:y(ge).optional(),groupKeys:y(ge).optional()};function wA(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."})}d(xA).strict().superRefine(wA);const dU=d({...xA,queryIds:y(Za).min(1),contextOverride:ep.optional()}).strict().superRefine(wA);Fe([d({targetKey:ge,queryIds:y(Za).min(1),contextOverride:ep.optional()}).strict(),dU]);const mU=d({groupKey:ge,label:s().trim().min(1),memberCount:m().int().positive()}).strict();d({draftEtag:s().trim().min(1),groups:y(mU),resolvedTargetKeys:y(ge),overlapCount:m().int().nonnegative(),assignments:d({requested:m().int().nonnegative(),added:m().int().nonnegative(),alreadyPresent:m().int().nonnegative()}).strict(),execution:d({addedNodes:m().int().nonnegative(),addedProviderCalls:m().int().nonnegative(),fullRunNodes:m().int().nonnegative(),fullRunProviderCalls:m().int().nonnegative()}).strict()}).strict();d({pairs:y(d({targetKey:ge,queryId:Za}).strict()).min(1),contextOverride:ep.optional()}).strict();Fe([d({targetKey:ge,queryId:Za}).strict(),d({targetKeys:y(ge).min(1),queryId:Za}).strict()]);d({targetKey:ge}).strict();d({queryClass:M0,assignments:y(d({targetKey:ge,queryId:Za}).strict()).min(1)}).strict();d({group:d({stableKey:ge,label:s().trim().min(1),parentGroupKey:ge.nullable().optional(),targetKeys:y(ge),competitors:y(tp).optional()}).strict()}).strict();d({market:bA}).strict();d({groupKey:ge}).strict();d({groupKey:ge,competitor:tp}).strict();d({expectedActiveRevision:di,groupKey:ge,domain:s().trim().min(1).refine(e=>Wc(e)!==null,"A competitor domain must be a valid hostname"),label:s().trim().min(1).optional(),aliases:y(s().trim().min(1)).optional()}).strict();vA.extend({groupKey:ge,competitor:tp,draftCreated:N(),published:d({revision:di,competitorsChanged:E(!1)}).strict()}).strict();d({groupKey:ge,competitorKey:ge}).strict();const fm=d({ruleId:s().trim().min(1),severity:k(["fail","warn"]),message:s().trim().min(1),path:y(Fe([s(),m().int()]))}).strict();Ue("ok",[d({ok:E(!0),compiledChecksum:Fr,checks:y(fm),counts:x1,plan:$m}).strict(),d({ok:E(!1),compiledChecksum:de(),checks:y(fm).min(1)}).strict()]);const gS=d({added:y(s().trim().min(1)),removed:y(s().trim().min(1)),changed:y(s().trim().min(1)),unchanged:y(s().trim().min(1))}).strict(),pU=d({activeRevision:di.nullable(),targets:gS,groups:gS,assignments:d({added:m().int().nonnegative(),removed:m().int().nonnegative(),reclassified:m().int().nonnegative()}).strict(),execution:d({addedNodeKeys:y(s().trim().min(1)),removedNodeKeys:y(s().trim().min(1))}).strict()}).strict();Ue("ok",[d({ok:E(!0),compiledChecksum:Fr,checks:y(fm),counts:x1,plan:$m,diff:pU}).strict(),d({ok:E(!1),compiledChecksum:de(),checks:y(fm).min(1),diff:de()}).strict()]);d({expectedActiveRevision:di.nullable(),expectedCompiledChecksum:Fr}).strict();d({published:N(),active:d({revision:di,checksum:Fr,compiledChecksum:Fr,createdAt:s().datetime(),plan:$m}).strict()}).strict();d({discarded:N()}).strict();d({expectedActiveRevision:di}).strict();d({deactivated:N(),previousRevision:di.nullable()}).strict();const hU=k(["republish_required","setup_in_progress","awaiting_first_run","operational","simple"]),fU=k(["republish_setup","continue_setup","run_measurement","view_measurement","start_setup"]),gU=k(["simple","draft-only","active-v1","active-v2"]);d({state:hU,nextAction:fU,mode:gU,answerVisibilityProviderReady:N(),activeRevision:di.nullable(),activeSchemaVersion:Fe([E(1),E(2)]).nullable(),draft:d({etag:s().trim().min(1),updatedAt:s().datetime()}).strict().nullable()}).strict();const SA=d({id:s().trim().min(1),projectId:s().trim().min(1),name:s().trim().min(1),description:s().nullable(),itemCount:m().int().nonnegative(),createdAt:s().datetime(),updatedAt:s().datetime()}).strict(),yU=d({queryId:Za,queryText:s().min(1),position:m().int().nonnegative()}).strict();SA.extend({items:y(yU)}).strict();d({querySets:y(SA)}).strict();d({name:s().trim().min(1),description:s().nullable().optional(),queryIds:y(Za)}).strict();const bU=d({id:s().trim().min(1),projectId:s().trim().min(1),name:s().trim().min(1),description:s().nullable(),pattern:s().trim().min(1),variables:y(s().trim().min(1)),createdAt:s().datetime(),updatedAt:s().datetime()}).strict();d({templates:y(bU)}).strict();d({name:s().trim().min(1),description:s().nullable().optional(),pattern:s().trim().min(1),variables:y(s().trim().min(1))}).strict();d({bindings:y(Ke(s().trim().min(1),s().trim().min(1))).min(1),querySetId:s().trim().min(1).optional()}).strict();d({created:y(d({queryId:Za,queryText:s().min(1)}).strict()),existing:y(d({queryId:Za,queryText:s().min(1)}).strict())}).strict();const gm=s().regex(/^[a-f0-9]{64}$/),np=m().int().positive();d({stableKey:ge,kind:k(["target","group"]),retiredAt:s().datetime().nullable()}).strict();d({csv:s()}).strict();k(["matched","ambiguous","unmatched","invalid","duplicate","proposed","excluded"]);const vU=k(["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"]),Bg=d({dataRow:np,property:s(),group:s(),url:s().nullable(),normalizedProperty:s(),normalizedGroupLabel:s()}).strict(),vc=Bg.extend({reason:vU}),xU=d({source:k(["draft-target","draft-group","persisted-segment","retired-segment","proposed-group"]),stableKey:ge,kind:k(["target","group"]).optional(),retiredAt:s().datetime().nullable().optional(),normalizedGroupLabel:s().optional()}).strict(),wU=d({proposedGroupKey:ge,evidence:y(xU).min(1)}).strict(),SU=Ue("status",[Bg.extend({status:E("matched"),targetKey:ge,groupKey:ge}).strict(),vc.extend({status:E("ambiguous"),candidateTargetKeys:y(ge).min(1).optional(),candidateGroupKeys:y(ge).min(1).optional()}).strict(),vc.extend({status:E("unmatched")}).strict(),vc.extend({status:E("invalid"),groupKeyConflict:wU.optional()}).strict(),Bg.extend({status:E("duplicate"),duplicateOfRow:np,targetKey:ge,groupKey:ge}).strict(),vc.extend({status:E("proposed"),targetKey:ge}).strict(),vc.extend({status:E("excluded"),targetKey:ge}).strict()]),kU=d({normalizedGroupLabel:s(),groupKey:ge,label:s().trim().min(1),action:k(["create","extend"]),matchedRows:y(np),targetKeys:y(ge),addedTargetKeys:y(ge),unchangedTargetKeys:y(ge)}).strict(),jU=d({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();d({draftEtag:s().trim().min(1),sourceChecksum:gm,previewChecksum:gm,rows:y(SU),groupChanges:y(kU),counts:jU}).strict();d({csv:s(),sourceChecksum:gm,previewChecksum:gm,acceptedRows:y(np).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."})});vA.extend({appliedRows:m().int().nonnegative(),addedMemberships:m().int().nonnegative(),unchangedMemberships:m().int().nonnegative()}).strict();const Co=d({slope:m(),intercept:m(),r2:m(),start:m(),end:m(),n:m(),startIndex:m(),endIndex:m()}),AU=k(["gsc","ga4","gbp"]);d({id:s(),domain:s(),connectionType:AU,propertyId:s().nullable().optional(),sitemapUrl:s().nullable().optional(),scopes:y(s()).default([]),createdAt:s(),updatedAt:s()});d({authUrl:s().url(),redirectUri:s().url()}).strict();const NU=d({date:s(),query:s(),page:s(),country:s().nullable().optional(),device:s().nullable().optional(),clicks:m(),impressions:m(),ctr:we(),position:m()});k(["clicks","impressions","date"]);d({rows:y(NU),totalMatching:m(),truncated:N(),latestAvailableDate:s().nullable()});const CU=d({date:s(),clicks:m(),impressions:m(),ctr:we(),position:m().nullable()}),kA=d({startDate:s().nullable(),endDate:s().nullable(),latestDataDate:s().nullable(),daysSinceLatestData:m().nullable()}),_U=d({clicks:Co.nullable(),impressions:Co.nullable(),ctr:Co.nullable(),position:Co.nullable()}),yS=d({startDate:s(),endDate:s(),clicks:m(),impressions:m(),ctr:we().nullable(),position:m().nullable(),source:k(["property-daily","dimensioned","mixed","empty"])}),TU=d({days:m(),basis:k(["prior-window","split-window"]).optional(),prior:yS,trailing:yS,comparable:N(),change:d({clicks:we().nullable(),impressions:we().nullable(),ctr:we().nullable(),position:we().nullable()})});d({totals:d({clicks:m(),impressions:m(),ctr:we(),position:m().nullable(),positionDays:m(),days:m()}),daily:y(CU),window:kA.optional(),trends:_U.optional(),periodComparison:TU.nullable().optional()});const EU=d({page:s(),clicks:m(),impressions:m(),ctr:we()});d({rows:y(EU),totals:d({clicks:m(),impressions:m(),ctr:we(),days:m(),coveredFrom:s().nullable(),coveredThrough:s().nullable(),complete:N()}).nullable(),totalsSource:E("property-daily"),rankedFrom:s().nullable(),rankedThrough:s().nullable()});const RU=k(["google","page-summed","mixed"]),DU=d({query:s(),clicks:m(),impressions:m(),ctr:we(),position:m(),days:m(),source:RU});d({rows:y(DU),totalMatching:m(),truncated:N(),window:kA.extend({earliestDataDate:s().nullable().optional()})});const Lg=d({id:s(),url:s(),indexingState:s().nullable().optional(),verdict:s().nullable().optional(),coverageState:s().nullable().optional(),pageFetchState:s().nullable().optional(),robotsTxtState:s().nullable().optional(),crawlTime:s().nullable().optional(),lastCrawlResult:s().nullable().optional(),isMobileFriendly:N().nullable().optional(),richResults:y(s()).default([]),referringUrls:y(s()).default([]),inspectedAt:s()});k(["stable","reindexed","deindexed","still-missing","new"]);const zU=d({url:s(),previousState:s().nullable(),currentState:s().nullable(),transitionDate:s()}),IU=d({reason:s(),count:m(),urls:y(Lg).default([])});d({summary:d({total:m(),indexed:m(),notIndexed:m(),deindexed:m(),percentage:ot(),indexedShare:we(m().min(0).max(1)).nullable(),notIndexedShare:we(m().min(0).max(1)).nullable()}),lastInspectedAt:s().nullable(),lastSyncedAt:s().nullable(),indexed:y(Lg).default([]),notIndexed:y(Lg).default([]),deindexed:y(zU).default([]),reasonGroups:y(IU).default([])});d({url:s(),type:k(["URL_UPDATED","URL_DELETED"]),notifiedAt:s()});const OU=d({url:s(),type:k(["URL_UPDATED","URL_DELETED"]),notifiedAt:s(),status:k(["success","error"]),error:s().optional()});d({summary:d({total:m().int().nonnegative(),succeeded:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(OU).default([])});d({date:s(),indexed:m(),notIndexed:m(),unknownPages:m().default(0),verifiedByInspection:m().default(0),derivedFromImpressions:m().default(0),reasonBreakdown:Ke(s(),m()).default({})});const PU=d({siteUrl:s(),permissionLevel:s()});d({sites:y(PU).default([])});const qU=d({type:s(),submitted:s(),indexed:s().optional().describe("Deprecated compatibility field.")}),jA=d({path:s(),parentSitemapUrl:s().optional(),lastSubmitted:s().optional(),isPending:N().optional(),isSitemapsIndex:N().optional(),type:s().optional(),lastDownloaded:s().optional(),warnings:s().optional(),errors:s().optional(),contents:y(qU).optional()});d({sitemaps:y(jA).default([]),summary:d({total:m().int().nonnegative(),indexes:m().int().nonnegative(),files:m().int().nonnegative()}),preferredSubmissionUrls:y(s()).default([])});d({sitemapUrls:y(s().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 MU=d({sitemapUrl:s(),status:k(["accepted","error"]),submittedAt:s().optional(),error:s().optional()});d({summary:d({total:m().int().nonnegative(),accepted:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(MU)});d({sitemaps:y(jA),primarySitemapUrl:s(),run:d({id:s(),projectId:s(),kind:s(),status:s(),trigger:s(),createdAt:s()}).nullable()});const mt=s().trim().min(1),bS=s().regex(/^[a-f0-9]{64}$/i),BU=k(["not-connected","selection-required","connected","stale"]),Od=BU.enum,LU=k(["live","draft"]),AA=LU.enum,Zd=d({accountId:mt.nullable(),containerId:mt.nullable(),workspaceId:mt.nullable(),selectedAt:s().nullable()}).strict(),Hf=d({id:mt,projectId:mt,scopes:y(s()).default([]),selection:Zd,lastValidatedAt:s().nullable(),lastSnapshotAt:s().nullable(),createdAt:s(),updatedAt:s()}).strict(),NA=d({id:mt,path:s(),name:s(),shareData:N().nullable()}).strict(),CA=d({accountId:mt,id:mt,path:s(),name:s(),publicId:s().nullable(),domainName:s().nullable(),usageContexts:y(s())}).strict(),w1=d({accountId:mt,containerId:mt,id:mt,path:s(),name:s(),description:s().nullable(),fingerprint:s().nullable()}).strict(),UU=d({accounts:y(NA),totalAccessible:m().int().nonnegative(),truncated:N(),fetchedAt:s()}).strict();d({accountId:mt,containers:y(CA),totalAccessible:m().int().nonnegative(),truncated:N(),fetchedAt:s()}).strict();d({accountId:mt,containerId:mt,workspaces:y(w1),totalAccessible:m().int().nonnegative(),truncated:N(),fetchedAt:s()}).strict();const VU=d({id:mt,name:s(),type:s(),paused:N(),firingTriggerIds:y(mt),blockingTriggerIds:y(mt),referencedVariableIds:y(mt),parameterKeys:y(s()),fingerprint:s().nullable()}).strict(),$U=d({id:mt,name:s(),type:s(),customEventNames:y(s()),filterKeys:y(s()),autoEventFilterKeys:y(s()),fingerprint:s().nullable()}).strict(),KU=d({id:mt,name:s(),type:s(),dataLayerVariableName:s().nullable(),parameterKeys:y(s()),fingerprint:s().nullable()}).strict(),_A=k(["recognized","unknown"]),vS=_A.enum,GU=k(["literal","variable-ref","absent","unknown"]),ap=GU.enum,HU=s().trim().min(5).max(132).regex(/^\{\{\w[\w ./-]{0,127}\}\}$/),ol=d({source:E(ap.absent),literal:de(),variableRef:de()}).strict(),rl=d({source:E(ap.unknown),literal:de(),variableRef:de()}).strict(),ll=d({source:E(ap["variable-ref"]),literal:de(),variableRef:HU}).strict();function cu(e){return d({source:E(ap.literal),literal:e,variableRef:de()}).strict()}const FU=s().trim().max(23).regex(/^(?:AW-)?\d{1,20}$/i),QU=s().trim().min(1).max(128).regex(/^[\w-]+$/),ZU=s().trim().min(1).max(20).regex(/^(?:0|[1-9]\d{0,11})(?:\.\d{1,6})?$/),YU=s().trim().length(3).regex(/^[a-z]{3}$/i);Ue("source",[cu(s().trim().min(1).max(256)),ll,ol,rl]);const XU=Ue("source",[cu(FU),ll,ol,rl]),JU=Ue("source",[cu(QU),ll,ol,rl]),WU=Ue("source",[cu(ZU),ll,ol,rl]),eV=Ue("source",[ll,ol,rl]),tV=Ue("source",[cu(YU),ll,ol,rl]),TA=k(["all-pages","custom-event","filtered","unknown"]);TA.enum;const xS=d({operator:s().trim().min(1).max(64),value:s().max(2048),negated:N(),ignoreCase:N()}).strict(),nV=d({triggerId:mt,triggerType:s(),eventPredicates:y(xS),hostnamePredicates:y(xS),unsupportedConditionCount:m().int().nonnegative()}).strict(),EA=k(["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"]);EA.enum;const aV=d({tagId:mt,tagType:s(),recognition:_A,recognitionReason:s().nullable(),conversionId:XU,conversionLabel:JU,value:WU,transactionId:eV,currency:tV,triggerStrategy:TA,triggerIds:y(mt),triggerPredicates:y(nV),reviewReasons:y(EA)}).strict().superRefine((e,n)=>{e.recognition===vS.recognized&&e.recognitionReason!==null&&n.addIssue({code:fe.custom,path:["recognitionReason"],message:"Recognized assessments cannot carry an unknown-recognition reason."}),e.recognition===vS.unknown&&!e.recognitionReason&&n.addIssue({code:fe.custom,path:["recognitionReason"],message:"Unknown assessments require a recognition reason."})}),RA=d({accountId:mt,containerId:mt,workspaceId:mt.nullable(),tags:y(VU),triggers:y($U),variables:y(KU),googleAdsTagAssessments:y(aV).default([])}).strict(),iV=d({accountId:mt,containerId:mt,id:mt,path:s(),name:s(),description:s().nullable(),fingerprint:s().nullable(),deleted:N()}).strict(),DA=d({source:E(AA.live),version:iV,graph:RA,fetchedAt:s()}).strict(),zA=d({source:E(AA.draft),workspace:w1,graph:RA,conflictCount:m().int().nonnegative(),fetchedAt:s()}).strict(),sV=d({account:NA,container:CA,workspaces:y(w1),live:DA.nullable(),draft:zA.nullable(),fetchedAt:s()}).strict();Ue("status",[d({connected:E(!1),status:E(Od["not-connected"]),connection:de(),selection:de()}).strict(),d({connected:E(!0),status:E(Od["selection-required"]),connection:Hf,selection:Zd}).strict(),d({connected:E(!0),status:E(Od.connected),connection:Hf,selection:Zd}).strict(),d({connected:E(!0),status:E(Od.stale),connection:Hf,selection:Zd}).strict()]);const IA=k(["accounts","container","live","draft"]),Pd=IA.enum,S1=d({id:mt,projectId:mt,connectionId:mt,runId:mt,kind:IA,accountId:mt.nullable(),containerId:mt.nullable(),workspaceId:mt.nullable(),payloadChecksum:bS,rawPayloadSha256:bS.nullable(),rawPayloadBytes:m().int().nonnegative().nullable(),redactedFieldCount:m().int().nonnegative(),capturedAt:s(),createdAt:s()}).strict(),oV=Ue("kind",[d({kind:E(Pd.accounts),data:UU}).strict(),d({kind:E(Pd.container),data:sV}).strict(),d({kind:E(Pd.live),data:DA}).strict(),d({kind:E(Pd.draft),data:zA}).strict()]),rV=d({metadata:S1,payload:oV}).strict().superRefine((e,n)=>{e.metadata.kind!==e.payload.kind&&n.addIssue({code:fe.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),Jn=s().trim().min(1),lV=s().trim().min(1).refine(e=>Wc(e)!==null,"Expected a hostname or http(s) URL."),k1=k(["configured","statically-consistent","runtime-unverified","observed"]);k1.enum;const OA=k(["pass","fail","unknown"]);OA.enum;const PA=k(["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"]);PA.enum;const qA=d({id:Jn,projectId:Jn,name:s().trim().min(1),eventName:s().trim().min(1),googleAds:d({customerId:Jn,conversionActionId:Jn,conversionId:s().trim().min(1).optional(),conversionLabel:s().trim().min(1).optional(),campaignIds:y(Jn).max(50).default([]),requireBiddableGoal:N().default(!0),requirePrimaryAction:N().default(!0)}).strict(),gtm:d({accountId:Jn,containerId:Jn,tagId:Jn,triggerIds:y(Jn).default([]),variableIds:y(Jn).default([])}).strict(),runtime:d({verificationRequired:N().default(!0),requireTransactionId:N().default(!0),requireValue:N().default(!0),requireCurrency:N().default(!0),productionHosts:y(lV).default([])}).strict(),createdAt:s(),updatedAt:s()}).strict();qA.omit({id:!0,projectId:!0,createdAt:!0,updatedAt:!0});const MA=k(["not-run","consistent","inconsistent"]);MA.enum;const BA=k(["not-run","not-observed","observed"]);BA.enum;d({staticCheck:MA,runtimeVerificationRequired:N(),runtimeObservation:BA}).strict();const cV=d({code:PA,subject:s().trim().min(1),outcome:OA,status:k1,evidenceIds:y(Jn).default([])}).strict(),uV=d({contract:qA,status:k1,findings:y(cV),evaluatedAt:s()}).strict(),wS=d({id:Jn,name:s(),detail:s(),active:N()});d({googleAds:d({customerId:Jn.nullable(),syncedAt:s().nullable(),conversionActions:y(wS)}),gtm:d({containerId:Jn.nullable(),syncedAt:s().nullable(),tags:y(wS)})});const Dc=s().trim().min(1);function SS(e){const n=e.trim();return/^\d{10}$/.test(n)?n:/^\d{3}-\d{3}-\d{4}$/.test(n)?n.replaceAll("-",""):null}const dV=/^[\w-]+$/;function j1(e){const n=e.trim();return dV.test(n)?n:null}function mV(e){const n=e.trim();return/^accounts\/([\w-]+)$/.exec(n)?.[1]??j1(n)}function pV(e,n){const i=e.trim(),r=/^accounts\/([\w-]+)\/containers\/([\w-]+)$/.exec(i);return r?r[1]===n?r[2]:null:j1(i)}function hV(e,n,i){const r=e.trim(),u=/^accounts\/([\w-]+)\/containers\/([\w-]+)\/workspaces\/([\w-]+)$/.exec(r);return u?u[1]===n&&u[2]===i?u[3]:null:j1(r)}function fV(e){const n=SS(e.customerId);if(!n)return null;if(e.loginCustomerId===null)return{loginCustomerId:null,customerId:n};if(e.loginCustomerId===void 0)return{customerId:n};const i=SS(e.loginCustomerId);return i?{loginCustomerId:i,customerId:n}:null}function gV(e){const n=mV(e.accountId);if(!n)return null;const i=pV(e.containerId,n);if(!i)return null;if(e.workspaceId===void 0)return{accountId:n,containerId:i};const r=hV(e.workspaceId,n,i);return r?{accountId:n,containerId:i,workspaceId:r}:null}const ip=k(["google-ads","gtm"]);ip.enum;d({provider:ip,publicUrl:s().url().optional(),developerToken:s().trim().min(1).max(512).optional()}).strict();d({provider:ip,authorizationUrl:s().url(),redirectUri:s().url(),expiresAt:s().nullable()}).strict();d({loginCustomerId:Dc.nullable().optional(),customerId:Dc}).strict().superRefine((e,n)=>{fV(e)||n.addIssue({code:fe.custom,message:"Expected ten-digit Google Ads customer IDs, with optional 3-3-4 display hyphens."})});d({accountId:Dc,containerId:Dc,workspaceId:Dc.optional()}).strict().superRefine((e,n)=>{gV(e)||n.addIssue({code:fe.custom,message:"GTM resource paths must match the selected account and container."})});d({provider:ip,disconnected:N()}).strict();const LA=100;d({snapshots:y(O0).max(LA),nextCursor:s().nullable(),total:m().int().nonnegative()}).strict();d({snapshot:Q9}).strict();d({snapshots:y(S1).max(LA),nextCursor:s().nullable(),total:m().int().nonnegative()}).strict();d({snapshot:rV}).strict();d({assessment:uV,googleAdsSnapshot:O0.nullable(),gtmSnapshot:S1.nullable()}).strict();function yV(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}d({id:s(),domain:s(),siteUrl:s().nullable().optional(),createdAt:s(),updatedAt:s()});const Ff=d({id:s(),url:s(),httpCode:m().nullable().optional(),inIndex:N().nullable().optional(),lastCrawledDate:s().nullable().optional(),inIndexDate:s().nullable().optional(),inspectedAt:s(),documentSize:m().nullable().optional(),anchorCount:m().nullable().optional(),discoveryDate:s().nullable().optional()});d({summary:d({total:m(),indexed:m(),notIndexed:m(),unknown:m().optional(),percentage:ot()}),lastInspectedAt:s().nullable(),indexed:y(Ff).default([]),notIndexed:y(Ff).default([]),unknown:y(Ff).default([]).optional()});d({query:s(),impressions:m(),clicks:m(),ctr:we(),averagePosition:m()});d({date:s(),indexed:m(),notIndexed:m(),unknown:m()});const bV=d({url:s(),status:k(["success","error"]),submittedAt:s(),error:s().optional()});d({summary:d({total:m().int().nonnegative(),succeeded:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(bV).default([])});const UA=d({url:s(),verified:N()});d({sites:y(UA).default([])});d({connected:N(),domain:s(),siteUrl:s().nullable(),createdAt:s().nullable(),updatedAt:s().nullable()});d({connected:N(),domain:s(),siteUrl:s().nullable(),availableSites:y(UA).default([])});d({siteUrl:s()});const vV=d({name:s(),alive:N(),lastUsed:s().nullable()});d({connected:N(),endpoint:s(),version:s().optional(),browserVersion:s().optional(),targets:y(vV).default([])});const Uo=k(["live","staging"]);d({projectName:s(),url:s(),stagingUrl:s().optional(),username:s(),defaultEnv:Uo,createdAt:s(),updatedAt:s()});const kS=d({url:s(),reachable:N(),pageCount:m().nullable().optional(),version:s().nullable().optional(),error:s().nullable().optional(),plugins:y(s()).optional(),authenticatedUser:d({id:m(),slug:s()}).nullable().optional()});d({connected:N(),projectName:s(),defaultEnv:Uo,live:kS.nullable(),staging:kS.nullable(),adminUrl:s().nullable().optional()});const VA=d({id:m(),slug:s(),title:s(),status:s(),modifiedAt:s().nullable().optional(),link:s().nullable().optional()});d({env:Uo,pages:y(VA)});const $A=d({title:s().nullable(),description:s().nullable(),noindex:N().nullable(),writable:N().default(!1),writeTargets:y(s()).default([])}),xV=d({type:s(),json:Ke(s(),kn())}),wV=VA.extend({env:Uo,content:s(),seo:$A,schemaBlocks:y(xV).default([])}),jS=wV.extend({contentHash:s(),contentSnippet:s()}),KA=d({manualRequired:E(!0),targetUrl:s(),adminUrl:s().nullable().optional(),content:s(),nextSteps:y(s()).default([])}),SV=d({slug:s(),severity:k(["high","medium","low"]),code:k(["noindex","missing-seo-title","missing-meta-description","missing-schema","thin-content"]),message:s()});d({slug:s(),title:s(),status:s(),wordCount:m(),seo:$A,schemaPresent:N(),issues:y(SV).default([])});const kV=d({slug:s(),status:k(["applied","skipped","manual"]),error:s().optional(),manualAssist:KA.optional()});d({env:Uo,strategy:k(["plugin","manual"]),results:y(kV)});const jV=d({slug:s(),status:k(["deployed","stripped","skipped","failed"]),schemasInjected:y(s()).optional(),manualAssist:KA.optional(),error:s().optional()});d({env:Uo,results:y(jV)});const AV=d({slug:s(),title:s(),canonrySchemas:y(s()),thirdPartySchemas:y(s()),hasCanonrySchema:N()});d({env:Uo,pages:y(AV)});const NV=d({name:s(),status:k(["completed","skipped","failed"]),summary:s().optional(),error:s().optional()});d({projectName:s(),steps:y(NV)});d({slug:s(),live:jS,staging:jS,hasDifferences:N(),differences:d({title:N(),slug:N(),content:N(),seoTitle:N(),seoDescription:N(),noindex:N(),schema:N()})});const CV=y2.shape.searchUnit.unwrap().enum;CV.query;const GA=d({name:s(),displayName:s().optional(),keyUrl:s().optional(),modelHint:s().optional(),model:s().optional(),defaultModel:s().optional(),configured:N(),quota:sO.optional(),vertexConfigured:N().optional()});d({configPath:s().min(1).max(4096).optional(),databasePath:s().min(1).max(4096).optional()}).strict().refine(e=>e.configPath===void 0==(e.databasePath===void 0),"configPath and databasePath must be supplied together");const _V=k(["install-identity-mismatch"]);_V.enum;d({reloaded:E(!0),providers:y(GA)});const TV=d({name:s(),displayName:s(),mode:k(["api","browser"]),modelConfigurable:N(),defaultModel:s(),knownModels:y(d({id:s(),displayName:s(),tier:k(["flagship","standard","fast","economy"])})).default([]),modelValidationPattern:d({source:s(),flags:s()}),modelValidationHint:s()}),AS=d({configured:N()});d({providers:y(GA).default([]),providerCatalog:y(TV).default([]),google:AS,bing:AS});const HA=k(["gsc","ga","gbp","bing","ads","google-ads","gtm","traffic"]);HA.enum;const A1=k(["ok","failing","stale","never-synced"]);A1.enum;const Gc=s().datetime({offset:!0}),EV=s().regex(/^\d{4}-\d{2}-\d{2}$/),RV=d({integration:HA,label:s(),runKind:No,sourceId:s().nullable(),state:A1,lastSuccessAt:Gc.nullable(),latestRunAt:Gc.nullable(),latestRunId:s().nullable(),latestStatus:ta.nullable(),latestTrigger:Km.nullable(),consecutiveFailures:m().int().nonnegative(),latestError:s().max(300).nullable(),dataThrough:EV.nullable(),dataAgeDays:m().int().nonnegative().nullable(),doctorChecks:y(s())}),DV=d({status:k(["ok","warn","fail"]),code:s(),summary:s(),checkedAt:Gc,notifiedAt:Gc.nullable()}),zV=d({project:s(),displayName:s(),state:k([...A1.options,"warning"]),health:DV.nullable(),integrations:y(RV)});d({generatedAt:Gc,summary:d({projects:m().int().nonnegative(),ok:m().int().nonnegative(),failing:m().int().nonnegative(),warning:m().int().nonnegative().optional(),stale:m().int().nonnegative(),neverSynced:m().int().nonnegative()}),projects:y(zV)});const IV=k(["recorded","errored","expired","canceled","parse_failed","duplicate"]);IV.enum;const OV=k(["not_plan_run","scoped_run","probe_run","batch_unavailable","model_not_frozen"]);OV.enum;Ow.standard,Ow.batch;const FA=k(["all","api","browser"]);FA.enum;const PV=k(["yes","no","unknown","not-mentioned"]),NS=y(s().min(1)),CS=d({companyName:s().min(1),domain:s().min(1),queries:NS.optional(),phrases:NS.optional(),competitors:y(s().min(1)).optional(),providers:y(s().trim().min(1)).min(1).optional().describe("Configured provider names to use for both answers and analysis. Omit to use all providers matching providerMode."),providerMode:FA.optional().describe("Filter providers by transport; defaults to all. Browser-only selection requires manual queries and uses no API provider for analysis.")}).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"]})});CS.safeExtend({competitors:CS.shape.competitors.default([])});const qV=d({name:s(),count:m().int().nonnegative()}),MV=d({id:s(),name:s(),weight:m(),score:m(),findings:y(d({type:s(),message:s()})).default([]),recommendations:y(s()).default([])}),BV=d({url:s(),finalUrl:s(),auditedAt:s(),overallScore:m(),summary:s(),factors:y(MV).default([])}),LV=d({industry:s(),summary:s(),services:y(s()).default([]),categoryTerms:y(s()).default([])}),UV=d({provider:s(),displayName:s(),model:s().nullable().optional(),mentioned:N(),cited:N(),describedAccurately:PV,accuracyNotes:s().nullable().optional(),incorrectClaims:y(s()).default([]),recommendedCompetitors:y(s()).default([]),citedDomains:y(s()).default([]),groundingSources:y(Gm).default([]),searchQueries:y(s()).default([]),answerText:s(),error:s().nullable().optional()}),VV=d({query:s(),providerResults:y(UV).default([])}),$V=d({totalQueries:m().int().nonnegative(),totalProviders:m().int().nonnegative(),totalComparisons:m().int().nonnegative(),mentionCount:m().int().nonnegative(),citationCount:m().int().nonnegative(),topCompetitors:y(qV).default([]),visibilityGap:s(),whatThisMeans:y(s()).default([]),recommendedActions:y(s()).default([])});d({companyName:s(),domain:s(),homepageUrl:s(),generatedAt:s(),queries:y(s()).default([]),competitors:y(s()).default([]),profile:LV,audit:BV,queryResults:y(VV).default([]),summary:$V});k(["json","csv"]);const KV=d({runId:s(),runKind:E("answer-visibility"),runStatus:ta,runTrigger:Km,runCreatedAt:s(),runStartedAt:s().nullable(),runFinishedAt:s().nullable(),snapshotId:s(),snapshotCreatedAt:s(),queryId:s().nullable(),query:s().nullable(),provider:s(),model:s().nullable(),location:s().nullable(),citationState:Ki,cited:N(),answerMentioned:N().nullable(),mentionState:Fe([Vc,de()]),citedDomains:y(s()),citedUrls:y(s()).nullable(),captureStatus:Fe([Lm,de()]),sourceCount:m().int().nonnegative().nullable(),resolvedCount:m().int().nonnegative().nullable(),captureVersion:m().int().positive().nullable(),competitorOverlap:y(s()),recommendedCompetitors:y(s()),answerText:s().nullable(),groundingSources:y(Gm),searchQueries:y(s())}),GV=d({since:s().nullable(),until:s().nullable(),includeProbes:N()});d({schemaVersion:E("canonry.results-export/v1"),generatedAt:s(),project:d({id:s(),name:s(),displayName:s(),canonicalDomain:s(),country:s(),language:s()}),filters:GV,recordCount:m().int().nonnegative(),records:y(KV)});d({runIds:y(s().trim().min(1)).max(100).default([]),researchRunIds:y(s().trim().min(1)).max(100).default([]),confirm:N().default(!1)}).strict().superRefine((e,n)=>{e.runIds.length+e.researchRunIds.length===0&&n.addIssue({code:"custom",message:"Select at least one saved run."}),(new Set(e.runIds).size!==e.runIds.length||new Set(e.researchRunIds).size!==e.researchRunIds.length)&&n.addIssue({code:"custom",message:"Run IDs must be unique."})});d({dryRun:N(),runIds:y(s()),researchRunIds:y(s()),querySnapshots:m().int().nonnegative(),researchQueries:m().int().nonnegative(),insights:m().int().nonnegative(),healthSnapshots:m().int().nonnegative()});const uu=k(["organic","paid"]);uu.enum;d({id:s(),projectId:s(),propertyId:s(),clientEmail:s(),connected:N(),createdAt:s(),updatedAt:s()});d({date:s(),landingPage:s(),sessions:m(),organicSessions:m(),users:m()});const N1=k(["session","first_user","manual_utm"]),HV=d({source:s(),medium:s(),trafficClass:uu,sessions:m(),users:m().optional(),sourceDimension:N1,share:we()}),FV=d({source:s(),medium:s(),trafficClass:uu,sourceDimension:N1,landingPage:s(),sessions:m(),users:m().optional()}),QV=d({source:s(),medium:s(),sessions:m(),users:m().optional(),channelGroup:s(),share:we()}),xc=d({sessions:m(),sharePct:ot(),sharePctDisplay:s()}),ZV=d({organic:xc,social:xc,direct:xc,ai:xc,other:xc}),YV=d({totalSessions:m(),totalOrganicSessions:m(),totalDirectSessions:m(),totalUsers:m().nullable(),topPages:y(d({landingPage:s(),sessions:m(),organicSessions:m(),directSessions:m(),users:m(),organicShare:we().nullable()})),aiReferrals:y(HV),aiReferralLandingPages:y(FV),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(QV),socialSessions:m(),socialUsers:m().optional(),channelBreakdown:ZV,organicSharePct:ot(),aiSharePct:ot(),aiSharePctBySession:ot(),paidAiSharePct:ot(),paidAiSharePctBySession:ot(),organicAiSharePct:ot(),organicAiSharePctBySession:ot(),directSharePct:ot(),socialSharePct:ot(),organicSharePctDisplay:s(),aiSharePctDisplay:s(),aiSharePctBySessionDisplay:s(),paidAiSharePctDisplay:s(),paidAiSharePctBySessionDisplay:s(),organicAiSharePctDisplay:s(),organicAiSharePctBySessionDisplay:s(),directSharePctDisplay:s(),socialSharePctDisplay:s(),otherSessions:m(),otherSharePct:ot(),otherSharePctDisplay:s(),lastSyncedAt:s().nullable()});d({connected:N(),propertyId:s().nullable(),clientEmail:s().nullable(),authMethod:k(["service-account","oauth"]).nullable(),lastSyncedAt:s().nullable(),createdAt:s().nullable().optional(),updatedAt:s().nullable().optional()});const XV=d({propertyId:s(),displayName:s(),accountName:s()});d({properties:y(XV)});const C1=k(tl.gaSearchLanding),Fae=C1.options,Qae="28d",JV="(empty)";function Zae(e){return e===""?JV:e}const Yae=1e3,WV=k(["never-synced","ready","unavailable","error"]),QA=d({organicGoogleSearchClicks:m().int().nonnegative(),organicGoogleSearchImpressions:m().int().nonnegative(),organicGoogleSearchClickThroughRate:we(m().min(0).max(1)).nullable(),organicGoogleSearchAveragePosition:m().nonnegative().nullable(),activeUsers:m().int().nonnegative()}),e$=QA.extend({landingPage:s()});d({source:E("ga4-search-console-link"),status:WV,error:s().nullable(),syncedAt:s().datetime().nullable(),attemptedAt:s().datetime().nullable(),window:C1,windowStart:Is().nullable(),windowEnd:Is().nullable(),windowDays:m().int().positive().nullable(),timeZone:s().nullable(),subjectToThresholding:N(),dataLossFromOtherRow:N(),total:QA.nullable(),reportRowCount:m().int().nonnegative().nullable(),rowsCapped:N(),totalRows:m().int().nonnegative(),limit:m().int().positive(),offset:m().int().nonnegative(),rows:y(e$)});function Xae(e){return e.organicGoogleSearchClicks>0||e.organicGoogleSearchImpressions>0}const t$=d({status:k(["ready","unavailable","error"]),windows:y(d({window:C1,rowCount:m().int().nonnegative(),reportRowCount:m().int().nonnegative(),rowsCapped:N()})),rowCount:m().int().nonnegative(),error:s().optional()});k(["traffic","ai","social","search-landing"]);d({synced:N(),rowCount:m().int().nonnegative(),aiReferralCount:m().int().nonnegative(),socialReferralCount:m().int().nonnegative(),days:m().int().nonnegative(),requestedDays:m().int().nonnegative(),clamped:N(),syncedAt:s(),measurement:d({acquisition:d({days:m().int().nonnegative(),status:k(["ready","error"]),rowCount:m().int().nonnegative(),error:s().optional()}),leads:d({days:m().int().nonnegative(),status:k(["ready","error","not-configured"]),rowCount:m().int().nonnegative(),attributionScope:k(["landing-page","channel"]).optional(),error:s().optional()}),searchLandingPages:t$.optional()}),syncedComponents:y(s()).optional()});const ZA=k(["new","small-base","percent"]);ZA.enum;const Ug=d({source:s(),sessions7d:m(),sessionsPrev7d:m(),changeSessions:m(),changePct:ot().nullable(),changeBasis:ZA});d({socialSessions7d:m(),socialSessionsPrev7d:m(),trend7dPct:ot().nullable(),socialSessions30d:m(),socialSessionsPrev30d:m(),trend30dPct:ot().nullable(),biggestMover:Ug.nullable()});const wc=d({sessions7d:m(),sessionsPrev7d:m(),trend7dPct:ot().nullable(),sessions30d:m(),sessionsPrev30d:m(),trend30dPct:ot().nullable()});d({organic:wc,ai:wc,social:wc,direct:wc,total:wc,aiBiggestMover:Ug.nullable(),socialBiggestMover:Ug.nullable()});YV.extend({windowStart:s().nullable(),windowEnd:s().nullable(),windowDays:m().nullable(),periodStart:s().nullable(),periodEnd:s().nullable()});d({date:s(),source:s(),medium:s(),trafficClass:uu,landingPage:s(),sessions:m(),users:m(),sourceDimension:N1});const n$=d({source:s(),sessions:m(),paidSessions:m(),organicSessions:m()}),a$=d({date:s(),sessions:m(),paidSessions:m(),organicSessions:m(),bySource:y(n$)});d({days:y(a$),sources:y(s()),totalSessions:m(),totalPaidSessions:m(),totalOrganicSessions:m()});d({date:s(),source:s(),medium:s(),sessions:m(),users:m(),channelGroup:s()});d({date:s(),sessions:m(),organicSessions:m(),users:m(),usersSource:k(["deduplicated","landing-page-sum"])});const ym=k(["date","channelGroup","source","medium","hostName","landingPage"]);ym.enum;d({window:Ls.optional(),startDate:Is().optional(),endDate:Is().optional(),channel:s().optional(),source:s().optional(),medium:s().optional(),hostName:s().optional(),landingPage:s().optional(),pathPrefix:s().optional(),groupBy:s().refine(e=>e.split(",").every(n=>ym.safeParse(n.trim()).success),`groupBy must contain: ${ym.options.join(", ")}`).optional(),limit:m().int().min(1).max(1e3).optional(),offset:m().int().nonnegative().optional()}).strict();const i$=d({date:s().optional(),channelGroup:s().optional(),source:s().optional(),medium:s().optional(),hostName:s().optional(),landingPage:s().optional(),sessions:m().int().nonnegative()});d({source:E("ga4-acquisition"),status:Cg,error:s().nullable(),syncedAt:s().nullable(),scope:d({project:s(),attribution:E("project-only"),unavailableDimensions:y(k(["property","target","market"]))}),window:d({startDate:s().nullable(),endDate:s().nullable(),window:Ls}),coverage:d({earliestDate:s().nullable(),latestDate:s().nullable()}),filters:d({channel:s().nullable(),source:s().nullable(),medium:s().nullable(),hostName:s().nullable(),landingPage:s().nullable(),pathPrefix:s().nullable()}),groupBy:y(ym),channelGroups:y(s()),totalSessions:m().int().nonnegative(),totalRows:m().int().nonnegative(),limit:m().int(),offset:m().int(),rows:y(i$)});d({window:Ls.optional(),minAnswers:Ha().int().min(1).max(1e3).optional(),queryClass:k(["non-brand","branded","all"]).optional(),groupKey:s().trim().min(1).optional(),limit:Ha().int().min(1).max(100).optional()}).strict();const s$=d({name:s().trim().min(1),answerCount:m().int().nonnegative(),pairedAnswers:m().int().nonnegative()}).strict(),YA=k(["below-min-answers","not-named","unpaired-name","own-site","listing-marketplace","non-competitor-surface","claimed-by-alias","shared-host"]);YA.enum;const XA=k(["suggested","tracked","excluded"]);XA.enum;const o$=d({domain:s().trim().min(1),label:s().trim().min(1),names:y(s$).max(5),namingAnswers:m().int().nonnegative(),citingAnswers:m().int().nonnegative(),bothAnswers:m().int().nonnegative(),pairedAnswers:m().int().nonnegative(),namedByOtherNameAnswers:m().int().nonnegative(),sweeps:m().int().nonnegative(),firstSeenAt:s().datetime().nullable(),lastSeenAt:s().datetime().nullable(),surfaceClass:v3,tracked:N(),marketKeys:y(s().trim().min(1)).optional(),status:XA,reason:YA.nullable(),sampleUrls:y(s().url()).max(3)}).strict();d({project:s().trim().min(1),window:Ls,scope:x3,filters:d({queryClass:k(["non-brand","branded","all"]),groupKey:s().nullable(),limit:m().int().positive(),minAnswers:m().int().positive()}).strict(),thresholds:d({minAnswers:m().int().positive()}).strict(),candidates:y(o$),candidatesTotal:m().int().nonnegative(),excludedCounts:Ke(s(),m().int().nonnegative()),unresolvedNames:y(d({name:s().trim().min(1),answerCount:m().int().nonnegative()}).strict()),evidence:d({answeredResults:m().int().nonnegative(),sourceResults:m().int().nonnegative(),excludedProbeResults:m().int().nonnegative(),excludedNonCompletedResults:m().int().nonnegative()}).strict(),runCount:m().int().nonnegative(),runIds:y(s()),countUnits:d({answers:y(s()),distinctNames:y(s()),runs:y(s())}).strict(),truncated:N()}).strict();d({id:s(),projectId:s(),runId:s().nullable(),overallCitedRate:we(),overallMentionRate:we(),totalPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),providerBreakdown:Ke(s(),d({citedRate:we(),mentionRate:we(),cited:m().int().nonnegative(),mentioned:m().int().nonnegative(),total:m().int().nonnegative()})),createdAt:s(),status:k(["ready","no-data"]),reason:E("no-runs-yet").optional()});const r$=d({view:k(["project","visibility","property","queries","site-health"]),unavailableReason:s().trim().min(1).max(512).optional(),selection:mm.optional(),page:d({runId:s().trim().min(1).max(256).optional(),nodeKey:s().trim().min(1).max(2048).optional()}).strict().optional()}).strict().superRefine((e,n)=>{e.page&&e.view!=="site-health"&&n.addIssue({code:"custom",message:"Page context requires Site Health."}),e.selection&&!["visibility","property","queries"].includes(e.view)&&n.addIssue({code:"custom",message:"Measurement selection requires a measurement view."})}),l$=d({maxToolCalls:m().int().min(1).max(100).default(30),timeoutMs:m().int().min(1e3).max(6e5).default(18e4)}).strict(),_1=k(["claude","openai","gemini","zai"]),c$=d({id:_1,label:s(),defaultModel:s(),configured:N(),keySource:k(["config","env"]).nullable()});d({providers:y(c$).default([]),defaultProvider:_1.nullable()});const u$=k(["aero","user","compaction"]);u$.enum;const JA=128;d({key:s().min(1).max(JA),value:s().min(1)});d({key:s().min(1).max(JA)});d({prompt:s().trim().min(1),conversationId:s().min(1).nullable().optional(),provider:_1.optional(),modelId:s().trim().min(1).optional(),scope:k(["all","read-only"]).optional(),profile:k(["default","ads-operator"]).optional(),context:r$.optional(),limits:l$.optional()});const d$=II({role:s(),content:kn().optional()}),WA=d({id:s(),title:s(),active:N(),modelProvider:s(),modelId:s(),createdAt:s(),updatedAt:s()});WA.extend({messages:y(d$),isStreaming:N()});d({conversations:y(WA),currentConversationId:s().nullable(),nextOffset:m().int().nullable()});d({id:uI()}).strict();d({id:s(),status:E("deleted")});const m$=["status","changes","gaps","insights"],p$=k(m$),h$=d({text:s().optional(),tool:d({name:s(),label:s(),arguments:Ke(s(),kn()),result:kn(),durationMs:m().int().nonnegative()})}),f$=d({id:p$,steps:y(h$),answer:s()});d({project:s(),seededAt:s(),starters:y(f$)});d({offset:Ha().int().min(0).default(0),limit:Ha().int().min(1).max(100).default(50)}).strict();const cl=k(["commoncrawl","bing-webmaster"]);cl.enum;const T1=k(["queued","downloading","querying","ready","failed"]);T1.enum;d({id:s(),release:s(),status:T1,phaseDetail:s().nullable().optional(),vertexPath:s().nullable().optional(),edgesPath:s().nullable().optional(),vertexSha256:s().nullable().optional(),edgesSha256:s().nullable().optional(),vertexBytes:m().int().nullable().optional(),edgesBytes:m().int().nullable().optional(),projectsProcessed:m().int().nullable().optional(),domainsDiscovered:m().int().nullable().optional(),downloadStartedAt:s().nullable().optional(),downloadFinishedAt:s().nullable().optional(),queryStartedAt:s().nullable().optional(),queryFinishedAt:s().nullable().optional(),error:s().nullable().optional(),createdAt:s(),updatedAt:s()});const g$=d({linkingDomain:s(),numHosts:m().int(),source:cl}),y$=d({projectId:s(),release:s(),targetDomain:s(),totalLinkingDomains:m().int(),totalHosts:m().int(),top10HostsShare:s(),queriedAt:s(),source:cl,excludedLinkingDomains:m().int().optional(),excludedHosts:m().int().optional()});d({source:cl,summary:y$.nullable(),total:m().int(),rows:y(g$)});d({release:s(),totalLinkingDomains:m().int(),totalHosts:m().int(),top10HostsShare:s(),queriedAt:s(),source:cl});const b$=d({source:cl,connected:N(),hasData:N(),latestRelease:s().nullable(),totalLinkingDomains:m().int(),lastSyncedAt:s().nullable()});d({projectId:s(),targetDomain:s(),sources:y(b$),anyConnected:N(),anyData:N()});d({duckdbInstalled:N(),duckdbVersion:s().nullable().optional(),duckdbSpec:s(),pluginDir:s()});d({installed:N(),version:s(),path:s(),alreadyPresent:N()});d({release:s(),vertexUrl:s(),edgesUrl:s(),vertexBytes:m().int().nullable(),edgesBytes:m().int().nullable(),lastModified:s().nullable()});d({release:s(),syncStatus:T1.nullable(),bytes:m().int(),lastUsedAt:s().nullable()});const v$="jev-1.13.0",Pe=s().trim().min(1).max(256),At=m().int().nonnegative(),eN=Ya(e=>typeof e=="string"?[e]:e,y(Pe).min(1).max(100)),Yd=we(m().min(0).max(1)).nullable(),Hi=k(["favorable","mixed","unfavorable","factual","subject-not-mentioned","wrong-subject","ambiguous-subject","ambiguous-judgment","subject-not-applicable","unsupported-language","missing-source-text","input-too-large","invalid-conclusion-evidence","pending","running","waiting-to-retry","failed","canceled"]);Hi.enum;const E1=k(["disabled","not-measured","processing","partial","complete","failed","canceled","unsupported"]),R1=d({schemaVersion:Fe([E(1),E(2)]),requestedModel:E(v$),verdictVersion:Pe,identityVersion:Pe,evidenceVersion:Pe,segmentationVersion:Pe,preprocessingVersion:Pe,languagePolicy:E("en-only"),comparisonMethodVersion:E("wilson-independent-v1"),confidenceThreshold:m().min(0).max(1).nullable(),questions:d({identity:s(),judgment:s(),stance:s(),conclusion:s(),complaint:s()}).strict()}).strict();function tN(e){if(typeof e!="object"||e===null||!("schemaVersion"in e)||e.schemaVersion!==1)return e;const n=Object.fromEntries(Object.entries(e).filter(([i])=>i!=="themes"));return typeof n.questions=="object"&&n.questions!==null&&(n.questions=Object.fromEntries(Object.entries(n.questions).filter(([i])=>i!=="theme"))),n}Ya(tN,R1);const nN=d({id:Pe,displayName:s(),aliases:y(s()),qualifiedAliases:y(s()).default([]),urls:y(s()),mentionNotApplicable:N()}).strict(),x$=d({queryId:Pe,executionNodeKey:Pe.nullable(),targetId:Pe,propertyId:Pe.nullable(),groupId:Pe.nullable(),marketId:Pe.nullable(),queryClass:k(["branded","non-brand"]),queryText:s().optional(),location:s().nullable()}).strict(),aN=d({queryId:Pe,queryText:s(),queryClass:k(["branded","non-brand"]),provider:Pe,requestedModel:s().nullable(),servedModel:s().nullable(),location:s().nullable(),revision:m().int().nullable(),usageEdges:y(x$),locationContext:Jt.nullable().default(null)}).strict(),Hc=d({id:Pe,text:s().min(1),start:At,end:At}).strict(),iN=d({kind:k(["reported","estimated","unknown"]),inputTokens:At.nullable(),outputTokens:At.nullable()}).strict(),w$=d({sourceSnapshotId:Pe,sourceText:s(),sourceTextHash:Pe,subject:nN,subjectHash:Pe,context:aN,language:s(),definition:R1,sentences:y(Hc)}).strict();Ya(e=>typeof e!="object"||e===null||!("definition"in e)?e:{...e,definition:tN(e.definition)},w$);const Qf={returnedModel:s().nullable(),usage:iN},S$=Ue("kind",[d({kind:E("classified"),...Qf,returnedModel:s(),outcome:Hi,conclusion:y(Hc),complaint:y(Hc).nullable(),confidence:m().min(0).max(1).nullable()}).strict(),d({kind:E("abstained"),...Qf,outcome:Hi,reason:s()}).strict(),d({kind:E("failed"),...Qf,outcome:E("failed"),error:d({code:Pe,message:s(),retryable:N(),retryAfterMs:m().nonnegative().nullable()}).strict()}).strict()]).superRefine((e,n)=>{e.kind==="classified"&&["favorable","mixed","unfavorable"].includes(e.outcome)&&e.conclusion.length===0&&n.addIssue({code:"custom",path:["conclusion"],message:"Judgments require conclusion evidence"})});Ya(e=>typeof e=="object"&&e!==null?Object.fromEntries(Object.entries(e).filter(([n])=>n!=="themes")):e,S$);const ul=d({runId:Pe.optional(),runIds:eN.optional(),revision:Ha().int().positive().optional(),mode:k(["auto","simple","advanced"]).default("auto"),queryClass:k(["branded","non-brand"]).default("branded"),scope:k(["project","property","group","market"]).default("project"),queryId:Pe.optional(),scopeKey:Pe.optional(),marketKey:Pe.optional(),provider:Pe.optional(),model:Pe.optional(),location:s().min(1).optional(),evaluationDefinitionId:Pe.optional(),executionNodeKey:Pe.optional()}).strict();function du(e,n){e.runId&&e.runIds&&n.addIssue({code:"custom",path:["runIds"],message:"Choose runId or runIds, not both."}),e.runIds&&new Set(e.runIds).size!==e.runIds.length&&n.addIssue({code:"custom",path:["runIds"],message:"Run IDs must be unique."})}ul.superRefine(du);const k$=k(["assessments","locations"]),j$=25,sN=500;ul.extend({include:Ya(e=>typeof e=="string"?e.split(",").map(n=>n.trim()).filter(Boolean):e,y(k$).max(2)).optional(),queryLimit:Ha().int().min(1).max(sN).default(j$),queryCursor:s().min(1).max(16384).optional()}).superRefine(du);const A$=Ya(e=>{const n=typeof e=="string"?[e]:Array.isArray(e)?e:null;return n?[...new Set(n.flatMap(i=>typeof i=="string"?i.split(",").map(r=>r.trim()).filter(Boolean):[i]))]:e},y(Hi).min(1).max(Hi.options.length));ul.extend({assessmentId:Pe.optional(),outcome:A$.optional(),cursor:s().min(1).max(16384).optional(),limit:Ha().int().min(1).max(100).default(50)}).superRefine(du);ul.extend({fromRunId:Pe.describe("Run ID or previous-rated to select the preceding run with stored ratings in this scope."),toRunId:Pe}).superRefine((e,n)=>{du(e,n),e.runIds&&n.addIssue({code:"custom",path:["runIds"],message:"Comparison requires one explicit run per period."})});const D1=ul.extend({runId:Pe.nullable(),revision:m().int().nullable(),evaluationDefinitionId:Pe.nullable(),mode:k(["simple","advanced"])}),z1=d(Object.fromEntries(Hi.options.map(e=>[e,At]))).strict(),N$=d({selected:At,eligibleAssessments:At,unadmittedAssessments:At,judged:At,distinctSourceAnswers:At,eligibleAnswers:At.optional(),ratedAnswers:At.optional(),ratedAnswerRate:Yd.optional(),subjectNotMentioned:At.nullable().optional().describe("Distinct admitted answers where every assessed subject in the selected scope is absent. Expected for non-brand queries; not missing classification. Null while disabled."),counts:z1,expectedProviderSlots:At,completedProviderSlots:At}).strict(),C$=d({favorableRate:Yd,mixedRate:Yd,unfavorableRate:Yd,favorableDisplay:s(),mixedDisplay:s(),unfavorableDisplay:s(),interval:d({low:m(),high:m()}).strict().nullable(),method:E("wilson-independent-v1"),limitation:s()}).strict(),Qr={state:E1,reason:s().nullable(),provisional:N(),coverage:N$,score:C$},_S=d({...Qr,selection:D1,runIds:y(Pe)}).strict(),TS=d({...Qr,queryClass:E("all"),pooled:E(!0).optional(),runIds:y(Pe)}).strict(),_$=d({configured:N(),branded:_S,nonBrand:_S,headlineQueryClass:E("branded").optional(),pooledOverall:TS.optional(),overall:TS.optional().describe("Deprecated compatibility field. Pooled branded and non-brand assessments; never use as the sentiment headline.")}).strict(),T$=d({assessmentId:Pe.nullable(),sourceSnapshotId:Pe,runId:Pe,subjectId:Pe,subjectLabel:s(),executionNodeKey:Pe.nullable(),provider:Pe,requestedModel:s().nullable(),servedModel:s().nullable(),location:s().nullable(),evaluationDefinitionId:Pe.nullable(),state:E1,outcome:Fe([Hi,de()]),reason:s().nullable()}).strict(),E$=d({...Qr,queryId:Pe,executionNodeKey:Pe.nullable().optional(),queryText:s(),queryClass:k(["branded","non-brand"]),sourceSnapshotIds:y(Pe),assessments:y(T$).default([]),locations:y(d({...Qr,location:s().nullable(),sourceSnapshotIds:y(Pe)}).strict())}).strict(),R$=d({...Qr,dimension:k(["provider","property","market","query"]),key:s(),label:s(),queryClass:k(["branded","non-brand"])}).strict(),Vg=d({...Qr,configured:N(),selection:D1,evaluationDefinition:R1.nullable(),breakdowns:y(R$),queries:y(E$),criticizedProperties:d({total:At,keys:y(s())}).strict().optional(),queryPage:d({total:At,limit:At,nextCursor:s().nullable()}).strict().optional()}).strict();d({enabled:N().optional()}).strict();const D$=d({installEnabled:N(),enabled:N(),ready:N(),readinessReasons:y(s()),model:s(),enablementEpoch:At,completionBoundary:At,evaluationDefinitionId:Pe.nullable(),actions:d({configure:N(),backfill:N()}).strict(),experimental:E(!0),disclosure:s()}).strict(),oN=ul.extend({runIds:eN.optional(),from:s().datetime().optional(),to:s().datetime().optional()}).superRefine(du);d({previewToken:s().min(1).max(65536),idempotencyKey:s().trim().min(1).max(128)}).strict();const z$=d({previewToken:s().nullable(),expiresAt:s().nullable(),selection:oN,evaluationDefinitionId:Pe.nullable(),eligibleAssessments:At,alreadyClassified:At,skipped:y(d({runId:Pe,reason:s(),count:At}).strict()),estimatedInputTokens:At,estimatedCostUsd:m().nonnegative().nullable(),estimateMethod:s()}).strict(),I$=k(["pending","running","waiting-to-retry","complete","partial","failed","canceled"]),O$=d({id:Pe,workItemId:Pe,dispatchedAt:s(),completedAt:s().nullable(),returnedModel:s().nullable(),usage:iN,errorCode:s().nullable()}).strict(),rN=d({id:Pe,projectId:Pe,origin:k(["automatic","backfill"]),state:I$,enablementEpoch:At,evaluationDefinitionId:Pe,selection:oN,createdAt:s(),updatedAt:s(),counts:z1,selected:At,cancellationReason:s().nullable(),attempts:y(O$),attemptCount:At.optional(),nextAttemptCursor:s().nullable().optional()}).strict(),P$=rN.omit({attempts:!0,attemptCount:!0,nextAttemptCursor:!0}).extend({attemptCount:At}).strict(),q$=d({jobs:y(P$)}).strict(),M$=50;d({attemptLimit:Ha().int().min(1).max(200).default(M$),attemptCursor:s().min(1).max(4096).optional()}).strict();const B$=d({assessmentId:Pe,runId:Pe,sourceSnapshotId:Pe,sourceText:s(),sourceTextHash:Pe,subject:nN,subjectHash:Pe,context:aN,evaluationDefinitionId:Pe,outcome:Hi,conclusion:y(Hc),complaint:y(Hc).nullable(),returnedModel:s().nullable(),reason:s().nullable()}).strict(),L$=d({state:E1,selection:D1.extend({assessmentId:Pe.optional(),outcome:y(Hi).optional()}),items:y(B$),nextCursor:s().nullable()}).strict(),U$=d({from:Vg,to:Vg,verdict:k(["improved","declined","no-clear-change"]).nullable(),favorableRateDelta:m().nullable(),refusalReasons:y(s()),commonUnits:At,excludedFrom:At,excludedTo:At,changedScope:N(),method:E("wilson-independent-v1"),limitation:s()}).strict(),I1=k(["positive","caution","negative","neutral"]),_s=d({label:s(),value:s(),delta:s(),tone:I1,description:s(),tooltip:s().optional(),trend:y(ot()),progress:ot().optional(),providerCoverage:s().optional()}),ES=d({projectMentionSnapshots:m().int().nonnegative(),competitorMentionSnapshots:m().int().nonnegative(),combinedMentionSnapshots:m().int().nonnegative(),perCompetitor:y(d({domain:s(),mentionSnapshots:m().int().nonnegative(),shareOfCompetitiveTotal:ot()})),ranking:y(d({kind:k(["project","competitor"]),domain:s().nullable(),mentionSnapshots:m().int().nonnegative(),share:we(m().min(0).max(1))})),snapshotsWithAnswerText:m().int().nonnegative(),snapshotsTotal:m().int().nonnegative(),score:ot(m().min(0).max(100)).nullable()}),V$=_s.extend({breakdown:ES,scope:k(["non-brand","pooled"]),branded:ES}),Zf=d({gained:m().int().nonnegative(),lost:m().int().nonnegative(),tone:I1,hasPreviousRun:N(),gainedQueries:y(s()).optional(),lostQueries:y(s()).optional()}),$$=d({hasPreviousRun:N(),comparable:N(),querySetChanged:N(),previousRunAt:s().nullable(),currentQueryCount:m().int().nonnegative(),previousQueryCount:m().int().nonnegative(),comparableQueryCount:m().int().nonnegative(),addedQueryCount:m().int().nonnegative(),removedQueryCount:m().int().nonnegative(),addedQueries:y(s()),removedQueries:y(s())}),K$=d({id:s(),projectId:s(),runId:s().nullable(),type:k(["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:k(["critical","high","medium","low"]),title:s(),query:s(),provider:s(),recommendation:d({action:s(),target:s().optional(),reason:s()}).optional(),cause:d({cause:s(),competitorDomain:s().optional(),details:s().optional()}).optional(),dismissed:N(),createdAt:s()}),G$=d({id:s(),projectId:s(),runId:s().nullable(),overallCitedRate:we(),overallMentionRate:we(),totalPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),providerBreakdown:Ke(s(),d({citedRate:we(),mentionRate:we(),cited:m().int().nonnegative(),mentioned:m().int().nonnegative(),total:m().int().nonnegative()})),createdAt:s(),status:k(["ready","no-data"]),reason:E("no-runs-yet").optional()});d({sentiment:_$.optional(),project:nB,latestRun:iq,health:G$.nullable(),topInsights:y(K$),queryClassScope:d({queryClass:E("all"),figures:y(s()),note:s()}).optional(),queryCounts:d({totalQueries:m().int().nonnegative(),citedQueries:m().int().nonnegative(),notCitedQueries:m().int().nonnegative(),citedRate:we(),mentionedQueries:m().int().nonnegative(),notMentionedQueries:m().int().nonnegative(),mentionRate:we()}),providers:y(d({provider:s(),citedRate:we(),cited:m().int().nonnegative(),total:m().int().nonnegative()})),transitions:d({since:s().nullable(),gained:m().int().nonnegative(),lost:m().int().nonnegative(),emerging:m().int().nonnegative()}),scores:d({mention:_s,visibility:_s,mentionShare:V$,gapQueries:_s,mentionGaps:_s,indexCoverage:_s,competitorPressure:_s,runStatus:_s}),movementSummary:Zf,citationMovement:Zf,mentionMovement:Zf,movementComparison:$$,competitors:y(d({id:s(),domain:s(),aliases:y(s()).optional(),autoAliasNames:y(s()).optional(),citationCount:m().int().nonnegative(),totalQueries:m().int().nonnegative(),pressureLabel:k(["None","Low","Moderate","High"]),citedQueries:y(s())})),providerScores:y(d({provider:s(),model:s().nullable(),score:ot(),cited:m().int().nonnegative(),total:m().int().nonnegative(),trend:y(ot()).optional()})),attentionItems:y(d({id:s(),tone:I1,title:s(),detail:s(),actionLabel:s(),href:s()})),runHistory:y(d({runId:s(),createdAt:s(),citedCount:m().int().nonnegative(),totalCount:m().int().nonnegative(),citationRate:ot(),mentionedCount:m().int().nonnegative(),mentionRate:ot(),status:s()})),suggestedQueries:d({rows:y(d({query:s(),impressions:m(),clicks:m(),avgPosition:m(),reason:s()})),totalCandidates:m().int().nonnegative(),skippedAlreadyTracked:m().int().nonnegative()}),dateRangeLabel:s(),contextLabel:s()});k(["snapshot","insight"]);const H$=d({kind:E("snapshot"),id:s(),runId:s(),query:s(),provider:s(),model:s().nullable(),citationState:Ki,matchedField:k(["answerText","citedDomains","citedUrls","searchQueries","query"]),snippet:s(),createdAt:s()}),F$=d({kind:E("insight"),id:s(),runId:s().nullable(),type:k(["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:k(["critical","high","medium","low"]),title:s(),query:s(),provider:s(),matchedField:k(["title","query","recommendation","cause"]),snippet:s(),dismissed:N(),createdAt:s()}),Q$=Ue("kind",[H$,F$]);d({query:s(),totalHits:m().int().nonnegative(),truncated:N(),hits:y(Q$)});const lN=k(["create","expand","refresh","add-schema"]);lN.enum;const cN=k(["gsc","competitor-evidence","both"]);cN.enum;const uN=k(["high","medium","low"]);uN.enum;const Z$=k(["blog-post","comparison","listicle","how-to","guide","glossary"]);Z$.enum;const dN=k(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);dN.enum;const O1=k(["ownable","ceded"]);O1.enum;const Y$=d({url:s(),gscImpressions:m().nonnegative(),gscClicks:m().nonnegative(),gscAvgPosition:m().nonnegative().nullable(),organicSessions:m().nonnegative()}),X$=d({domain:s(),url:s(),title:s(),citationCount:m().int().nonnegative()}),J$=d({demand:m(),competitor:m(),absence:m(),gapSeverity:m()}),W$=d({actionId:s(),state:dN,lastUpdated:s()}),eK=d({targetRef:s(),query:s(),action:lN,ourBestPage:Y$.nullable(),winningCompetitor:X$.nullable(),score:m(),scoreBreakdown:J$,drivers:y(s()),demandSource:cN,actionConfidence:uN,existingAction:W$.nullable(),winnabilityClass:O1,winnability:we(m().min(0).max(1)).nullable()});d({targets:y(eK),contextMetrics:d({totalAiReferralSessions:m().int().nonnegative(),latestRunId:s(),runTimestamp:s()})});const tK=d({targetRef:s(),addressedUrl:s().nullable(),note:s().nullable(),dismissedAt:s()});d({dismissals:y(tK)});d({targetRef:s().min(1),addressedUrl:s().url().optional(),note:s().max(500).optional()});d({targetRef:s(),promptVersion:s(),provider:s(),model:s(),responseText:s(),costMillicents:m().int().nonnegative(),generatedAt:s()});d({provider:s().optional(),model:s().optional(),forceRefresh:N().optional()});const nK=d({targetQuery:s().trim().min(1),winnabilityClass:O1,angle:s().trim().min(1),whyWinnable:s().trim().min(1),schemaHookup:s().trim().min(1),controllableSurfaceRationale:s().trim().min(1)});d({targetRef:s(),promptVersion:s(),provider:s(),model:s(),brief:nK,costMillicents:m().int().nonnegative(),generatedAt:s()});const aK=d({domain:s(),competitorType:ou,hits:m().int().nonnegative(),updatedAt:s()});d({classifications:y(aK)});const iK=d({uri:s(),title:s(),domain:s(),isOurDomain:N(),isCompetitor:N(),citationCount:m().int().nonnegative(),providers:y(bt)}),sK=d({query:s(),groundingSources:y(iK)});d({sources:y(sK),latestRunId:s()});const oK=d({query:s(),competitorDomains:y(s()),competitorCount:m().int().nonnegative(),missRate:we(m().min(0).max(1)),lastSeenInRunId:s()});d({gaps:y(oK),latestRunId:s()});const mN=k(["ok","warn","fail","skipped"]);mN.enum;const P1=k(["global","project"]);P1.enum;const pN=k(["auth","config","providers","integrations","database","schedules","agent"]);pN.enum;const hN=k(["health","silent"]);hN.enum;const rK=s().regex(/^[1-9]\d{3}-(0[1-9]|1[0-2])$/,"Expected YYYY-MM"),lK=d({id:s(),category:pN,scope:P1,title:s(),status:mN,notificationPolicy:hN.optional().describe("Health checks page by default. Silent checks (report advisories and standing advisories) remain visible but never affect health alert state."),code:s().describe('Stable machine-readable code (e.g. "google.token.refresh-failed"). Use this for filtering and remediation logic.'),urgent:N().optional().describe('True when this result is a problem a person has to act on now (the website is down, daily data stopped arriving, a sync keeps failing). Urgent results are what the health.urgent notification event reports. A result set aside under its failing cause (status "skipped", code "<id>.superseded") keeps the flag: the problem is still open.'),summary:s(),remediation:s().nullable().optional().describe('Operator-facing next step. Null when status is "ok" or no specific remediation applies.'),details:Ke(s(),kn()).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.")});d({scope:P1,project:s().nullable().describe('Project name when scope is "project", null otherwise.'),reportMonths:y(rK).optional().describe("Calendar months evaluated by project report readiness checks."),generatedAt:s().describe("ISO-8601 timestamp when this doctor run started."),durationMs:m().int().nonnegative(),summary:d({total:m().int().nonnegative(),ok:m().int().nonnegative(),warn:m().int().nonnegative(),fail:m().int().nonnegative(),skipped:m().int().nonnegative()}),checks:y(lK)});function cK(e){return e.trim().toLowerCase()}const uK=d({provider:s(),citationState:Ki,cited:N(),mentioned:N(),runId:s(),runCreatedAt:s()}),dK=d({queryId:s(),query:s(),providers:y(uK),citedCount:m().int().nonnegative(),mentionedCount:m().int().nonnegative(),totalProviders:m().int().nonnegative()}),mK=d({queryId:s(),query:s(),provider:s(),citingCompetitors:y(s()),runId:s(),runCreatedAt:s()}),pK=d({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:s().nullable(),latestRunAt:s().nullable()});d({summary:pK,byQuery:y(dK),competitorGaps:y(mK),status:k(["ready","no-data"]),reason:k(["no-runs-yet","no-queries"]).optional()});const hK=Fe(i2(tl.organicEvidence).map(e=>E(e))),fK=k(["earliest","middle","prior","latest"]),qr=d({clicks:m().int().nonnegative(),impressions:m().int().nonnegative()}),fN=d({name:fK,startDate:s(),endDate:s()}),gK=fN.extend({totals:qr}),yK=fN.extend({organicSessions:m().int().nonnegative()}),Yf=d({startDate:s(),endDate:s(),observedDays:m().int().nonnegative()}),qd=d({verified:m().int().nonnegative(),claimedUnverified:m().int().nonnegative(),unknownAiLike:m().int().nonnegative()}),RS=d({total:m().int().nonnegative(),paid:m().int().nonnegative(),organic:m().int().nonnegative(),unknown:m().int().nonnegative()});d({contractVersion:E("organic-evidence/v1"),periodDays:hK,asOfDate:s().nullable(),coverage:d({gsc:N(),ga4:N(),server:N(),visibility:N()}),sourceCoverage:d({gsc:Yf.nullable(),ga4:Yf.nullable(),server:Yf.nullable(),visibility:d({completedAt:s(),ageDays:m().nonnegative()}).nullable()}),gsc:d({propertyTotals:qr,namedBrand:qr,namedNonBrand:qr,suppressedOrUnreportedResidual:qr,cohorts:y(gK)}).nullable(),ga4:d({organicSessions:m().int().nonnegative(),cohorts:y(yK)}).nullable(),gaAiReferrals:d({paidSessions:m().int().nonnegative(),organicSessions:m().int().nonnegative()}).nullable(),server:d({crawlerHits:qd,userFetchHits:qd,referralSessions:RS}).nullable(),visibility:d({runId:s(),completedAt:s(),ageDays:m().nonnegative(),answerPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative()}).nullable(),measurement:e9,pages:y(d({path:s(),gsc:qr,ga4OrganicSessions:m().int().nonnegative(),server:d({crawlerHits:qd,userFetchHits:qd,referralSessions:RS})})),findings:y(d({tone:k(["positive","caution","neutral"]),title:s(),detail:s()})),limitations:y(d({code:s(),detail:s()}))});const bK=k(["claude","codex"]);bK.enum;const vK=k(["claude","codex","all"]);vK.enum;const gN=d({content:m().int().nonnegative(),sitemap:m().int().nonnegative(),robots:m().int().nonnegative(),asset:m().int().nonnegative(),other:m().int().nonnegative()}),xK=k(["content","sitemap","robots","asset","other"]),q1=k(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);q1.enum;const wK=k(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);wK.enum;const SK=k(["raw-request","aggregate-bucket"]),kK=SK.enum,jK=k(["observed","provider-aggregated","inferred"]),AK=jK.enum,NK=d({type:s().nullable(),labels:Ke(s(),s())}),CK=d({sourceType:q1,evidenceKind:E(kK["raw-request"]),confidence:E(AK.observed),eventId:s().min(1),observedAt:s().min(1),method:s().nullable(),requestUrl:s().nullable(),host:s().nullable(),path:s().min(1),queryString:s().nullable(),status:m().int().nullable(),userAgent:s().nullable(),remoteIp:s().nullable(),referer:s().nullable(),latencyMs:m().nullable(),requestSizeBytes:m().int().nullable(),responseSizeBytes:m().int().nullable(),providerResource:NK,providerLabels:Ke(s(),s())});d({events:y(CK),rawEntryCount:m().int().nonnegative(),skippedEntryCount:m().int().nonnegative(),nextPageToken:s().optional(),filter:s()});const yN=k(["connected","paused","error","archived"]),Jae=yN.enum,bN=k(["oauth","service-account"]);bN.enum;const vN=k(["verified","claimed_unverified","unknown_ai_like"]),Wae=vN.enum,_K=d({id:s().min(1),source:s().min(1),version:s().min(1)}),xN=d({manifestId:s().min(1),manifest:_K.nullable(),hits:m().int().nonnegative()});d({gcpProjectId:s().min(1),serviceName:s().nullable().optional(),location:s().nullable().optional(),authMode:bN});d({baseUrl:s().url(),username:s().min(1)});const M1=k(["production","preview"]);M1.enum;d({projectId:s().min(1),teamId:s().min(1),environment:M1});const wN=d({id:s(),projectId:s(),sourceType:q1,displayName:s(),status:yN,lastSyncedAt:s().nullable(),lastCursor:s().nullable(),lastError:s().nullable(),skippedThroughAt:s().nullable(),queueBacklogCount:m().int().nonnegative().nullable(),queueBacklogObservedAt:s().nullable(),archivedAt:s().nullable(),config:Ke(s(),kn()),createdAt:s(),updatedAt:s()});d({gcpProjectId:s().min(1),serviceName:s().min(1).optional(),location:s().min(1).optional(),displayName:s().min(1).optional(),keyJson:s().optional()});d({baseUrl:s().url(),username:s().min(1),applicationPassword:s().min(1),displayName:s().min(1).optional()});d({projectId:s().min(1),teamId:s().min(1),token:s().min(1),environment:M1.optional(),displayName:s().min(1).optional()});const TK=k(["direct-push","queue-pull"]),dl=TK.enum,B1=s().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"),SN=d({schemaVersion:E(1),workerVersion:s().min(1),expectedBotListVersion:s().min(1),zoneId:s().nullable()}),EK=SN.extend({deliveryMode:E(dl["direct-push"]),accountId:s().nullable()}),RK=SN.extend({deliveryMode:E(dl["queue-pull"]),accountId:s().min(1),queueId:s().min(1),queueName:B1,retentionSeconds:m().int().min(60).max(1209600)});function kN(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;const n=e;return"deliveryMode"in n?e:{...n,deliveryMode:"direct-push"}}Ya(kN,Ue("deliveryMode",[EK,RK]));const jN=d({displayName:s().min(1).optional(),zoneId:s().min(1).optional()}),DK=jN.extend({deliveryMode:E(dl["direct-push"]),accountId:s().min(1).optional()}),zK=jN.extend({deliveryMode:E(dl["queue-pull"]),accountId:s().min(1),queueId:s().min(1),queueName:B1,retentionSeconds:m().int().min(60).max(1209600),apiToken:s().min(1)});Ya(kN,Ue("deliveryMode",[DK,zK]));const AN=d({sourceId:s().min(1),workerScript:s().min(1),wranglerToml:s().min(1),workerVersion:s().min(1),instructions:s().min(1)}),IK=AN.extend({deliveryMode:E(dl["direct-push"]),activationRequired:N().default(!1)}),OK=AN.extend({deliveryMode:E(dl["queue-pull"]),activationRequired:N().default(!1),accountId:s().min(1),queueId:s().min(1),queueName:B1,retentionSeconds:m().int().min(60).max(1209600)});Ue("deliveryMode",[IK,OK]);const PK=d({eventId:s().min(1),observedAt:s().datetime(),method:s().nullable(),host:s().nullable(),path:s().min(1),queryString:s().nullable(),status:m().int().nullable(),userAgent:s().nullable(),remoteIp:s().nullable(),referer:s().nullable(),cf:d({verifiedBot:N().nullable(),botScore:m().int().nullable(),country:s().nullable(),asn:m().int().nullable(),asOrganization:s().nullable()}).nullable()});d({schemaVersion:E(1),workerVersion:s().min(1),events:y(PK).min(1).max(100)});d({acceptedEvents:m().int(),droppedEvents:m().int(),workerVersionAck:s(),crawlerBucketRows:m().int(),aiUserFetchBucketRows:m().int(),aiReferralBucketRows:m().int(),sampleRows:m().int()});d({sourceId:s(),runId:s(),syncedAt:s(),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:s(),windowEnd:s()});d({days:m().int().positive().optional()});d({advanceToNow:E(!0)});d({sourceId:s(),runId:s(),status:ta,windowStart:s(),windowEnd:s(),daysRequested:m().int().positive(),daysApplied:m().int().positive()});const qK=d({crawlerHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),crawlerInfraHits:m().int().nonnegative(),crawlerSegments:gN,aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralLandedHits:m().int().nonnegative(),aiReferralRedirectedHits:m().int().nonnegative(),sampleCount:m().int().nonnegative()});d({sources:y(wN)});const MK=wN.extend({totals24h:qK,latestRun:d({runId:s(),status:ta,startedAt:s().nullable(),finishedAt:s().nullable(),error:s().nullable()}).nullable()});d({sources:y(MK)});const BK=k(["crawler","ai-user-fetch","ai-referral"]),L1=BK.enum,NN=k(["hour","day"]);NN.enum;const LK=d({bucket:s(),crawlerHits:m().int().nonnegative(),aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralLandedHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),measured:N()}),UK=d({kind:E(L1.crawler),sourceId:s(),tsHour:s(),botId:s(),operator:s(),verificationStatus:s(),verificationManifests:y(xN).optional(),verificationUnattributedHits:m().int().nonnegative().optional(),pathNormalized:s(),pathClass:xK,status:m().int(),hits:m().int().nonnegative()}),VK=d({kind:E(L1["ai-user-fetch"]),sourceId:s(),tsHour:s(),botId:s(),operator:s(),verificationStatus:s(),verificationManifests:y(xN).optional(),verificationUnattributedHits:m().int().nonnegative().optional(),pathNormalized:s(),status:m().int(),hits:m().int().nonnegative()}),$K=d({kind:E(L1["ai-referral"]),sourceId:s(),tsHour:s(),product:s(),operator:s(),sourceDomain:s(),evidenceType:s(),landingPathNormalized:s(),status:m().int(),hits:m().int().nonnegative(),paidHits:m().int().nonnegative(),organicHits:m().int().nonnegative(),unknownHits:m().int().nonnegative()}),KK=Ue("kind",[UK,VK,$K]);d({windowStart:s(),windowEnd:s(),series:d({granularity:NN,points:y(LK),coverageStart:s().nullable(),trends:d({crawlerContentHits:Co.nullable(),aiUserFetchHits:Co.nullable(),aiReferralLandedHits:Co.nullable()})}),totals:d({crawlerHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),crawlerInfraHits:m().int().nonnegative(),crawlerSegments:gN,aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralLandedHits:m().int().nonnegative(),aiReferralRedirectedHits:m().int().nonnegative(),aiReferralPaidHits:m().int().nonnegative(),aiReferralOrganicHits:m().int().nonnegative(),aiReferralUnknownHits:m().int().nonnegative()}),eventRows:d({total:m().int().nonnegative(),returned:m().int().nonnegative(),truncated:N()}),events:y(KK)});const CN=k(["crawler","ai-user-fetch","ai-referral","unknown"]);CN.enum;d({kind:k(["crawler","ai-user-fetch","ai-referral","unknown","all"]).optional(),sourceId:s().min(1).optional(),since:Fe([sm({offset:!0}),Is()],{error:"Expected an ISO timestamp or YYYY-MM-DD date"}).optional(),until:Fe([sm({offset:!0}),Is()],{error:"Expected an ISO timestamp or YYYY-MM-DD date"}).optional(),path:s().optional(),limit:m().int().min(1).max(500).optional(),offset:m().int().nonnegative().optional()}).strict();const DS=d({botId:s().nullish(),operator:s().nullish(),product:s().nullish(),verificationStatus:vN.nullish(),verificationManifest:d({id:s().nullish(),source:s().nullish(),version:s().nullish()}).nullish(),matchedUserAgent:s().nullish()}),GK=d({crawler:DS.extend({purpose:s().nullish()}).nullable().default(null),aiUserFetch:DS.nullable().default(null),aiReferral:d({operator:s().nullish(),product:s().nullish(),sourceDomain:s().nullish(),evidenceType:k(["referer","utm","referer-utm"]).nullish(),trafficClass:uu.nullish()}).nullable().default(null)}),HK=d({id:s(),sourceId:s(),ts:s(),kind:CN,pathNormalized:s(),status:m().int().nullable(),refererHost:s().nullable(),userAgent:s().nullable(),classifier:GK});d({scope:d({project:s(),sourceId:s().nullable(),attribution:E("project-source-only"),unavailableDimensions:y(k(["property","target","market"]))}),windowStart:s(),windowEnd:s(),retentionDays:E(30),sampling:d({complete:E(!1),perSync:E(100),perBackfill:E(500),perPushHour:E(100)}),totalRows:m().int().nonnegative(),limit:m().int(),offset:m().int(),samples:y(HK)});const U1=k(["admin","viewer"]),FK=/^[a-z\d][\w.-]{0,63}$/i,QK=s().regex(FK,"A name may use letters, digits, dots, dashes and underscores, and must start with a letter or digit."),zS=12,ZK=s().min(zS,`A password must be at least ${zS} characters.`),_N=d({id:s(),name:s(),role:U1,createdAt:s(),lastLoginAt:s().nullable()});d({users:y(_N)});d({name:QK,password:ZK,role:U1});d({name:s().min(1),password:s().min(1)});d({authRequired:N(),user:_N.pick({name:!0,role:!0}).nullable()});const TN=k(["queued","running","completed","partial","failed"]),eie=TN.enum,EN=k(["queued","running","completed","failed"]),tie=EN.enum,YK=20,XK=20,$g=50,RN=d({kind:k(["market","property"]),key:ge,expectedPlanRevision:m().int().positive().optional()}).strict(),JK=d({kind:k(["market","property"]),key:ge,label:s().trim().min(1),planRevision:m().int().positive()}).strict(),DN=s().min(1).max(4e3).refine(e=>e.trim().length>0,"Research queries cannot be blank.");function nie(e){const n=new Set;return e.filter(i=>{const r=cK(i);return!r||n.has(r)?!1:(n.add(r),!0)})}function WK(e,n){const i=e?e.kind==="market"?{market:e.label,submarket:e.label}:{property:e.label,propertyBrand:e.label}:{};return n?{...i,location:n.label}:i}function aie(e,n,i){const r=new Set(e.variables),u=[...e.pattern.matchAll(/\{([^{}]+)\}/g)].map(x=>x[1]),h=[...new Set(u.filter(x=>!r.has(x)))];if(h.length)throw wg("The selected research template contains undeclared placeholders: "+h.join(", "));const f=WK(n,i),b=e.variables.filter(x=>f[x]===void 0);if(b.length)throw wg("The selected research template requires unavailable bindings: "+b.join(", "));const v=Object.fromEntries(e.variables.map(x=>[x,f[x]]));return{bindings:v,output:UB(e.pattern,v)}}const zN=d({templateId:s().trim().min(1).max(256),templateVersion:s().trim().min(1).max(256),bindingLocation:Jt.nullable().optional()}).strict();d({queries:y(DN).min(1).max(50),provider:s().trim().min(1).optional(),model:s().trim().min(1).max(200).optional(),location:Jt.nullable().optional(),scope:RN.optional(),template:zN.optional(),idempotencyKey:s().trim().min(1).max(128).optional()}).superRefine((e,n)=>{e.model&&!e.provider&&n.addIssue({code:fe.custom,path:["provider"],message:"provider is required when model is supplied"})});const eG=RN.extend({expectedPlanRevision:m().int().positive()}).strict(),tG=d({queries:y(DN).min(1).max($g),provider:s().trim().min(1),model:s().trim().min(1).max(200),location:Jt.nullable(),scope:eG.optional(),template:zN.optional()}).strict();d({idempotencyKey:s().trim().min(1).max(128),runs:y(tG).min(1).max(XK)}).strict().superRefine((e,n)=>{e.runs.reduce((r,u)=>r+u.queries.length,0)>$g&&n.addIssue({code:fe.custom,path:["runs"],message:`A research batch may contain at most ${$g} concrete queries across all destinations`})});const nG=d({kind:k(["api-key","user"]),id:s(),name:s(),role:U1.nullable(),limited:N().optional()}),IN=d({id:s(),projectId:s(),status:TN,provider:s(),requestedModel:s().nullable(),resolvedModel:s(),location:Jt.nullable(),scope:JK.nullable().optional(),template:eA.nullable().optional(),totalQueries:m().int(),completedQueries:m().int(),failedQueries:m().int(),error:s().nullable(),initiatedBy:nG.nullable(),startedAt:s().nullable(),finishedAt:s().nullable(),createdAt:s()}),aG=d({id:s(),position:m().int(),query:s(),queryClass:Bo.nullable().optional(),status:EN,requestedModel:s().nullable(),resolvedModel:s(),servedModel:s().nullable(),answerText:s().nullable(),groundingSources:y(Gm),citedDomains:y(s()),searchQueries:y(s()),namedCompetitors:y(s()).default([]),citedCompetitorDomains:y(s()).default([]),answerMentioned:N().nullable(),citationState:Ki.nullable(),error:s().nullable(),startedAt:s().nullable(),finishedAt:s().nullable(),createdAt:s()}),iG=IN.extend({queries:y(aG)});d({runs:y(iG)});const sG=d({name:s(),displayName:s(),modelConfigurable:N(),defaultModel:s(),knownModels:y(d({id:s(),displayName:s()}))});d({runs:y(IN),nextCursor:s().nullable().optional(),providers:y(sG).optional(),access:d({canRun:N(),dailyRunLimit:m().int().positive().nullable()}).optional()});d({apiKey:s().min(1)});d({id:s(),name:s(),status:s(),currencyCode:s().nullable(),timezone:s().nullable(),url:s().nullable(),reviewStatus:s().nullable(),integrityReviewStatus:s().nullable(),integrityDecision:s().nullable()});d({q:s().trim().min(1).max(200),limit:m().int().min(1).max(100).default(20)});const oG=d({id:s(),type:s(),canonicalName:s(),countryCode:s(),name:s(),regionCode:s().nullable()});d({count:m().int().nonnegative(),query:s(),results:y(oG)});const rG=d({id:s(),clientType:s().optional(),name:s().optional(),pixelId:s().optional()});d({pixels:y(rG)});const lG=d({id:s(),name:s().optional()}),cG=d({id:s(),name:s().optional(),eventType:s().optional(),customEventName:s().nullable().optional(),attributionWindowDays:m().int().positive().optional(),adAccountId:s().optional(),sourceIds:y(s()).optional(),sources:y(lG).optional(),archived:N().optional(),version:m().int().nonnegative().optional()});d({eventSettings:y(cG)});d({connected:N(),adAccountId:s().nullable().optional(),displayName:s().nullable().optional(),currencyCode:s().nullable().optional(),timezone:s().nullable().optional(),status:s().nullable().optional(),reviewStatus:s().nullable().optional(),integrityReviewStatus:s().nullable().optional(),integrityDecision:s().nullable().optional(),lastSyncedAt:s().nullable().optional(),conversionTrackingConfigured:N().optional()});d({disconnected:N()});d({runId:s(),status:s()});const uG=["campaign_id","ad_group_id","ad_id","ad_account_id","oppref"],dG=/^[\w.-]+=[^&#\s]*$/,mG=/\{([^}]*)\}/g,Vo=s().min(1).max(1e3).superRefine((e,n)=>{const i=u=>n.addIssue({code:"custom",message:u});if(e.startsWith("?")||e.startsWith("&")){i("Tracking template must not start with ? or &");return}const r=new Set;for(const u of e.split("&")){if(!dG.test(u)){i(`Tracking template pair '${u}' must be key=value without whitespace, # or &`);return}const h=u.slice(0,u.indexOf("="));if(r.has(h)){i(`Tracking template repeats the parameter '${h}'`);return}r.add(h)}for(const u of e.matchAll(mG)){const h=u[1];if(!uG.includes(h)){i(`Tracking template macro '{${h}}' is not supported`);return}}}),pG=d({type:s().nullable().optional(),title:s().nullable().optional(),body:s().nullable().optional(),targetUrl:s().nullable().optional(),fileId:s().nullable().optional()}),mu=k(["impressions","clicks"]);mu.enum;const pu=k(["impression","click"]);pu.enum;const hG=d({id:s(),adGroupId:s(),name:s(),status:s(),reviewStatus:s().nullable().optional(),creative:pG.nullable().optional(),landingPageQueryStringTemplate:s().nullable().optional(),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:s().optional()}),fG=d({id:s(),campaignId:s(),name:s(),description:s().nullable().optional(),status:s(),billingEventType:Fe([pu,de()]).optional(),maxBidMicros:m().int().nullable().optional(),contextHints:y(s()).default([]),ads:y(hG).default([]),landingPageQueryStringTemplate:s().nullable().optional(),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:s().optional()}),gG=d({id:s(),name:s(),description:s().nullable().optional(),status:s(),startTime:m().int().nullable().optional(),endTime:m().int().nullable().optional(),biddingType:Fe([mu,de()]).optional(),dailySpendLimitMicros:m().int().nullable().optional(),lifetimeSpendLimitMicros:m().int().nullable().optional(),conversionEventSettingIds:y(s()).default([]),locationIds:y(s()).optional(),adGroups:y(fG).default([]),landingPageQueryStringTemplate:s().nullable().optional(),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:s().optional()});d({campaigns:y(gG)});const ON=k(["campaign","ad_group"]);ON.enum;const yG=d({level:ON,entityId:s(),date:s(),impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int(),ctr:we().nullable(),cpcMicros:m().int().nullable(),inProgress:N()});d({rows:y(yG),currencyCode:s().nullable().optional()});const PN=d({from:s().nullable(),to:s().nullable(),inProgressDate:s().nullable()}),qN=d({impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int(),ctr:we().nullable(),cpcMicros:m().int().nullable()});d({connected:N(),displayName:s().nullable().optional(),currencyCode:s().nullable().optional(),lastSyncedAt:s().nullable().optional(),campaignCount:m().int(),adGroupCount:m().int(),adCount:m().int(),window:PN,totals:qN});const MN=k(["unavailable","partial","complete"]);MN.enum;const BN=k(["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"]);BN.enum;const LN=k(["unavailable","reported"]);LN.enum;const bG={storedSnapshot:"stored_ads_snapshot"},UN=k(["unavailable","partial_snapshot","metrics_unavailable","observed_activity","no_observed_activity"]);UN.enum;const vG=d({id:s(),name:s(),status:s(),reviewStatus:s().nullable()}),xG=d({id:s(),name:s(),status:s(),billingEventType:Fe([pu,de()]),maxBidMicros:m().int().nullable(),contextHints:y(s()),ads:y(vG)}),wG=d({id:s(),name:s(),status:s(),biddingType:Fe([mu,de()]),dailySpendLimitMicros:m().int().nullable(),lifetimeSpendLimitMicros:m().int().nullable(),conversionEventSettingIds:y(s()),adGroups:y(xG)});d({snapshot:d({status:MN,issue:Fe([BN,de()]),lastSyncedAt:s().nullable(),campaignCount:m().int().nonnegative(),adGroupCount:m().int().nonnegative(),adCount:m().int().nonnegative(),sourceSync:d({runId:s(),status:ta}).nullable()}),historicalCampaignRollups:d({status:LN,window:PN,totals:qN.nullable()}),storedConfiguration:d({basis:E(bG.storedSnapshot),connection:d({status:s().nullable(),reviewStatus:s().nullable(),integrityReviewStatus:s().nullable(),integrityDecision:s().nullable(),conversionTrackingConfigured:N()}).nullable(),campaigns:y(wG)}),assessment:d({state:UN})});const mi=s().min(8).max(128).regex(/^[\w.:-]+$/,"operationKey may contain letters, numbers, dot, underscore, colon, and hyphen"),Kt=s().min(1).max(200),$o=s().min(3).max(1e3).refine(e=>e.trim().length>0),Zr=m().int().min(946684800).max(4102444800),Yr=m().int().positive().max(Number.MAX_SAFE_INTEGER),V1=s().regex(/^[a-f0-9]{64}$/),VN=y(Kt).max(100).refine(e=>new Set(e).size===e.length,"conversionEventSettingIds must be unique"),$N=s().url().refine(e=>new URL(e).protocol==="https:",{message:"URL must use https"}),KN=k(["image_upload","campaign_create","campaign_update","campaign_pause","campaign_archive","campaign_tree_activate","ad_group_create","ad_group_update","ad_group_pause","ad_group_archive","ad_create","ad_update","ad_pause","ad_archive"]);KN.enum;const GN=k(["pending","reconciling","succeeded","failed","unknown"]),Vr=GN.enum,HN=k(["known_entity","create_fingerprint","manual_only"]);HN.enum;const FN=k([Vr.pending,Vr.unknown,Vr.reconciling]);FN.enum;const QN=k(["active","paused","archived"]);QN.enum;const ZN=k(["file","campaign","ad_group","ad"]);ZN.enum;const YN=k(["campaign","ad_group","ad"]);YN.enum;const $1=d({id:Kt,expectedUpdatedAt:m().int().nonnegative()}).strict(),SG=$1,bm=1e3;function kG(e){return 1+e.campaign.adGroups.reduce((n,i)=>n+1+i.ads.length,0)}const jG=$1.extend({ads:y(SG).min(1).max(bm-1)}).strict(),AG=$1.extend({adGroups:y(jG).min(1).max(bm-1)}).strict();function IS(e,n,i){for(let r=1;r<e.length;r+=1)if(u2(e[r-1].id,e[r].id)>=0){i.addIssue({code:"custom",path:n,message:"Activation manifest entities must be uniquely sorted by id"});return}}const XN=d({campaign:AG}).strict().superRefine((e,n)=>{kG(e)>bm&&n.addIssue({code:"custom",path:["campaign"],message:`Activation manifests may contain at most ${bm} entities`}),IS(e.campaign.adGroups,["campaign","adGroups"],n);const r=new Set;for(let u=0;u<e.campaign.adGroups.length;u+=1){const h=e.campaign.adGroups[u];IS(h.ads,["campaign","adGroups",u,"ads"],n);for(let f=0;f<h.ads.length;f+=1){const b=h.ads[f];r.has(b.id)&&n.addIssue({code:"custom",path:["campaign","adGroups",u,"ads",f,"id"],message:"An ad may appear only once in an activation manifest"}),r.add(b.id)}}}),JN=V1,NG=k(["approved","executing","consumed","revoked","expired","unknown"]),$i=NG.enum,CG=k(["pending","executing","active","failed","rollback_executing","rolled_back","rollback_failed","unknown"]),Vs=CG.enum,_G=d({name:$o.optional(),description:s().max(4e3).nullable().optional(),status:QN.optional(),startTime:Zr.nullable().optional(),endTime:Zr.nullable().optional(),lifetimeSpendLimitMicros:Yr.min(1e6).optional(),locationIds:y(Kt).max(100).optional(),biddingType:mu.optional(),conversionEventSettingIds:VN.optional(),campaignId:Kt.optional(),contextHints:y(s().min(1).max(1e3)).max(100).optional(),maxBidMicros:Yr.max(1e8).optional(),billingEventType:pu.optional(),adGroupId:Kt.optional(),creativeFingerprint:V1.optional(),landingPageQueryStringTemplate:Vo.nullable().optional()}).strict();d({operationKey:mi,imageUrl:$N});d({operationKey:mi,name:$o,description:s().max(4e3).optional(),startTime:Zr.optional(),endTime:Zr.optional(),lifetimeSpendLimitMicros:Yr.min(1e6),locationIds:y(Kt).min(1).max(100),biddingType:mu.optional(),conversionEventSettingIds:VN.optional(),landingPageQueryStringTemplate:Vo.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"})});d({operationKey:mi,campaignId:Kt,name:$o,description:s().max(4e3).optional(),contextHints:y(s().min(1).max(1e3)).min(1).max(100),maxBidMicros:Yr.max(1e8),billingEventType:pu.optional(),landingPageQueryStringTemplate:Vo.optional()});const WN=d({title:s().min(3).max(50),body:s().min(1).max(100),targetUrl:$N,fileId:Kt});d({operationKey:mi,adGroupId:Kt,name:$o,creative:WN,landingPageQueryStringTemplate:Vo.optional()});function K1(e){return Object.keys(e).some(n=>n!=="operationKey"&&n!=="expectedUpdatedAt")}d({operationKey:mi,expectedUpdatedAt:m().int().nonnegative(),name:$o.optional(),description:s().max(4e3).nullable().optional(),startTime:Zr.nullable().optional(),endTime:Zr.nullable().optional(),lifetimeSpendLimitMicros:Yr.min(1e6).optional(),locationIds:y(Kt).min(1).max(100).optional(),landingPageQueryStringTemplate:Vo.nullable().optional()}).refine(K1,{message:"At least one campaign field must be updated"});d({operationKey:mi,expectedUpdatedAt:m().int().nonnegative(),name:$o.optional(),description:s().max(4e3).nullable().optional(),contextHints:y(s().min(1).max(1e3)).min(1).max(100).optional(),maxBidMicros:Yr.max(1e8).optional(),landingPageQueryStringTemplate:Vo.nullable().optional()}).refine(K1,{message:"At least one ad group field must be updated"});d({operationKey:mi,expectedUpdatedAt:m().int().nonnegative(),name:$o.optional(),creative:WN.optional(),landingPageQueryStringTemplate:Vo.nullable().optional()}).refine(K1,{message:"At least one ad field must be updated"});d({operationKey:mi});d({operationKey:mi,expectedUpdatedAt:m().int().nonnegative()});const sp=d({id:s(),adAccountId:s().nullable(),operationKey:s(),kind:KN,state:GN,entityType:Fe([ZN,de()]),entityId:s().nullable(),upstreamUpdatedAt:m().int().nullable(),errorCode:s().nullable(),errorMessage:s().nullable(),reconcileStrategy:Fe([HN,de()]),reconcileParentId:Kt.nullable(),reconcileFingerprint:V1.nullable(),reconcileFields:_G.nullable(),reconcileAttempts:m().int().nonnegative(),lastReconciledAt:s().nullable(),createdAt:s(),updatedAt:s()});d({operation:sp,replayed:N()});const Pt=sm({offset:!0}),ml={id:Kt,projectId:Kt,adAccountId:Kt,manifestHash:JN,manifest:XN,executorApiKeyId:Kt,approverApiKeyId:Kt,expiresAt:Pt,approvedAt:Pt,createdAt:Pt,updatedAt:Pt,revocationRequestedAt:Pt.nullable()},TG=d({...ml,state:E($i.approved),operationId:de(),executionStartedAt:de(),consumedAt:de(),revokedAt:de(),expiredAt:de()}).strict(),EG=d({...ml,state:E($i.executing),operationId:Kt,executionStartedAt:Pt,consumedAt:de(),revokedAt:de(),expiredAt:de()}).strict(),RG=d({...ml,state:E($i.consumed),operationId:Kt,executionStartedAt:Pt,consumedAt:Pt,revokedAt:de(),expiredAt:de()}).strict(),DG=d({...ml,state:E($i.revoked),operationId:de(),executionStartedAt:de(),consumedAt:de(),revokedAt:Pt,expiredAt:de()}).strict(),zG=d({...ml,state:E($i.expired),operationId:de(),executionStartedAt:de(),consumedAt:de(),revokedAt:de(),expiredAt:Pt}).strict(),IG=d({...ml,state:E($i.unknown),operationId:Kt,executionStartedAt:Pt,consumedAt:de(),revokedAt:de(),expiredAt:de()}).strict(),eC=Ue("state",[TG,EG,RG,DG,zG,IG]).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!==$i.executing&&e.state!==$i.unknown&&e.state!==$i.consumed&&n.addIssue({code:"custom",path:["revocationRequestedAt"],message:"Only an executing, cancelled, or unresolved activation can carry a cancellation request"})}),$s={id:Kt,operationId:Kt,ordinal:m().int().nonnegative(),entityType:YN,entityId:Kt,expectedUpdatedAt:m().int().nonnegative(),createdAt:Pt,updatedAt:Pt},hu={errorCode:de(),errorMessage:de()},G1={errorCode:s().min(1).max(100),errorMessage:s().min(1).max(500),remediation:s().min(1).max(500)},OG=d({...$s,...hu,state:E(Vs.pending),providerUpdatedAt:de(),remediation:de(),startedAt:de(),finishedAt:de()}).strict(),PG=d({...$s,...hu,state:E(Vs.executing),providerUpdatedAt:de(),remediation:de(),startedAt:Pt,finishedAt:de()}).strict(),qG=d({...$s,...hu,state:E(Vs.active),providerUpdatedAt:m().int().nonnegative(),remediation:de(),startedAt:Pt,finishedAt:Pt}).strict(),MG=d({...$s,...G1,state:E(Vs.failed),providerUpdatedAt:Fe([m().int().nonnegative(),de()]),startedAt:Pt,finishedAt:Pt}).strict(),BG=d({...$s,...hu,state:E(Vs.rollback_executing),providerUpdatedAt:m().int().nonnegative(),remediation:s().min(1).max(500),startedAt:Pt,finishedAt:de()}).strict(),LG=d({...$s,...hu,state:E(Vs.rolled_back),providerUpdatedAt:m().int().nonnegative(),remediation:s().min(1).max(500),startedAt:Pt,finishedAt:Pt}).strict(),UG=d({...$s,...G1,state:E(Vs.rollback_failed),providerUpdatedAt:m().int().nonnegative(),startedAt:Pt,finishedAt:Pt}).strict(),VG=d({...$s,...G1,state:E(Vs.unknown),providerUpdatedAt:Fe([m().int().nonnegative(),de()]),startedAt:Pt,finishedAt:Pt}).strict(),$G=Ue("state",[OG,PG,qG,MG,BG,LG,UG,VG]),Kg={exact:"exact",refreshSemanticallyUnchanged:"refresh_semantically_unchanged"},KG=k([Kg.exact,Kg.refreshSemanticallyUnchanged]);d({manifest:XN,executorApiKeyId:Kt,expiresAt:Pt,versionPolicy:KG.default(Kg.exact)}).strict();d({grant:eC}).strict();d({}).strict();d({operationKey:mi,grantId:Kt,manifestHash:JN}).strict();d({grant:eC,operation:sp,steps:y($G)}).strict();const GG=[Vr.pending,Vr.unknown,Vr.reconciling];function HG(e){if(e===void 0||e==="")return GG;if(Array.isArray(e)){const n=[];for(const i of e)typeof i=="string"?n.push(...i.split(",")):n.push(i);return n}return typeof e=="string"?e.split(",").filter(Boolean):e}d({state:Ya(HG,y(FN).min(1).max(3).refine(e=>new Set(e).size===e.length,"state values must be unique")),limit:Ha().int().min(1).max(200).default(100),cursor:s().min(1).max(1e3).optional()});d({operations:y(sp),count:m().int().nonnegative(),nextCursor:s().nullable()});d({}).strict();d({operation:sp,resolved:N()});d({campaignId:s().min(1).max(200).optional(),lookbackDays:Ha().int().min(1).max(30).default(7)});const tC=k(["campaign","ad_group","ad"]);tC.enum;const nC=k(["both","live-only","stored-only"]);nC.enum;const FG=E("live-provider-read"),QG=d({date:s().nullable(),startTime:m().nullable(),endTime:m().nullable(),impressions:m().nullable(),clicks:m().nullable(),spend:m().nullable(),conversions:m().nullable(),ctr:we().nullable(),cpc:m().nullable(),cpm:m().nullable()}),OS=d({impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int()}),ZG=d({date:s(),live:OS.nullable(),stored:OS.nullable(),drifted:N()}),YG=d({field:s(),live:s().nullable(),stored:s().nullable()}),XG=d({name:s().nullable(),status:s(),reviewStatus:s().nullable(),mode:s().nullable(),updatedAt:m().nullable()}),JG=d({name:s(),status:s(),reviewStatus:s().nullable(),upstreamUpdatedAt:m().nullable(),syncedAt:s()}),WG=d({entityType:tC,id:s(),parentId:s().nullable(),presence:nC,live:XG.nullable(),stored:JG.nullable(),fieldDeltas:y(YG),liveMetrics:y(QG).nullable(),metricDeltas:y(ZG).nullable(),drifted:N()}),eH=d({surface:s(),entityId:s().nullable(),upstreamStatus:m().int().nullable()});d({basis:FG,fetchedAt:s(),adAccountId:s(),storedSnapshotSyncedAt:s().nullable(),metricsWindow:d({lookbackDays:m().int().positive()}),bounds:d({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:N()}),entities:y(WG),drift:d({entitiesCompared:m().int().nonnegative(),driftedEntities:m().int().nonnegative(),statusDrifted:m().int().nonnegative(),metricsDrifted:m().int().nonnegative()}),errors:y(eH)});const tH=d({status:k(["available","unavailable","not-supported"])}),PS="*";function aC(e){if(e?.some(n=>n.trim().toLowerCase()==="report"))return"The report embed tab has been retired. Remove report from the allowed tabs; explicitly configure overview to display AI Visibility."}const nH=k(["enabled","configured_disabled","CANONRY_TELEMETRY_DISABLED","DO_NOT_TRACK","CI","NO_CONFIG","CONFIG_UNAVAILABLE"]),aH=k(["server","local"]);d({enabled:N(),configuredEnabled:N(),reason:nH,anonymousId:s().regex(/^[0-9a-f]{8}\.\.\.$/i).optional(),target:aH.optional()}).strict();const ft=1,Xf=k(["system","project","queries","competitors","run","finish"]),iH=k(["copy_agent_command","connect_server_traffic","connect_search_console","connect_analytics","connect_business_profile","set_schedule","add_notification","open_project","review_page_health"]),Jf=k(["0","1","2-3","4-5","6-10","11+"]);function li(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 qS=k(["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","rate_limited","provider_auth","network","unknown"]),sH=k(["wizard","platform","site_health"]),Md=d({eventId:s().uuid(),flowVersion:E(ft),onboardingSessionId:s().uuid(),surface:sH.optional()});Ue("event",[Md.extend({event:E("onboarding.started"),step:Xf,resumed:N()}).strict(),Md.extend({event:E("onboarding.step_completed"),step:Xf,method:k(["existing","inline","manual","generated","skipped","automatic"]),countBucket:Jf.optional(),nextAction:iH.optional()}).strict(),Md.extend({event:E("onboarding.blocked"),step:Xf,action:k(["continue","configure_provider","generate_queries","save","launch_run","retry_run"]),reasonCode:qS}).strict(),Md.extend({event:E("run.requested"),origin:E("dashboard_setup"),result:k(["queued","rejected"]),kind:k(["answer_visibility","site_health"]).optional(),providerCountBucket:Jf,queryCountBucket:Jf,reasonCode:qS.optional()}).strict()]);d({accepted:N()});k(["cli","mcp-stdio","mcp-http","aero","api","dashboard"]);const oH=["cli","mcp-stdio","mcp-http","aero","api","dashboard","system"],H1=k(oH);H1.enum;const iC=["provider","gsc","ga4","bing","gbp","google_ads","gtm","openai_ads","traffic_cloudflare","traffic_vercel","traffic_cloud_run","wordpress","backlinks","webhook","agent_webhook","cdp","traffic_wordpress"],F1=k(iC),sC=F1.enum,rH=["connect","disconnect","test","reauth","select"],oC=k(rH);oC.enum;const lH=["started","succeeded","failed","cancelled"],rC=k(lH),MS=rC.enum,cH=["succeeded","partial","failed","skipped","cancelled"],lC=k(cH),uH=lC.enum,dH=["manual","scheduled","agent","startup","retry","push"],cC=k(dH);cC.enum;const mH=["AUTH_DENIED","OAUTH_CANCELLED","OAUTH_STATE_INVALID","INVALID_CREDENTIALS","PERMISSION_MISSING","NOT_CONNECTED","ALREADY_CONNECTED","NOT_FOUND","ACCOUNT_NOT_FOUND","PROPERTY_NOT_FOUND","QUOTA_EXCEEDED","RATE_LIMITED","BILLING","NETWORK","TIMEOUT","HTTP_4XX","HTTP_5XX","BLOCKED_UNSAFE_URL","VALIDATION","UNSUPPORTED","NO_DATA","NOT_DUE","GATE_REFUSED","OPERATION_IN_PROGRESS","QUARANTINED","CANCELLED_BY_USER","SERVER_RESTARTED","INTERNAL","UNKNOWN","PORT_IN_USE","MIGRATION_FAILED","UNCAUGHT_EXCEPTION","UNHANDLED_REJECTION"],Q1=k(mH);Q1.enum;const uC={search_console:["sync","inspect","sitemap_submit"],ga4:["sync"],bing:["sync","inspect"],gbp:["sync","reviews"],google_ads:["sync"],gtm:["sync"],openai_ads:["sync","operation","activation","reconcile"],server_traffic:["sync","ingest","backfill","reset"],backlinks:["install","sync","extract"],content:["analyze","brief"],research:["run"],discovery:["run"],sentiment:["run"],aero:["turn"],webhooks:["deliver","test"],schedules:["slot"],exports:["export"],providers:["reload"],wordpress:["schema_deploy","llms_txt","meta_write","publish"],measurement:["publish"],insights:["generate"],site_liveness:["check"],reports:["download"],data_refresh:["refresh"],server:["start","crash"]},pH=Object.keys(uC),dC=k(pH);dC.enum;const hH=["rows","pages","urls","links","domains","reviews","events","crawlerHits","aiReferralHits","aiUserFetchHits","campaigns","operations","queries","snapshots","briefs","gaps","targets","insights","toolCalls","toolErrors","modelCalls","inputTokens","outputTokens","cachedTokens","costMicros","attempts","deliveries","failures","skipped","providers","items","bytes"],fH=new Set(hH),mC=1e12,pC=m().int().min(0).max(mC),gH=Ke(s(),pC).refine(e=>Object.keys(e).length>0&&Object.keys(e).length<=12,"counts must have 1 to 12 keys").refine(e=>Object.keys(e).every(n=>fH.has(n)),"unknown count key"),yH=["first_party","slack","discord"],Z1=k(yH);Z1.enum;const bH=["2xx","3xx","4xx","5xx","timeout","network","blocked"],hC=k(bH);hC.enum;const vH=["under_1s","1s_to_10s","10s_to_1m","1m_to_5m","5m_to_30m","30m_or_more"],op=k(vH);op.enum;const fC=s().regex(/^[A-Z_$][\w$]{0,39}$/i),gC=s().regex(/^[a-z0-9][a-z0-9._-]{0,39}$/),Y1=k(xg),yC=s().regex(/^[A-Z0-9][\w.:/@-]{0,99}$/i).refine(e=>!e.includes("://"),"a model id is never a URL"),bC=s().regex(/^[a-z0-9][a-z0-9._-]{0,31}$/);d({integration:F1,provider:Y1.optional(),action:oC,status:rC,reasonCode:Q1.optional(),errorName:fC.optional(),target:Z1.optional(),surface:H1.optional(),agent:gC.optional(),durationBucket:op.optional(),attempt:m().int().min(1).max(1e6).optional(),first:E(!0).optional()}).strict().refine(e=>e.integration===sC.provider==(e.provider!==void 0),"provider is required for, and only for, integration provider").refine(e=>e.status===MS.succeeded||e.status===MS.started||e.reasonCode!==void 0,"a failed or cancelled attempt needs a reasonCode");d({feature:dC,operation:s().regex(/^[a-z][a-z_]{0,31}$/),status:lC,trigger:cC.optional(),surface:H1.optional(),agent:gC.optional(),reasonCode:Q1.optional(),errorName:fC.optional(),durationBucket:op.optional(),counts:gH.optional(),target:Z1.optional(),eventType:Mm.optional(),statusClass:hC.optional(),provider:Y1.optional(),model:yC.optional(),modelProvider:bC.optional(),sampleRate:m().int().min(1).max(1e6).optional(),droppedBefore:m().int().min(0).max(mC).optional(),domainHash:s().regex(/^[0-9a-f]{64}$/).optional(),first:E(!0).optional()}).strict().refine(e=>uC[e.feature].includes(e.operation),"operation is not one this feature reports").refine(e=>e.status===uH.succeeded||e.reasonCode!==void 0,"a non-succeeded outcome needs a reasonCode");const xH=["npm","homebrew","docker","source"],wH=k(xH),SH=s().regex(/^[a-z0-9][a-z0-9-]{0,31}$/),kH=["projects","queries","competitors","locations","schedules","webhooks","agentWebhooks","trafficSources","googleConnections","bingConnections","backlinkSources","adsAccounts"],jH=["sweeps","audits","providerCalls","inputTokens","outputTokens","costMicros","aeroTurns","aeroModelCalls","aeroInputTokens","aeroOutputTokens","aeroCostMicros","webhookDeliveries"],Wf=e=>{const n=new Set(e);return Ke(s(),pC).refine(i=>Object.keys(i).every(r=>n.has(r)),"unknown key")};d({providers:y(Y1).max(xg.length),integrations:y(F1.exclude([sC.provider])).max(iC.length),counts:Wf(kH),usage24h:Wf(jH),providerCalls24h:Wf(xg).optional(),agentProvider:bC.optional(),agentModel:yC.optional(),uptimeBucket:op.optional(),installSource:wH.optional(),installRef:SH.optional()}).strict();const vC=["/","/projects","/projects/:projectName","/projects/:projectName/portfolio","/projects/:projectName/search-console","/projects/:projectName/conversions","/projects/:projectName/local","/projects/:projectName/discovery","/projects/:projectName/queries","/projects/:projectName/properties/:targetKey","/projects/:projectName/report","/projects/:projectName/activity","/projects/:projectName/backlinks","/projects/:projectName/technical-aeo","/projects/:projectName/history","/projects/:projectName/settings","/runs","/history","/settings","/setup","/backlinks","/traffic","/traffic/:projectName/:sourceId","not-found","other"],AH=k(vC),xC=["overview","portfolio","search-console","conversions","local","discovery","queries","properties","report","activity","backlinks","technical-aeo","history","settings","other"],Bd=k(xC),NH=["sweep.launch","sweep.cancel","site_audit.launch","project.create","project.update","project.delete","query.add","query.delete","query.generate","competitor.save","competitor.delete","schedule.save","schedule.delete","provider.save","settings.save","integration.connect_started","integration.connect","integration.disconnect","traffic.sync","notification.save","notification.test","measurement_plan.publish","property_names.save","discovery.run","api_key.create","api_key.revoke","export.download","report.download","aero.open","aero.send","filter.change","search.submit"],CH=k(NH),_H=["google","gsc","ga","bing","gbp","wordpress","openai_ads","google_ads","gtm","traffic_cloudflare","traffic_vercel","traffic_cloud_run","traffic_wordpress"],TH=k(_H),EH=["provider","model","location","window","query_class","other"],RH=k(EH),DH=["csv","json","html"],zH=["render","unhandled","api"],IH=["4xx","5xx","network"],OH=["LCP","INP","CLS","FCP","TTFB"],PH=["good","needs-improvement","poor"],wC=/^[a-z][a-z0-9-]{0,39}$/,SC=/^[a-z_$][\w$]{0,39}$/i,qH=/^\/api\/v1(?:\/(?:[a-z][a-z0-9-]*(?:\.[a-z]+)?|\{[A-Za-z]+\}))*$/,kC=160,MH=new Set(["accounts","activation-grants","ad-groups","ads","cache","campaigns","competitors","confirm","connections","containers","contracts","conversations","dismissals","insights","jobs","keys","locations","measurement-query-sets","measurement-query-templates","notifications","operations","projects","providers","queries","recommendations","runs","screenshots","segments","sessions","snapshots","sources","users","versions"]),BH=new Set(["ads/account","ads/activation-grants","ads/ad-groups","ads/ads","ads/campaigns","ads/connect","ads/connection","ads/conversions","ads/delivery-diagnostics","ads/files","ads/geo","ads/insights","ads/live-delivery","ads/operations","ads/status","ads/summary","ads/sync","keys/self","locations/default","locations/discover","notifications/events","operations/logs","providers/reload","queries/generate","queries/replace-preview","runs/latest","snapshots/diff"]),LH=/^\{[a-z]+\}$/i;function jC(e){if(e.length>kC||e.includes("://")||!qH.test(e))return!1;const n=e.split("/").slice(3);return n.every((i,r)=>{const u=n[r-1];return u===void 0||!MH.has(u)?!0:LH.test(i)||BH.has(`${u}/${i}`)})}const Ld=d({eventId:s().uuid(),uiSessionId:s().uuid(),page:AH});Ue("event",[Ld.extend({event:E("ui.page_viewed"),tab:Bd.optional()}).strict(),Ld.extend({event:E("ui.action"),action:CH,tab:Bd.optional(),integration:TH.optional(),format:k(DH).optional(),filter:RH.optional()}).strict(),Ld.extend({event:E("ui.error"),kind:k(zH),tab:Bd.optional(),component:s().regex(wC).optional(),errorName:s().regex(SC).optional(),route:s().max(kC).refine(jC,"route must be a route template").optional(),method:k(["GET","POST","PUT","PATCH","DELETE"]).optional(),statusClass:k(IH).optional(),status:m().int().min(400).max(599).optional()}).strict(),Ld.extend({event:E("ui.vitals"),metric:k(OH),rating:k(PH),tab:Bd.optional()}).strict()]);function UH(e){if(!e)return"other";if(e==="*"||e==="$"||e.endsWith("/*")||e.endsWith("/$"))return"not-found";const n=e.replace(/\$([a-z]\w*)/gi,":$1").replace(/(.)\/+$/,"$1");return vC.includes(n)?n:"other"}function AC(e){if(e==="/projects/:projectName")return"overview";const n=/^\/projects\/:projectName\/([a-z-]+)/.exec(e);if(!n)return;const i=n[1];return xC.includes(i)?i:"other"}const VH=["struggle","bug","improvement","other"],$H=k(VH),Sc={summary:500,details:4e3,area:40,command:120,errorCode:40};d({kind:$H,summary:s().trim().min(1).max(Sc.summary),details:s().trim().min(1).max(Sc.details).optional(),area:s().trim().min(1).max(Sc.area).optional(),command:s().trim().min(1).max(Sc.command).optional(),errorCode:s().trim().min(1).max(Sc.errorCode).optional()}).strict();d({accepted:N(),id:s()});const KH=4;function GH(e){return e.length<KH}const NC=k(["trace","debug","info","warn","error","fatal"]),CC=d({runId:s().min(1).max(256).optional(),projectId:s().min(1).max(256).optional(),requestId:s().min(1).max(256).optional(),actor:s().min(1).max(512).optional(),credentialId:s().min(1).max(512).optional(),userAgent:s().min(1).max(512).optional(),actorSession:s().min(1).max(512).optional(),method:s().min(1).max(16).optional(),route:s().min(1).max(256).optional(),operationId:s().min(1).max(256).optional(),jobId:s().min(1).max(256).optional(),taskId:s().min(1).max(256).optional(),traceId:s().min(1).max(256).optional(),provider:s().min(1).max(256).optional(),errorCode:s().min(1).max(128).optional(),attempt:m().finite().optional(),count:m().finite().optional(),total:m().finite().optional(),progress:m().finite().optional(),httpStatus:m().finite().optional(),statusCode:m().finite().optional(),durationMs:m().finite().optional(),bytes:m().finite().optional(),retryAfterMs:m().finite().optional(),retriable:N().optional(),retrying:N().optional(),cancelled:N().optional(),success:N().optional()}).strict(),_C=d({cursor:s().min(1).max(512),ts:s().datetime(),level:NC,module:s().min(1).max(256),action:s().min(1).max(256),message:s().max(4096).optional(),runId:s().min(1).max(256).optional(),projectId:s().min(1).max(256).optional(),context:CC}).strict();d({level:NC.optional(),module:s().trim().min(1).max(256).optional(),runId:s().trim().min(1).max(256).optional(),projectId:s().trim().min(1).max(256).optional(),actor:s().trim().min(1).max(512).optional(),requestId:s().trim().min(1).max(256).optional(),since:s().datetime().optional(),until:s().datetime().optional(),limit:Ha().int().min(1).max(200).default(100),cursor:s().trim().min(1).max(512).optional()}).strict().superRefine((e,n)=>{e.since&&e.until&&Date.parse(e.since)>Date.parse(e.until)&&n.addIssue({code:fe.custom,path:["until"],message:'"until" must be on or after "since".'})});const TC=d({maxEntries:m().int().positive(),maxAgeSeconds:m().int().positive()}).strict(),HH=d({entries:y(_C),nextCursor:s().min(1).max(512).nullable(),truncated:m().int().nonnegative(),dropped:m().int().nonnegative(),retention:k(["process","durable"]),retentionPolicy:TC.optional(),captureErrors:m().int().nonnegative().optional(),observedAt:s().datetime()}).strict(),FH=d(CC.shape),QH=d({..._C.shape,context:FH});d({...HH.shape,entries:y(QH),retentionPolicy:d(TC.shape).optional()});function eg(e){return e!==""&&/^[\w./:@%+=,-]+$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}d({startDate:jn,endDate:jn,sourceId:s().trim().min(1).optional(),burstThreshold:m().int().min(1).max(1e6).optional(),ratioThreshold:m().min(1).max(1e3).optional(),limit:m().int().min(1).max(500).optional()}).strict();const yo=d({total:m().int().nonnegative(),paid:m().int().nonnegative(),organic:m().int().nonnegative(),unknown:m().int().nonnegative()});d({scope:d({project:s(),sourceId:s().nullable(),attribution:E("project-source-only"),unavailableDimensions:y(k(["property","target","market"]))}),window:d({startDate:jn,endDate:jn,timeZone:E("UTC")}),rule:d({version:E("hourly-normalized-path-v1"),burstThreshold:m().int().positive(),ratioThreshold:m().positive(),calibration:k(["uncalibrated-default","request-override"]),grouping:y(s()),confirmsAutomation:E(!1)}),totals:d({raw:yo,redirects:yo,subresources:yo,countable:yo,suspected:yo,adjustedEstimate:yo}),bursts:y(d({sourceId:s(),product:s(),landingPathNormalized:s(),tsHour:s(),counts:yo})),evidence:d({total:m().int().nonnegative(),returned:m().int().nonnegative(),truncated:N()}),comparison:d({status:E("unavailable"),serverCountable:m().int().nonnegative(),serverObservation:k(["missing","observed-zero","observed-positive"]),gaSessions:m().int().nonnegative().nullable(),gaObservation:k(["missing","observed-zero","observed-positive"]),observedRatio:m().nonnegative().nullable(),observedRatioAboveThreshold:N().nullable(),ratio:de(),reasons:y(s()),gaScope:E("project")}),caveats:y(s())});const ZH=new Set(["optional","nullable","default","prefault","readonly","catch","nonoptional"]),BS=64;function Xd(e){return e._zod.def}function bo(e,n){return e.clone({...Xd(e),...n})}function LS(e){if(e.length!==0){if(e.every(n=>typeof n=="string"))return s();if(e.every(n=>typeof n=="number"))return m();if(e.every(n=>typeof n=="boolean"))return N()}}function EC(e,n,i,r){if(r>BS)throw new Error(`tolerantReadSchema: schema nesting exceeds ${BS} levels`);const u=i.get(e);if(u)return u;const h=v=>EC(v,n,i,r+1),f=Xd(e);let b=e;if(f.type==="object"){const v=Object.fromEntries(Object.entries(e.shape).map(([j,C])=>[j,h(C)])),x=f.catchall,S=n.get(e)??(x&&Xd(x).type!=="never"?h(x):void 0);b=S?d(v).catchall(S):d(v)}else if(ZH.has(f.type)){const v=f.innerType,x=h(v);b=x===v?e:bo(e,{innerType:x})}else if(f.type==="array"){const v=f.element,x=h(v);b=x===v?e:bo(e,{element:x})}else if(f.type==="pipe"){const v=f.in,x=f.out,S=h(v),j=h(x);b=S===v&&j===x?e:bo(e,{in:S,out:j})}else if(f.type==="union"){const v=f.options,x=v.map(h);b=x.some((j,C)=>j!==v[C])?f.discriminator?Fe(x):bo(e,{options:x}):e}else if(f.type==="record"){const v=f.keyType,x=f.valueType,S=Xd(v).type==="enum"?s():v,j=h(x);b=S===v&&j===x?e:bo(e,{keyType:S,valueType:j})}else if(f.type==="intersection"){const v=f.left,x=f.right,S=h(v),j=h(x);b=S===v&&j===x?e:bo(e,{left:S,right:j})}else if(f.type==="tuple"){const v=f.items,x=f.rest,S=v.map(h),j=x&&h(x);b=j!==x||S.some((T,z)=>T!==v[z])?bo(e,{items:S,rest:j}):e}else if(f.type==="lazy"){const v=f.getter;b=tO(()=>h(v()))}else f.type==="enum"?b=LS(Object.values(f.entries))??e:f.type==="literal"&&(b=LS(f.values)??e);return i.set(e,b),b}function Ko(e,n={}){const i=new Map(n.openKeys??[]);return EC(e,i,new Map,0)}const Go={openKeys:[[z1,m().int().nonnegative()]]};Ko(D$,Go);Ko(Vg,Go);Ko(L$,Go);Ko(U$,Go);Ko(z$,Go);Ko(rN,Go);Ko(q$,Go);const YH=i2(tl.trafficAnalytics);Fe(YH.map(e=>E(e))).describe("Traffic activity window in days (7, 14, 30, or 90). Defaults to 30 when omitted.");const vo=d({current:m(),prior:m(),deltaPct:ot().nullable()}),XH=d({windowStart:s(),windowEnd:s(),coverageStart:s().nullable(),priorWindowComplete:N(),hasData:N().describe("True when the selected or prior window has stored crawler, user-fetch, countable referral or operator evidence, or the selected window has referral redirects. False means no qualifying stored evidence; it can occur with no, paused, errored or never-synced ingestion and out-of-window observations. It does not establish measured zero traffic or source health."),verifiedCrawlerHits:vo,unverifiedCrawlerHits:vo,aiUserFetchHits:vo,referralArrivals:vo,referralRedirects:m().int().nonnegative(),referralArrivalsByClass:d({paid:vo,organic:vo,unclassified:vo}),referralArrivalsClassSummary:s(),byOperator:y(d({operator:s(),verifiedHits:m(),unverifiedHits:m(),userFetchHits:m(),referralArrivals:m(),deltaPct:ot().nullable()})),topCrawledPaths:y(d({path:s(),verifiedHits:m(),unverifiedHits:m().default(0),distinctOperators:m()})),referralProducts:y(d({product:s(),arrivals:m(),distinctLandingPaths:m()})),dailyTrend:y(d({date:s(),verifiedCrawlerHits:m(),unverifiedCrawlerHits:m().default(0),userFetchHits:m(),referralArrivals:m()})),topReferralLandingPaths:y(d({path:s(),arrivals:m(),distinctProducts:m()}))});d({activity:XH.nullable()});const iie={ambiguous:"Property identity unverified"},sie="No answer could be tied to one property";function JH(e){return e.denominator===null||e.denominator===void 0||e.unattributed===void 0||e.unattributed<=0?null:`${e.unattributed} of ${e.denominator+e.unattributed} answers could not be tied to one property`}function WH(e){if(e.denominator===null||e.denominator===void 0||e.unchecked===void 0||e.unchecked<=0)return null;const n=e.denominator+e.unchecked;return`${e.unchecked} of ${n} ${n===1?"answer":"answers"} had sources that could not be checked`}const RC=d({name:s(),type:k(["string","boolean"]),multiple:N()}),eF=d({id:s(),path:y(s()).min(1),usage:s(),supportsDryRun:N(),windows:y(s()).optional(),options:y(RC),access:U3});d({version:s(),globalOptions:y(RC),groups:y(d({root:s(),section:s(),summary:s(),commands:y(eF)}))});const tF="canonry.onboarding-session.v1",vm="canonry.onboarding-launched-run.v1",X1="canonry.onboarding-handoff.v1",nF=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,aF=["system","project","queries","competitors","run"];function iF(e){return aF[e]??"system"}function sF(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 oF(e){return e.apiStatus.state!=="checking"&&e.workerStatus.state!=="checking"}const rF={NO_PROVIDER:"no_provider",NO_QUERIES:"no_queries",RATE_LIMITED:"rate_limited",QUOTA_EXCEEDED:"rate_limited",PROVIDER_AUTH:"provider_auth",PROVIDERS_FAILING:"provider_auth",AUTH_INVALID:"provider_auth",FORBIDDEN:"provider_auth",NETWORK:"network",CONNECTION_ERROR:"network",RUN_IN_PROGRESS:"run_rejected",RUN_CANCELLED:"run_cancelled"};function zc(e,n){const i=e&&typeof e=="object"&&"code"in e?String(e.code):"";return rF[i]??n}function J1(){return DC(tF)}function DC(e){try{const n=typeof window<"u"?window.sessionStorage.getItem(e):null;if(n&&nF.test(n))return n;const i=wm();return typeof window<"u"&&window.sessionStorage.setItem(e,i),i}catch{return wm()}}function W1(){return wm()}function zC(e){if(!e||typeof e!="object")return!1;const n=e;return typeof n.projectName=="string"&&n.projectName.length>0&&typeof n.runId=="string"&&n.runId.length>0&&typeof n.handled=="boolean"}function IC(e,n){try{typeof window<"u"&&window.sessionStorage.setItem(vm,JSON.stringify({projectName:e,runId:n,handled:!1}))}catch{}}function OC(e){if(!e)return null;try{if(typeof window>"u")return null;const n=window.sessionStorage.getItem(vm);if(!n)return null;const i=JSON.parse(n);return!zC(i)||i.projectName!==e||i.handled?null:i}catch{return null}}function xm(e){try{if(typeof window>"u")return;const n=window.sessionStorage.getItem(vm);if(!n)return;const i=JSON.parse(n);if(!zC(i)||i.runId!==e)return;window.sessionStorage.setItem(vm,JSON.stringify({...i,handled:!0}))}catch{}}function lF(e){try{typeof window<"u"&&window.sessionStorage.setItem(X1,e)}catch{}}function cF(e){if(!e)return!1;try{return typeof window<"u"&&window.sessionStorage.getItem(X1)===e}catch{return!1}}function uF(){try{typeof window<"u"&&window.sessionStorage.removeItem(X1)}catch{}}function wm(){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 i=[...n].map(r=>r.toString(16).padStart(2,"0")).join("");return`${i.slice(0,8)}-${i.slice(8,12)}-${i.slice(12,16)}-${i.slice(16,20)}-${i.slice(20)}`}const dF="canonry.ui-session.v1",mF="canonry.ui-pages.v1",pF="canonry.ui-errors.v1",US="canonry.ui-sent.v1",hF=30,fF=120,gF=200,Yt={sender:null,disabled:!1,page:"other",landingPage:null,pendingVitals:[],memory:new Map,sentAt:null,now:()=>Date.now()};function yF(e){Yt.sender=e.enabled===!1?null:e.send,Yt.disabled=!1,e.now&&(Yt.now=e.now)}function bF(e){const n=UH(e);if(Yt.page=n,Yt.landingPage===null){Yt.landingPage=n;const r=Yt.pendingVitals;Yt.pendingVitals=[];for(const[u,h]of r)PC(u,h)}const i=AC(n);qC(mF,`${n}|${i??""}`,{event:"ui.page_viewed"})}function Ho(e,n={}){ey({event:"ui.action",action:e,...n})}const vF=800,xF=1e3,tg=new Map;let kc,ng="";function wF(e){if(!Yt.sender)return;const n=tg.get(e);n&&clearTimeout(n),tg.set(e,setTimeout(()=>{tg.delete(e),Ho("filter.change",{filter:e})},vF))}function oie(e,n=!1){if(!Yt.sender)return;kc&&clearTimeout(kc),kc=void 0;const i=e.trim();if(i.length===0){ng="";return}const r=()=>{kc=void 0,i!==ng&&(ng=i,Ho("search.submit"))};n?r():kc=setTimeout(r,xF)}const SF={measurementProvider:"provider",measurementModel:"model",measurementLocation:"location",measurementFrom:"window",measurementTo:"window",runWindow:"window",queryClass:"query_class",class:"query_class",measurementScope:"other",measurementScopeKey:"other",measurementMarketKey:"other",scope:"other",runStatus:"other",runKind:"other",runProject:"other"};function kF(e,n){const i=new Set;for(const[r,u]of Object.entries(SF))jF(e[r],n[r])||i.add(u);for(const r of i)wF(r)}function jF(e,n){const i=r=>r==null||r===""?"":JSON.stringify(r);return i(e)===i(n)}function Sm(e){const n=PF(e.error),i=e.route&&jC(e.route)?e.route:void 0;if(e.kind==="api"&&!i)return;const r=BC(e.method),u=typeof e.status=="number"&&e.status>=400&&e.status<=599?e.status:void 0,h=e.network?"network":u===void 0?void 0:u>=500?"5xx":"4xx",f=e.component&&wC.test(e.component)?e.component:void 0,b=[e.kind,Yt.page,f,n,r,i,u??h].join("|");qC(pF,b,{event:"ui.error",kind:e.kind,...f?{component:f}:{},...n?{errorName:n}:{},...i?{route:i}:{},...r?{method:r}:{},...h?{statusClass:h}:{},...u?{status:u}:{}})}function AF(e,n){if(Yt.landingPage===null){Yt.pendingVitals.push([e,n]);return}PC(e,n)}function PC(e,n){const i=Yt.landingPage??"other";ey({event:"ui.vitals",metric:e,rating:n},i)}const NF=[["POST","/api/v1/projects/{name}/runs","sweep.launch"],["POST","/api/v1/runs/{id}/cancel","sweep.cancel"],["POST","/api/v1/projects/{name}/technical-aeo/runs","site_audit.launch"],["POST","/api/v1/projects","project.create"],["PUT","/api/v1/projects/{name}","project.create",void 0,201],["PUT","/api/v1/projects/{name}","project.update",void 0,200],["DELETE","/api/v1/projects/{name}","project.delete"],["POST","/api/v1/projects/{name}/queries","query.add"],["PUT","/api/v1/projects/{name}/queries","query.add"],["DELETE","/api/v1/projects/{name}/queries","query.delete"],["DELETE","/api/v1/projects/{name}/queries/{id}","query.delete"],["POST","/api/v1/projects/{name}/queries/generate","query.generate"],["PUT","/api/v1/projects/{name}/competitors","competitor.save"],["POST","/api/v1/projects/{name}/competitors","competitor.save"],["DELETE","/api/v1/projects/{name}/competitors/{id}","competitor.delete"],["PUT","/api/v1/projects/{name}/schedule","schedule.save"],["DELETE","/api/v1/projects/{name}/schedule","schedule.delete"],["PUT","/api/v1/settings/providers/{name}","provider.save"],["PUT","/api/v1/settings/google","settings.save"],["PUT","/api/v1/settings/bing","settings.save"],["PUT","/api/v1/settings/cdp","settings.save"],["PUT","/api/v1/projects/{name}/sentiment/settings","settings.save"],["POST","/api/v1/projects/{name}/google/connect","integration.connect_started","google"],["POST","/api/v1/projects/{name}/ga/connect","integration.connect","ga"],["DELETE","/api/v1/projects/{name}/ga/disconnect","integration.disconnect","ga"],["POST","/api/v1/projects/{name}/bing/connect","integration.connect","bing"],["DELETE","/api/v1/projects/{name}/bing/disconnect","integration.disconnect","bing"],["PUT","/api/v1/projects/{name}/gbp/locations/{locationName}/selection","integration.connect","gbp"],["DELETE","/api/v1/projects/{name}/gbp/connection","integration.disconnect","gbp"],["POST","/api/v1/projects/{name}/wordpress/connect","integration.connect","wordpress"],["DELETE","/api/v1/projects/{name}/wordpress/disconnect","integration.disconnect","wordpress"],["POST","/api/v1/projects/{name}/ads/connect","integration.connect","openai_ads"],["DELETE","/api/v1/projects/{name}/ads/connection","integration.disconnect","openai_ads"],["POST","/api/v1/projects/{name}/google-ads/oauth/connect","integration.connect_started","google_ads"],["PUT","/api/v1/projects/{name}/google-ads/selection","integration.connect","google_ads"],["DELETE","/api/v1/projects/{name}/google-ads/connection","integration.disconnect","google_ads"],["POST","/api/v1/projects/{name}/gtm/oauth/connect","integration.connect_started","gtm"],["PUT","/api/v1/projects/{name}/gtm/selection","integration.connect","gtm"],["DELETE","/api/v1/projects/{name}/gtm/connection","integration.disconnect","gtm"],["POST","/api/v1/projects/{name}/traffic/connect/cloudflare","integration.connect","traffic_cloudflare"],["POST","/api/v1/projects/{name}/traffic/connect/vercel","integration.connect","traffic_vercel"],["POST","/api/v1/projects/{name}/traffic/connect/cloud-run","integration.connect","traffic_cloud_run"],["POST","/api/v1/projects/{name}/traffic/connect/wordpress","integration.connect","traffic_wordpress"],["POST","/api/v1/projects/{name}/traffic/sources/{id}/sync","traffic.sync"],["POST","/api/v1/projects/{name}/notifications","notification.save"],["POST","/api/v1/projects/{name}/measurement-plan/draft/actions/publish","measurement_plan.publish"],["POST","/api/v1/projects/{name}/measurement-plan/draft/actions/upsert-target","property_names.save"],["POST","/api/v1/projects/{name}/discover/run","discovery.run"],["POST","/api/v1/keys","api_key.create"],["POST","/api/v1/keys/{id}/revoke","api_key.revoke"]],VS="/api/v1/projects/{name}/google/connections/{type}",CF={gsc:"gsc",ga4:"ga",gbp:"gbp"};function _F(e,n,i){const r=e==="PUT"&&n===`${VS}/property`?"integration.connect":e==="DELETE"&&n===VS?"integration.disconnect":void 0;if(!r)return;const u=i?/\/google\/connections\/([^/?#]+)/.exec(i)?.[1]:void 0,h=u&&CF[decodeURIComponent(u)]||"google";return[e,n,r,h]}const TF=[["GET",/^\/api\/v1\/projects\/\{name\}\/schedule$/,[404]],["*",/^\/api\/v1\/projects\/\{name\}\/measurement-plan(?:\/draft(?:\/.*)?)?$/,[404,409,412]],["GET",/^\/api\/v1\/projects\/\{name\}\/technical-aeo\/runs\/\{runId\}\/progress$/,[404]],["GET",/^\/api\/v1\/projects\/\{name\}\/backlinks\/domains$/,[404]],["POST",/^\/api\/v1\/projects$/,[409]],["PUT",/^\/api\/v1\/projects\/\{name\}$/,[409]]];function EF(e,n,i){return TF.some(([r,u,h])=>(r==="*"||r===e)&&u.test(n)&&h.includes(i))}const RF=/^\/api\/v1\/(?:telemetry|feedback)(?:\/|$)/;function km(e){if(!e.route||RF.test(e.route))return;const n=BC(e.method);if(e.network||typeof e.status=="number"&&e.status>=400){if(e.status===401||typeof e.status=="number"&&e.status<500&&EF(n,e.route,e.status))return;Sm({kind:"api",route:e.route,method:n,status:e.status,network:e.network});return}if(!n||n==="GET")return;const i=_F(n,e.route,e.path)??NF.find(([r,u,,,h])=>r===n&&u===e.route&&(h===void 0||h===e.status));i&&Ho(i[2],i[3]?{integration:i[3]}:{})}function qC(e,n,i){const r=zF(e);if(!r.has(n)&&ey(i)){r.add(n);try{window.sessionStorage.setItem(e,JSON.stringify([...r].slice(-gF)))}catch{}}}function ey(e,n){try{const i=Yt.sender;if(!i||Yt.disabled||!DF())return!1;const r=n??Yt.page,u=AC(r),h={...e,eventId:wm(),uiSessionId:DC(dF),page:r,...u?{tab:u}:{}};return i(h).then(f=>{f&&f.accepted===!1&&(Yt.disabled=!0)},()=>{}),!0}catch{return!1}}function DF(){const e=Yt.now(),n=(Yt.sentAt??=OF(US)).filter(i=>e-i<36e5&&i<=e);if(Yt.sentAt=n,n.length>=fF||n.filter(i=>e-i<6e4).length>=hF)return!1;n.push(e);try{window.sessionStorage.setItem(US,JSON.stringify(n))}catch{}return!0}function zF(e){let n=Yt.memory.get(e);return n||(n=new Set(IF(e)),Yt.memory.set(e,n)),n}function MC(e){try{const n=window.sessionStorage.getItem(e),i=n?JSON.parse(n):[];return Array.isArray(i)?i:[]}catch{return[]}}function IF(e){return MC(e).filter(n=>typeof n=="string")}function OF(e){return MC(e).filter(n=>typeof n=="number"&&Number.isFinite(n))}function PF(e){const n=e instanceof Error?e.name:e&&typeof e=="object"&&"name"in e?String(e.name):void 0;return n&&SC.test(n)?n:void 0}function BC(e){const n=e?.toUpperCase();return n==="GET"||n==="POST"||n==="PUT"||n==="PATCH"||n==="DELETE"?n:void 0}class yn extends Error{code;statusCode;details;constructor(n,i,r,u){super(n),this.name="ApiError",this.code=r??"UNKNOWN",this.statusCode=i,this.details=u}}function rie(e){if(e instanceof yn)return e.details;if(typeof e!="object"||e===null)return;const n=e.error,i=typeof n=="object"&&n!==null?n.details:e.details;return typeof i=="object"&&i!==null&&!Array.isArray(i)?i:void 0}function To(){if(typeof window>"u")return!1;const e=window.__CANONRY_CONFIG__?.demo;return e?.enabled===!0&&e.readOnly===!0&&e.sampleData===!0}function qF(){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 MF(){if(typeof window>"u")return;const e=window.__CANONRY_CONFIG__?.embed?.renderToken;return typeof e=="string"&&e.length>0?e:void 0}function LC(e){const n=MF();if(!n)return e;let i;const r=typeof window<"u"&&window.location?window.location.href:"http://localhost/";try{i=new URL(e,r)}catch{return e}const u=new URL(r).origin;if(i.origin!==u)return e;const f=`${lp().replace(/\/$/,"")}/api/v1`;return i.pathname!==f&&!i.pathname.startsWith(`${f}/`)?e:(i.searchParams.set("token",n),/^[a-z][a-z\d+.-]*:/i.test(e)?i.toString():`${i.pathname}${i.search}${i.hash}`)}function BF(e,n){const i={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&&(i.body=e.body,i.duplex="half"),new Request(n,i)}function UC(){if(typeof window>"u")return null;const e=window.__CANONRY_CONFIG__?.embed;return e?.enabled?e:null}function LF(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showResourceLinks!==!1}function UF(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showAgentBar!==!1}function VF(){return typeof window>"u"?!1:window.__CANONRY_CONFIG__?.agent?.allowViewers===!0}function ty(){return To()}function $F(){return typeof window>"u"?!0:window.__CANONRY_CONFIG__?.dashboard?.showUpdateNotification!==!1}function So(){return KF(Oe["answer-visibility"])}function KF(e){if(typeof window>"u")return!1;const n=window.__CANONRY_CONFIG__?.dashboard;return n?.managedRunKinds!==void 0?n.managedRunKinds.includes(e):e===Oe["answer-visibility"]&&n?.managedSweeps===!0}function GF(){if(typeof window>"u")return null;const e=window.__CANONRY_CONFIG__?.research;if(e?.allowViewers!==!0)return null;const n=e.viewerDailyRunLimit;return{allowViewers:!0,viewerDailyRunLimit:Number.isInteger(n)&&(n??0)>0?n:YK}}function $S(){return GF()?"Analyst":"View only"}function rp(){return UC()!==null}function HF(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,"")+"/api/v1":"/api/v1"}const VC=HF();function FF(){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 lp(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath.replace(/\/$/,""):""}function QF(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 ZF(e,n){if(e.protocol!=="http:"&&e.protocol!=="https:"||!QF(e.hostname))return;const i=e.port?`:${e.port}`:"",r=n?n.replace(/\/$/,""):"";return`${e.protocol}//localhost${i}${r}`}function lie(e){return`${e.replace(/\/$/,"")}/api/v1/google/callback`}function cie(e){return`${e.replace(/\/$/,"")}/api/v1/google-marketing/callback`}function YF(){if(!(typeof window>"u"))return ZF(window.location,lp())}function XF(e){return`${lp()}${e}`}function JF(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 WF(){return""}function eQ(){return!!WF()}let $C=null;function KS(e){$C=e}function ny(){$C?.()}const J=gR({baseUrl:FF()});J.interceptors.response.use((e,n)=>(e.status===401&&!n.url.includes("/api/v1/session")&&ny(),e));J.interceptors.request.use(e=>{const n=LC(e.url);return n===e.url?e:BF(e,n)});async function ye(e){const n=await e();if(n.error!==void 0&&n.error!==null){const i=n.response.status;let r=`API ${i}: ${n.response.statusText}`,u,h;if(typeof n.error=="object"&&n.error!==null){const f=n.error.error;if(typeof f=="string")r=f;else if(f&&typeof f=="object"){const b=f;b.message&&(r=b.message),b.code&&(u=b.code),b.details&&(h=b.details)}else{const b=n.error;b.message&&(r=b.message),b.code&&(u=b.code),b.details&&(h=b.details)}}else typeof n.error=="string"&&(r=n.error);throw new yn(r,i,u,h)}if(n.response.status!==204)return n.data}async function Ks(e,n){const i=n?.body!=null,r=await fetch(LC(`${VC}${e}`),{...n,credentials:n?.credentials??"same-origin",headers:{...i?{"Content-Type":"application/json"}:{},...n?.headers}});if(!r.ok){const u=await r.text();let h=`API ${r.status}: ${r.statusText}`,f,b;if(u)try{const v=JSON.parse(u);typeof v.error=="string"?h=v.error:v.error?.message?(h=v.error.message,f=v.error.code,b=v.error.details):v.message&&(h=v.message)}catch{h=u}throw r.status===401&&!e.startsWith("/session")&&!e.startsWith("/auth/")&&ny(),new yn(h,r.status,f,b)}if(r.status!==204)return r.json()}function tQ(e){return ye(()=>fj({client:J,path:{name:e}}))}function uie(e){return ye(()=>bj({client:J,path:{name:e}}))}function Gg(e){return ye(()=>vj({client:J,path:{id:e}}))}function KC(e){return ye(()=>yj({client:J,path:{name:e}}))}function nQ(e,n,i){return ye(()=>HT({client:J,path:{name:e},query:{location:n,limit:i}}))}function GC(e,n){return ye(()=>C8({client:J,path:{name:e},query:{location:n?.location,since:n?.since}}))}function HC(e,n){return ye(()=>nT({client:J,path:{name:e},body:n}))}function aQ(e){return ye(()=>eT({client:J,body:e}))}function iQ(e,n){return ye(()=>zT({client:J,path:{name:e},body:{queries:n}}))}function sQ(e,n){return ye(()=>DT({client:J,path:{name:e},body:{queries:n}}))}function die(e,n){return ye(()=>RT({client:J,path:{name:e},body:{queries:n}}))}function oQ(e,n,i){return ye(()=>PT({client:J,path:{name:e},body:{competitors:n}}))}function mie(e,n,i){return ye(()=>OT({client:J,path:{name:e},body:{competitors:n,...i?.acknowledgeBulkAdd!==void 0?{acknowledgeBulkAdd:i.acknowledgeBulkAdd}:{}}}))}function pie(e,n){return ye(()=>qT({client:J,path:{name:e,id:n}}))}async function hie(e,n){const i=await tQ(e);return HC(e,{displayName:n.displayName??i.displayName??i.name,canonicalDomain:n.canonicalDomain??i.canonicalDomain,ownedDomains:n.ownedDomains??i.ownedDomains,aliases:n.aliases??i.aliases,country:n.country??i.country,language:n.language??i.language,tags:i.tags,labels:i.labels,providers:n.providers??i.providers,providerModels:n.providerModels??i.providerModels??{},locations:n.locations??i.locations,defaultLocation:n.defaultLocation!==void 0?n.defaultLocation:i.defaultLocation,autoExtractBacklinks:i.autoExtractBacklinks,...n.siteAuditMaxPages!==void 0?{siteAuditMaxPages:n.siteAuditMaxPages}:{}})}function rQ(e,n){const i={};return n?.location&&(i.location=n.location),n?.allLocations&&(i.allLocations=!0),n?.noLocation&&(i.noLocation=!0),ye(()=>BT({client:J,path:{name:e},body:i}))}function fie(e,n){return ye(()=>_T({client:J,path:{name:e},body:n}))}async function gie(e,n){await ye(()=>TT({client:J,path:{name:e,label:n}}))}function yie(e,n){return ye(()=>ET({client:J,path:{name:e},body:{label:n}}))}async function bie(e){await ye(()=>tT({client:J,path:{name:e}}))}function vie(){return ye(()=>xj({client:J}))}function GS(){return Ks("/session")}function lQ(e,n){return Ks("/session/setup",{method:"POST",body:JSON.stringify({password:e}),...n?{headers:{Authorization:`Bearer ${n}`}}:{}})}function cQ(e){return Ks("/session",{method:"POST",body:JSON.stringify({password:e})})}function uQ(e){return Ks("/session",{method:"POST",body:JSON.stringify({apiKey:e})})}function dQ(){return Ks("/session",{method:"DELETE"})}function ag(){return ye(()=>XT({client:J}))}function HS(){return Ks("/auth/session")}function mQ(e,n){return Ks("/auth/login",{method:"POST",body:JSON.stringify({name:e,password:n})})}function FS(){return Ks("/auth/logout",{method:"POST"})}function FC(e,n){return ye(()=>ZT({client:J,path:{name:e},body:n}))}async function ay(e){for(let n=0;n<2;n+=1)try{await ye(()=>uE({client:J,body:e}));return}catch(i){if(!(!(i instanceof yn)||i.statusCode>=500)||n===1)return}}function xie(e){return ye(()=>YT({client:J,body:e}))}function wie(e,n){return ye(()=>nE({client:J,path:{name:e},body:n}))}async function Sie(e,n){await ye(()=>eE({client:J,path:{name:e},query:n===void 0?void 0:{expectedUpdatedAt:n}}))}function kie(e){return ye(()=>iE({client:J,path:{name:e}}))}function jie(e,n){return ye(()=>sE({client:J,path:{name:e},body:n}))}async function Aie(e,n){await ye(()=>oE({client:J,path:{name:e,id:n}}))}async function Nie(e,n){const i=await ye(()=>rE({client:J,path:{name:e,id:n}}));return i.ok&&Ho("notification.test"),i}function pQ(e,n,i){return ye(()=>IT({client:J,path:{name:e},body:{provider:n,count:i}}))}function hQ(e){return ye(()=>$T({client:J,body:e}))}function fQ(e){return ye(()=>VT({client:J,body:e??{}}))}function Cie(e,n){const i=YF();return ye(()=>IE({client:J,path:{name:e},body:{type:n,...i?{publicUrl:i}:{}}}))}function _ie(e,n){return ye(()=>OE({client:J,path:{name:e,type:n}}))}function Tie(e,n,i){return ye(()=>qE({client:J,path:{name:e,type:n},body:{propertyId:i}}))}function Eie(e,n,i){return ye(()=>ME({client:J,path:{name:e,type:n},body:{sitemapUrl:i}}))}function gQ(e,n){return ye(()=>BE({client:J,path:{name:e},body:n??{}}))}function Rie(e,n){const i={};return n&&n!=="all"&&(i.window=n),ye(()=>FT({client:J,path:{name:e},query:i}))}function Die(e,n){return ye(()=>VE({client:J,path:{name:e},body:{url:n}}))}function yQ(e,n){return ye(()=>QE({client:J,path:{name:e},body:n??{}}))}function zie(e,n){return ye(()=>FE({client:J,path:{name:e},query:n?{sitemapIndex:n}:void 0}))}function Iie(e,n){return ye(()=>J6({client:J,path:{name:e},body:{sitemapUrls:n}}))}function bQ(e,n){return ye(()=>lR({client:J,path:{name:e},body:n??{}}))}function Oie(e,n){return ye(()=>Z8({client:J,path:{name:e},body:n??{}}))}function Pie(){return ye(()=>wj({client:J}))}function qie(e,n){return ye(()=>WT({client:J,body:{host:e,port:n}}))}function Mie(e,n){return ye(()=>ZE({client:J,path:{name:e},body:n}))}function Bie(e,n){return ye(()=>i8({client:J,path:{name:e},body:{apiKey:n}}))}function Lie(e){return ye(()=>s8({client:J,path:{name:e}}))}function Uie(e,n){return ye(()=>l8({client:J,path:{name:e},body:{siteUrl:n}}))}function Vie(e,n){return ye(()=>d8({client:J,path:{name:e},body:{url:n}}))}function $ie(e,n){return ye(()=>m8({client:J,path:{name:e},body:{}}))}function Kie(e,n){return ye(()=>p8({client:J,path:{name:e},body:n}))}function Gie(e){return ye(()=>JT({client:J,body:{apiKey:e}}))}function vQ(e){return e?/filename\s*=\s*"?([^";]+)"?/i.exec(e)?.[1]??null:null}async function Hie(e,n){const i=await fetch(`${VC}/projects/${encodeURIComponent(e)}/results/export?format=${n}`,{credentials:"same-origin",headers:{}});if(!i.ok)throw km({method:"GET",route:"/api/v1/projects/{name}/results/export",status:i.status}),new yn(`Failed to download results: ${i.status}`,i.status);Ho("export.download",{format:n});const r=await i.blob(),u=URL.createObjectURL(r),h=vQ(i.headers.get("Content-Disposition"))??`canonry-results-${e}.${n}`,f=document.createElement("a");f.href=u,f.download=h,document.body.appendChild(f),f.click(),document.body.removeChild(f),URL.revokeObjectURL(u)}function Fie(e,n){return ye(()=>v8({client:J,path:{name:e},body:{}}))}function Qie(e,n){return ye(()=>f8({client:J,path:{name:e},body:n}))}function Zie(e){return ye(()=>g8({client:J,path:{name:e}}))}function Yie(e,n){return ye(()=>L8({client:J,path:{name:e},body:n}))}function Xie(e,n){return ye(()=>U8({client:J,path:{name:e},body:n}))}function Jie(e,n){return ye(()=>V8({client:J,path:{name:e},body:n}))}function Wie(e,n,i){return ye(()=>$8({client:J,path:{name:e,id:n},body:i??{}}))}function ese(e,n,i){return ye(()=>K8({client:J,path:{name:e,id:n},body:{}}))}function tse(e,n){return ye(()=>j8({client:J,path:{name:e},query:{runId:n}}))}function xQ(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 wQ(e,n){const i=XF(e);try{const r=await fetch(i,{credentials:"same-origin"});if(!r.ok)return{label:n,state:"error",detail:`${n} ${r.status}: ${r.statusText}`,statusCode:r.status,hint:JF(e,r.status)};const u=await r.json(),h=typeof u.version=="string"?u.version:"unknown",f=typeof u.databaseUrlConfigured=="boolean"?u.databaseUrlConfigured:void 0,b=typeof u.lastHeartbeatAt=="string"?u.lastHeartbeatAt:void 0,v=xQ(u.updateAvailable),x=tH.safeParse(u.mcp),S=[h,f===!1?"database not configured":"database configured",b?`heartbeat ${b}`:void 0].filter(Boolean).join(" · ");return{label:n,state:"ok",detail:S,version:h,databaseConfigured:f,lastHeartbeatAt:b,...v?{updateAvailable:v}:{},...x.success?{mcp:x.data}:{}}}catch(r){return{label:n,state:"error",detail:r instanceof Error?r.message:"unreachable",hint:e==="/health"?`Request failed while checking ${i}. If this instance is served behind a sub-path, verify the dashboard basePath and reverse-proxy rewrites.`:void 0}}}function nse(){return ye(()=>_8({client:J}))}function ase(){return ye(()=>T8({client:J}))}function ise(){return ye(()=>D8({client:J}))}function sse(){return ye(()=>E8({client:J}))}function ose(e){return ye(()=>R8({client:J,body:e?{release:e}:{}}))}function rse(){return ye(()=>z8({client:J}))}function lse(){return ye(()=>I8({client:J}))}function cse(e){return ye(()=>O8({client:J,path:{release:e}}))}function use(e,n={}){return ye(()=>q8({client:J,path:{name:e},query:{release:n.release,excludeCrawlers:n.excludeCrawlers?"1":void 0,source:n.source}}))}function dse(e,n={}){return ye(()=>M8({client:J,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 mse(e,n={}){return ye(()=>B8({client:J,path:{name:e},query:{source:n.source}}))}function pse(e,n){return ye(()=>P8({client:J,path:{name:e},body:{release:void 0}}))}async function QS(e,n){return ye(()=>dR({client:J,path:{name:e},query:n}))}async function SQ(e,n){return ye(()=>mR({client:J,path:{name:e},body:{id:n}}))}async function kQ(e,n){return ye(()=>hR({client:J,path:{name:e,id:n}}))}async function jQ(e,n){return ye(()=>pR({client:J,path:{name:e,id:n}}))}async function AQ(e,n){const i=f=>ye(()=>uT({client:J,path:{name:e},query:{...n,include:["assessments","locations"],queryLimit:sN,queryCursor:f}})),r=await i(),u=[...r.queries];let h=r.queryPage?.nextCursor??null;for(;h;){const f=await i(h);u.push(...f.queries),h=f.queryPage?.nextCursor??null}return{...r,queries:u,...r.queryPage?{queryPage:{...r.queryPage,nextCursor:null}}:{}}}function Jd(e){return ye(()=>lT({client:J,path:{name:e}}))}function NQ(e,n){return ye(()=>cT({client:J,path:{name:e},body:n}))}function CQ(e,n,i){return ye(()=>dT({client:J,path:{name:e},query:{...n,cursor:i,limit:50}}))}function _Q(e,n){return ye(()=>mT({client:J,path:{name:e},query:n}))}function TQ(e,n,i){return ye(()=>pT({client:J,path:{name:e},body:{previewToken:n,idempotencyKey:i}}))}function EQ(e){return ye(()=>hT({client:J,path:{name:e}}))}function RQ(e,n,i){return ye(()=>fT({client:J,path:{name:e,jobId:n},query:{attemptCursor:i}}))}const QC={account:null,canWrite:!0,isAdmin:!0},DQ={account:null,canWrite:!1,isAdmin:!1};function zQ(e){const n=e.scopes.includes(PS);return{account:null,canWrite:!e.readOnly&&n,isAdmin:e.projectId===null&&e.scopes.includes(PS)}}const ZC=_.createContext(QC);function IQ({account:e,apiKey:n,apiKeyPending:i=!1,children:r}){const u=i?DQ:n?zQ(n):e?{account:e,canWrite:e.role==="admin",isAdmin:e.role==="admin"}:QC;return l.jsx(ZC.Provider,{value:u,children:r})}function ga(){return _.useContext(ZC)}const YC="View only — your account cannot change this.";function gn(e){return(...n)=>{e(...n)}}const OQ=6e3,PQ=5,qQ=180;let qn=[],MQ=0;const Hg=new Set,Fg=new Map,Qg=new Map;function jm(){const e=[...qn];for(const n of Hg)n(e)}function iy(e){const n=Fg.get(e);n&&(clearTimeout(n),Fg.delete(e));const i=Qg.get(e);i&&(clearTimeout(i),Qg.delete(e))}function XC(e){iy(e);const n=qn.length;qn=qn.filter(i=>i.id!==e),qn.length!==n&&jm()}function ZS(e){iy(e.id),Fg.set(e.id,setTimeout(()=>{Zg(e.id)},e.durationMs))}function BQ(e,n,i){return typeof e=="string"?{title:e,tone:n,durationMs:i}:e}function vn(e,n="negative",i=OQ){const r=BQ(e,n,i),u={id:String(++MQ),title:r.title,detail:r.detail,tone:r.tone??n,durationMs:r.durationMs??i,dedupeKey:r.dedupeKey,cta:r.cta,state:"open"};if(r.dedupeKey){const h=qn.find(f=>f.dedupeKey===r.dedupeKey);if(h){if((r.dedupeMode??"drop")==="drop")return h.id;const f={...h,title:u.title,detail:u.detail,tone:u.tone,durationMs:u.durationMs,cta:u.cta,state:"open"};return qn=qn.map(b=>b.id===h.id?f:b),jm(),ZS(f),h.id}}return qn.length>=PQ&&XC(qn[0].id),qn=[...qn,u],jm(),ZS(u),u.id}function Zg(e){const n=qn.find(i=>i.id===e);!n||n.state==="closing"||(iy(e),qn=qn.map(i=>i.id===e?{...i,state:"closing"}:i),jm(),Qg.set(e,setTimeout(()=>{XC(e)},qQ)))}function LQ(e){return Hg.add(e),()=>{Hg.delete(e)}}function YS(){return qn}const Yg={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",visibilityReport:"getApiV1ProjectsByNameVisibilityReport",queryTracking:"getApiV1ProjectsByNameQueryTracking",technicalAeo:"getApiV1ProjectsByNameTechnicalAeo",runs:"getApiV1ProjectsByNameRuns",runAdmission:"getApiV1ProjectsByNameRunAdmission"};function Pn(e,n){const i=Yg[n];return e.invalidateQueries({predicate:r=>{const u=r.queryKey[0];return typeof u?._id=="string"&&u._id.startsWith(i)}})}function hse(e,n){return e.invalidateQueries({predicate:i=>{const r=i.queryKey[0];return r?.path?.name!==n||typeof r._id!="string"?!1:r._id.startsWith("getApiV1ProjectsByNameMeasurement")||r._id===Yg.queryTracking||r._id===Yg.visibilityReport||r._id==="getApiV1ProjectsByNameQueries"||r._id==="getApiV1ProjectsByName"}})}const UQ=new Set(["getApiV1Projects","getApiV1Runs","getApiV1History","getApiV1NotificationsEvents"]);function VQ(e,n,i){if(!["POST","PUT","PATCH","DELETE"].includes(n.method))return;const u=new URL(n.url).pathname.match(/\/api\/v1\/(.*)$/)?.[1];if(!u||/^(?:telemetry|feedback|auth|session)(?:\/|$)/.test(u))return;const h=u.match(/^projects\/([^/]+)(?:\/(.*))?$/),f=h?h[2]??"":u;if(n.method==="POST"&&/(?:^|\/)(?:[^/]*-preview|preview(?:-[^/]+)?|test|generate)$/.test(f))return;const b=i&&typeof i=="object"?i:null;if(b?.dryRun===!0||u.endsWith("/results/clear")&&b?.confirm!==!0)return;const v=h?decodeURIComponent(h[1]):null,x=h?.[2]?.startsWith("agent/")??!1,S=new Set(v?[v]:[]),j=new Set;if(v)for(const P of e.getQueryCache().getAll()){const M=P.queryKey[0],L=P.state.data,$=M?._id==="getApiV1Projects"&&Array.isArray(L)?L:L&&typeof L=="object"&&"project"in L?[L.project]:M?._id==="getApiV1ProjectsByName"?[L]:[];for(const Q of $)Q&&(Q.name===v||Q.id===v)&&(S.add(Q.name),S.add(Q.id),j.add(Q.id))}const C=P=>{const M=P.queryKey[0];if(x)return M?.path?.name===v&&M._id?.startsWith("getApiV1ProjectsByNameAgent")===!0||P.queryKey[0]==="aero-preview"&&P.queryKey[1]===v;if(M?._id?.startsWith("getApiV1ProjectsByName")&&M.path?.name&&S.has(M.path.name))return!0;const L=P.queryKey[0];if(["projects","project-dashboard-full","project-overview-slim"].includes(L))return j.has(P.queryKey[1]);if(["sentiment","gbp-section-insights","analytics-metrics","aero-preview"].includes(L))return L==="analytics-metrics"&&h?.[2]?.startsWith("competitors")?!1:S.has(P.queryKey[1]);if(L==="setup")return S.has(P.queryKey[2]);const $=P.state.data;return M?._id==="getApiV1RunsById"&&!!$?.projectId&&j.has($.projectId)},T=P=>UQ.has(P.queryKey[0]?._id??""),z=n.method==="POST"&&/^(?:runs|technical-aeo\/runs|discover\/run|backlinks\/extract|google\/gsc\/(?:sync|inspect-sitemap)|bing\/inspect-sitemap|(?:gbp|ads|google-ads|gtm)\/sync)$/.test(f),q=P=>{const M=P.queryKey[0];return T(P)||["getApiV1ProjectsByName","getApiV1ProjectsByNameOverview","getApiV1ProjectsByNameRuns","getApiV1ProjectsByNameTechnicalAeoRuns","getApiV1ProjectsByNameTimeline"].includes(M?._id??"")||P.queryKey[0]==="project-dashboard-full"&&P.queryKey[3]==="overview"||P.queryKey[0]==="project-overview-slim"},R=v?P=>C(P)&&(!z||q(P))||!x&&T(P):P=>!z||q(P);if(e.cancelQueries({predicate:R,type:"active"}),h&&!h[2]&&n.method==="DELETE"){e.removeQueries({predicate:C}),e.setQueriesData({predicate:P=>P.queryKey[0]?._id==="getApiV1Projects"},P=>P?.filter(M=>!S.has(M.name)&&!S.has(M.id))),e.setQueriesData({predicate:P=>P.queryKey[0]?._id==="getApiV1Runs"},P=>P?.filter(M=>!j.has(M.projectId))),e.invalidateQueries({predicate:T});return}e.invalidateQueries({predicate:R})}const $Q=5*6e4,Wd=30*6e4,fse=3e4,gse=6e4,Es=3e4,KQ=2e3,GQ=3e4;let XS;function HQ(){const e=new W_({defaultOptions:{queries:{staleTime:$Q,retry:1,refetchOnWindowFocus:!1}},mutationCache:new e6({onError:(u,h,f,b)=>{b.meta?.skipGlobalErrorToast||vn({title:u instanceof Error?u.message:"An unexpected error occurred",tone:"negative"})}})});XS?.();const n=new WeakSet,i=J.interceptors.request.use(u=>(n.add(u),u)),r=J.interceptors.response.use((u,h,f)=>(u.ok&&n.has(h)&&VQ(e,h,f.body),u));return XS=()=>{J.interceptors.request.eject(i),J.interceptors.response.eject(r)},e}const FQ="modulepreload",QQ=function(e,n){return new URL(e,n).href},JS={},Zi=function(n,i,r){let u=Promise.resolve();if(i&&i.length>0){let x=function(S){return Promise.all(S.map(j=>Promise.resolve(j).then(C=>({status:"fulfilled",value:C}),C=>({status:"rejected",reason:C}))))};const f=document.getElementsByTagName("link"),b=document.querySelector("meta[property=csp-nonce]"),v=b?.nonce||b?.getAttribute("nonce");u=x(i.map(S=>{if(S=QQ(S,r),S in JS)return;JS[S]=!0;const j=S.endsWith(".css"),C=j?'[rel="stylesheet"]':"";if(r)for(let z=f.length-1;z>=0;z--){const q=f[z];if(q.href===S&&(!j||q.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${S}"]${C}`))return;const T=document.createElement("link");if(T.rel=j?"stylesheet":FQ,j||(T.as="script"),T.crossOrigin="",T.href=S,v&&T.setAttribute("nonce",v),document.head.appendChild(T),j)return new Promise((z,q)=>{T.addEventListener("load",z),T.addEventListener("error",()=>q(new Error(`Unable to preload CSS for ${S}`)))})}))}function h(f){const b=new Event("vite:preloadError",{cancelable:!0});if(b.payload=f,window.dispatchEvent(b),!b.defaultPrevented)throw f}return u.then(f=>{for(const b of f||[])b.status==="rejected"&&h(b.reason);return n().catch(h)})},sy=_.createContext({view:null,publish:()=>()=>{}});function ZQ({children:e}){const[n,i]=_.useState(null),r=_.useCallback(u=>(i(u),()=>i(h=>h===u?null:h)),[]);return l.jsx(sy.Provider,{value:_.useMemo(()=>({view:n,publish:r}),[n,r]),children:e})}function yse(e,n){const{publish:i}=_.useContext(sy),r=JSON.stringify(n);_.useEffect(()=>i({project:e,context:JSON.parse(r)}),[i,e,r])}function YQ(e,n){const{view:i}=_.useContext(sy);return i?.project===e&&i.context.view===n.view?i.context:n}var XQ=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(XQ||{});const bse={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},vse={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},JQ=F0;function xse(e){return e.endsWith("%")?{figure:e.slice(0,-1),sign:"%"}:{figure:e,sign:""}}function wse(e,n){return n==="cited"?WH(e):JH(e)}function Sse(e,n){const i=Lc(e);switch(n){case"cited":return`${i} cited (any page)`;case"emerging":return`${i} newly cited (any page)`;case"lost":return`${i} citation lost (any page)`;case"not-cited":return`${i} not cited (any page)`;case"pending":return"Pending"}}function WQ(e){const n=[];if(e.message&&n.push(e.message),e.providers)for(const[i,r]of Object.entries(e.providers)){const u=`[${i}] ${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
 
@@ -83,4 +83,4 @@ spec:
83
83
  `);Rn(Xe),Qs(!0)}}catch(H){gl(H instanceof Error?H.message:"Failed to generate queries"),M({flowVersion:ft,onboardingSessionId:R,event:"onboarding.blocked",step:"queries",action:"generate_queries",reasonCode:zc(H,"unknown")},"onboarding.blocked:queries:generate")}finally{hl(!1)}}},Nl=async()=>{if(!Ne)return;const H=xi;if(H.length!==0){Xa(!0),xl(null);try{await oQ(Ne,H),es(!0),await r(),M({flowVersion:ft,onboardingSessionId:R,event:"onboarding.step_completed",step:"competitors",method:"manual",countBucket:li(H.length)},"onboarding.step_completed:competitors"),W(4)}catch(Xe){xl(Xe instanceof Error?Xe.message:"Failed to save competitors"),M({flowVersion:ft,onboardingSessionId:R,event:"onboarding.blocked",step:"competitors",action:"save",reasonCode:"unknown"},"onboarding.blocked:competitors:save")}finally{Xa(!1)}}},Cl=async()=>{const H=ns.trim();if(H){er(!0),tr(null);try{await FC("gemini",{apiKey:H}),vn({title:"Gemini configured",detail:"Provider is ready — continuing setup.",tone:"positive",dedupeKey:"setup:gemini:configured",dedupeMode:"drop"}),wu(""),await r(),yi(v.providerStatuses.find(Xe=>Xe.name.toLowerCase()==="gemini")?.name??"gemini"),M({flowVersion:ft,onboardingSessionId:R,event:"onboarding.step_completed",step:"system",method:"inline"},"onboarding.step_completed:system")}catch(Xe){tr(Xe instanceof Error?Xe.message:"Failed to save Gemini key"),M({flowVersion:ft,onboardingSessionId:R,event:"onboarding.blocked",step:"system",action:"configure_provider",reasonCode:"provider_save_failed"},"onboarding.blocked:system:provider_save_failed")}finally{er(!1)}}},wi=async()=>{if(!So()){if(!Ne||ei){In(ei??"Complete setup before launching the first sweep.");const H=va??(Ne?ba===0?"no_queries":"run_rejected":"unknown");qa||M({flowVersion:ft,onboardingSessionId:R,event:"run.requested",origin:"dashboard_setup",result:"rejected",providerCountBucket:li(kt),queryCountBucket:li(ba),reasonCode:H});return}Js(!0),In(null);try{const H=await jl.mutateAsync({projectName:Ne,projectLabel:xe||Se||Ne,sourceAction:"setup-launch"});Sp(H.id),wp(!0),IC(Ne,H.id),kl.current=H.id,qa||M({flowVersion:ft,onboardingSessionId:R,event:"run.requested",origin:"dashboard_setup",result:"queued",providerCountBucket:li(kt),queryCountBucket:li(ba)}),await r()}catch(H){In(H instanceof Error?H.message:"Failed to queue the visibility sweep. Retry when the instance is ready."),qa||M({flowVersion:ft,onboardingSessionId:R,event:"run.requested",origin:"dashboard_setup",result:"rejected",providerCountBucket:li(kt),queryCountBucket:li(ba),reasonCode:zc(H,"run_rejected")})}finally{Js(!1)}}},Bn=()=>W(H=>T?2:Math.max(0,H-1)),ir=(H,Xe,Si)=>{M({flowVersion:ft,onboardingSessionId:R,event:"onboarding.step_completed",step:H,method:"existing",...Si===void 0?{}:{countBucket:li(Si)}},`onboarding.step_completed:${H}`),W(Xe)},_l=()=>{if(M({flowVersion:ft,onboardingSessionId:R,event:"onboarding.step_completed",step:"queries",method:"skipped",countBucket:"0"},"onboarding.step_completed:queries"),T){Ft();return}W(3)},Tl=()=>{M({flowVersion:ft,onboardingSessionId:R,event:"onboarding.step_completed",step:"competitors",method:"skipped",countBucket:"0"},"onboarding.step_completed:competitors"),W(4)},Ws=T?"section":Ta,xa=et!==!0||Ot===!0?l.jsx(le,{type:"button",variant:"ghost",size:"sm",className:"min-h-11",onClick:()=>{r(),Zs&&Je.refetch()},children:"Check again"}):null,El=(et===!1||ya)&&!!aa,eo=T&&(B===2||B===4)?x?l.jsxs("section",{"aria-labelledby":"setup-provider-heading",className:"space-y-3 border-b border-default pb-6 mb-6",children:[l.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[l.jsx("h2",{id:"setup-provider-heading",className:"text-lg font-semibold text-heading",children:et===!1?"Connect a provider":"Answer engine provider"}),l.jsx(Sn,{tone:et===!0?"positive":"neutral",children:et===!0?"Configured":et===!1?"Not connected":"Checking"})]}),l.jsx("p",{className:"max-w-prose text-sm text-secondary",children:et===!0?Et.length>0?`${Et.map(H=>H.displayName??H.name).join(", ")} available for this project. Research and sweeps use your provider account.`:"ChatGPT in Chrome is configured for sweeps. Query Research needs an API provider.":et===!1?"An answer engine is required for visibility sweeps. You can save queries now and connect later.":"Checking available providers. You can choose queries while this finishes."}),et===!1||ya?aa?l.jsx("div",{children:l.jsx(cte,{compact:!0,leadingField:l.jsxs("div",{className:"min-w-0 space-y-1.5",children:[l.jsx("label",{className:"block text-sm font-medium text-secondary",htmlFor:"setup-provider",children:"Provider to connect"}),l.jsx("select",{ref:vu,id:"setup-provider",className:"setup-input",value:aa.name,onChange:H=>{H.target.value!==aa.name&&(Xo.current=document.activeElement===H.currentTarget,bl(H.target.value))},children:Wo.map(H=>l.jsx("option",{value:H.name,children:H.displayName??H.name},H.name))})]}),secondaryActions:xa,providerName:aa.name,keyUrl:aa.keyUrl,modelHint:aa.modelHint,onSaved:()=>{ln(!1),r()}},aa.name)}):l.jsx("p",{className:"max-w-prose text-sm text-secondary",children:xn.length>0?`This project's provider selection is ${xn.join(", ")}. Configure an allowed provider in Settings, or change the selection in project Settings.`:"Provider configuration is unavailable here. Open Settings to connect an answer engine, then check again."}):null,l.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[et===!0&&!ya&&aa?l.jsx(le,{type:"button",variant:"outline",size:"sm",onClick:()=>ln(!0),children:"Configure a provider"}):null,!aa||Ot===!0?l.jsx(le,{type:"button",variant:"outline",size:"sm",asChild:!0,children:l.jsx(at,{to:"/settings",target:"_blank",rel:"noopener noreferrer",children:"Open provider settings"})}):null,El?null:xa]})]}):l.jsxs("section",{"aria-labelledby":"setup-provider-heading",className:"space-y-2 border-b border-default pb-6 mb-6",children:[l.jsx("h2",{id:"setup-provider-heading",className:"text-lg font-semibold text-heading",children:"Answer engine provider"}),l.jsx("p",{className:"max-w-prose text-sm text-secondary",children:"Provider settings are managed by an administrator."}),ze?l.jsx("p",{role:"alert",className:"text-sm text-negative",children:"Provider readiness could not be checked. Try again."}):l.jsx("p",{className:"max-w-prose text-sm text-secondary",role:"status",children:et===!0?"An answer engine is available for this project.":et===!1?"Ask an administrator to connect an answer engine for this project. You can save queries now.":"Checking provider readiness. You can save queries now."}),l.jsx(le,{type:"button",variant:"ghost",size:"sm",className:"min-h-11",disabled:na.isFetching,onClick:()=>{na.refetch()},children:ze?"Retry provider check":"Check again"})]}):null,ti=(()=>{switch(B){case 0:return l.jsxs(Ta,{className:"surface-card step-card",children:[l.jsx("div",{className:"section-head",children:l.jsxs("div",{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 1 of 5"}),l.jsx("h2",{children:"System check"})]})}),l.jsx("p",{className:"supporting-copy",children:"Checking that your Canonry instance is configured and reachable."}),l.jsx("div",{className:"compact-stack",children:C.healthChecks.map(H=>l.jsxs("div",{className:"health-check-row",children:[l.jsxs("div",{children:[l.jsx("p",{className:"run-row-title",children:H.label}),l.jsx("p",{className:"supporting-copy",children:H.detail}),H.id==="provider"&&H.state!=="ready"&&l.jsxs("div",{className:"mt-3 rounded-md border border-default bg-bg-elevated/40 p-3 space-y-2",children:[l.jsxs("p",{className:"text-xs text-secondary",children:["Paste a Gemini key to enable visibility checks (free at"," ",l.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"}),")."]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx("input",{type:"password",value:ns,onChange:Xe=>wu(Xe.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:On}),l.jsx(le,{type:"button",size:"sm",disabled:On||!ns.trim(),onClick:gn(Cl),children:On?"Saving...":"Save"})]}),Al&&l.jsxs("div",{role:"alert",className:"space-y-1 text-xs text-negative",children:[l.jsx("p",{children:Al}),l.jsx("p",{children:"Check that the key is complete, then retry Save."})]}),l.jsxs("p",{className:"text-sm text-secondary",children:["Connect more answer engines later in"," ",l.jsx(at,{to:"/settings",className:"text-link hover:underline",children:"Settings"}),"."]})]})]}),l.jsx(Sn,{tone:H.state==="ready"?"positive":"caution",title:H.id==="api"?Jr(j.apiStatus):H.id==="worker"?Jr(j.workerStatus):H.detail,children:H.state==="ready"?"Ready":"Attention"})]},H.id))}),l.jsxs("div",{className:"setup-nav",children:[C.launchState.blockedReason?l.jsx("p",{role:"status",className:"supporting-copy text-negative",children:C.launchState.blockedReason}):l.jsx("span",{}),l.jsx(le,{type:"button",disabled:!C.launchState.enabled,title:C.launchState.blockedReason,onClick:()=>{M({flowVersion:ft,onboardingSessionId:R,event:"onboarding.step_completed",step:"system",method:"automatic"},"onboarding.step_completed:system"),W(Le)},children:"Continue"})]})]});case 1:return l.jsxs(Ta,{className:"surface-card step-card",children:[l.jsxs("div",{className:"section-head",children:[l.jsxs("div",{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 2 of 5"}),l.jsx("h2",{children:"Create project"})]}),Ne?l.jsx(Sn,{tone:"positive",children:"Created"}):null]}),Ne?l.jsxs("div",{className:"compact-stack",children:[l.jsxs("p",{className:"text-neutral",children:["Project ",l.jsx("span",{className:"text-heading font-medium",children:Ne})," created successfully."]}),l.jsxs("div",{className:"setup-nav",children:[l.jsx(le,{type:"button",variant:"outline",onClick:Bn,children:"Back"}),l.jsx(le,{type:"button",onClick:()=>ir("project",2),children:"Continue"})]})]}):l.jsxs("div",{className:"compact-stack",children:[l.jsxs("div",{className:"setup-field",children:[l.jsx("label",{className:"setup-label",htmlFor:"project-name",children:"Project name"}),l.jsx("input",{id:"project-name",className:"setup-input",type:"text",placeholder:"my-website",value:Se,onChange:H=>Me(H.target.value)}),Gn&&Gn!==Se?l.jsxs("p",{className:"supporting-copy",children:["Slug: ",Gn]}):null]}),l.jsxs("div",{className:"setup-field",children:[l.jsx("label",{className:"setup-label",htmlFor:"display-name",children:"Display name (optional)"}),l.jsx("input",{id:"display-name",className:"setup-input",type:"text",placeholder:"My Website",value:xe,onChange:H=>pe(H.target.value)})]}),l.jsxs("div",{className:"setup-field",children:[l.jsx("label",{className:"setup-label",htmlFor:"domain",children:"Canonical domain"}),l.jsx("input",{id:"domain",className:"setup-input",type:"text",placeholder:"example.com",value:ce,onChange:H=>ue(H.target.value)})]}),l.jsxs("div",{className:"setup-field-row",children:[l.jsxs("div",{className:"setup-field",children:[l.jsx("label",{className:"setup-label",htmlFor:"country",children:"Country"}),l.jsx("input",{id:"country",className:"setup-input",type:"text",placeholder:"US",maxLength:2,value:_e,onChange:H=>Ze(H.target.value.toUpperCase())})]}),l.jsxs("div",{className:"setup-field",children:[l.jsx("label",{className:"setup-label",htmlFor:"language",children:"Language"}),l.jsx("input",{id:"language",className:"setup-input",type:"text",placeholder:"en",maxLength:5,value:Ee,onChange:H=>Ct(H.target.value.toLowerCase())})]})]}),l.jsxs("label",{className:"flex items-start gap-3 rounded-md border border-default bg-surface p-3 cursor-pointer hover:border-strong",children:[l.jsx("input",{type:"checkbox",className:"mt-0.5 h-4 w-4 rounded border-strong bg-bg",checked:me,onChange:H=>Be(H.target.checked)}),l.jsxs("span",{className:"flex-1",children:[l.jsx("span",{className:"block text-sm text-heading",children:"Auto-extract backlinks"}),l.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."," ",l.jsx(at,{to:"/backlinks",className:"text-positive-400 hover:text-positive underline underline-offset-2",children:"Manage backlinks"})]})]})]}),Ye?l.jsx("p",{className:"text-negative-400 text-sm",children:Ye}):null,l.jsxs("div",{className:"setup-nav",children:[l.jsx(le,{type:"button",variant:"outline",onClick:Bn,children:"Back"}),l.jsx(le,{type:"button",disabled:!Gn||!ce||Mn,onClick:gn(jp),children:Mn?"Creating...":"Create project"})]})]})]});case 2:return l.jsxs(Ws,{className:T?"visibility-setup-section step-card":"surface-card step-card","aria-labelledby":"setup-queries-heading",children:[l.jsxs("div",{className:"section-head",children:[l.jsxs("div",{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:T?"Step 1 of 2":"Step 3 of 5"}),l.jsx("h2",{id:"setup-queries-heading",children:"Add queries"})]}),se?l.jsx(Sn,{tone:"neutral",children:"Loading"}):V.isError?l.jsx(Sn,{tone:"negative",children:"Load failed"}):Vt?l.jsxs(Sn,{tone:"positive",children:[ia.length," saved"]}):l.jsxs(Sn,{tone:"neutral",children:[ia.length," quer",ia.length!==1?"ies":"y"]})]}),l.jsx("p",{className:"supporting-copy",children:"Add the queries your customers use, one per line. You can refine your list later."}),l.jsxs("div",{className:"space-y-2 border-b border-default pb-4",children:[l.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[l.jsxs("div",{className:"min-w-0 space-y-1",children:[l.jsx("h3",{className:"text-sm font-semibold text-heading",children:"Research queries with your agent"}),l.jsx("p",{className:"max-w-prose text-sm text-secondary",children:"Ask your agent to compare answers and available sources with Canonry Research, then recommend queries. Research does not change your tracked queries."})]}),l.jsx(le,{type:"button",variant:"outline",size:"sm",className:"min-h-11 shrink-0 self-start",onClick:gn(vl),children:zn?"Research prompt copied":"Copy research prompt"})]}),l.jsxs("details",{open:Jo||void 0,className:"text-sm text-secondary",children:[l.jsx("summary",{className:"min-h-11 cursor-pointer py-3 text-link",children:"View agent prompt"}),l.jsx("textarea",{"aria-label":"Agent query research prompt",readOnly:!0,className:"setup-textarea mt-2 w-full",rows:8,value:Xi})]}),Jo?l.jsx("p",{role:"alert",className:"text-sm text-negative",children:"Could not copy. Select and copy the prompt above."}):null]}),se?l.jsx("div",{className:"rounded-md border border-default bg-bg-elevated/40 p-4 text-sm text-secondary",role:"status",children:"Loading saved queries…"}):V.isError?l.jsxs("div",{className:"compact-stack",children:[l.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."}),l.jsxs("div",{className:"setup-nav",children:[l.jsx(le,{type:"button",variant:"outline",onClick:T?$e:Bn,children:"Back"}),l.jsx(le,{type:"button",onClick:()=>{V.refetch()},children:"Retry loading queries"})]})]}):Vt?l.jsxs("div",{className:"compact-stack",children:[l.jsx("ul",{className:"detail-list",children:ia.map(H=>l.jsx("li",{children:H},H))}),l.jsxs("div",{className:"setup-nav",children:[l.jsx(le,{type:"button",variant:"outline",onClick:T?$e:Bn,children:"Back"}),l.jsx(le,{type:"button",variant:"outline",onClick:()=>hi(!1),children:"Edit queries"}),l.jsx(le,{type:"button",onClick:()=>ir("queries",T?4:3,ia.length),children:"Continue"})]})]}):l.jsxs("div",{className:"compact-stack",children:[Et.length>0?l.jsxs("div",{className:"compact-stack",children:[l.jsxs("div",{className:"flex items-center gap-2 text-muted text-xs uppercase tracking-wide",children:[l.jsx("span",{className:"flex-1 border-t border-base"}),"auto-generate",l.jsx("span",{className:"flex-1 border-t border-base"})]}),l.jsxs("div",{className:"flex items-end gap-2",children:[l.jsxs("div",{className:"setup-field flex-1",children:[l.jsx("label",{className:"setup-label",htmlFor:"gen-provider",children:"Provider"}),l.jsx("select",{id:"gen-provider",className:"setup-input",value:rn,onChange:H=>yi(H.target.value),children:Et.map(H=>l.jsxs("option",{value:H.name,children:[H.displayName??H.name,H.model?` (${H.model})`:""]},H.name))})]}),l.jsxs("div",{className:"setup-field",children:[l.jsx("label",{className:"setup-label",htmlFor:"gen-count",children:"Count"}),l.jsx("select",{id:"gen-count",className:"setup-input",value:Yo,onChange:H=>Ys(Number(H.target.value)),children:[3,5,10,15,20].map(H=>l.jsx("option",{value:H,children:H},H))})]}),l.jsx(le,{type:"button",variant:"outline",disabled:bu||!rn,onClick:gn(Ba),children:bu?"Analyzing site...":"Generate"})]}),fl?l.jsx("p",{className:"text-negative-400 text-sm",children:fl}):null]}):null,T?null:l.jsxs("div",{className:"flex items-center gap-2 text-muted text-xs uppercase tracking-wide",children:[l.jsx("span",{className:"flex-1 border-t border-base"}),"or type manually",l.jsx("span",{className:"flex-1 border-t border-base"})]}),l.jsxs("div",{className:"setup-field",children:[l.jsx("label",{className:"setup-label",htmlFor:"queries",children:"Queries (one per line)"}),l.jsx("textarea",{id:"queries",className:"setup-textarea",rows:6,placeholder:`emergency dentist brooklyn
84
84
  best invisalign downtown brooklyn
85
85
  pediatric dentist brooklyn heights`,value:Qt,onChange:H=>Rn(H.target.value)})]}),Hs?l.jsx("p",{className:"text-negative-400 text-sm",children:Hs}):null,l.jsxs("div",{className:"setup-nav",children:[l.jsx(le,{type:"button",variant:"outline",onClick:T?$e:Bn,children:"Back"}),l.jsx(le,{type:"button",variant:"ghost",onClick:_l,children:T?"Finish without AI Visibility":"Skip for now"}),l.jsx(le,{type:"button",disabled:ia.length===0||Dn,onClick:gn(ar),children:Dn?"Saving...":`Save ${ia.length} quer${ia.length!==1?"ies":"y"}`})]})]})]});case 3:return l.jsxs(Ta,{className:"surface-card step-card",children:[l.jsxs("div",{className:"section-head",children:[l.jsxs("div",{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 4 of 5"}),l.jsx("h2",{children:"Add competitors"})]}),Wi?l.jsx(Sn,{tone:"positive",children:"Saved"}):null]}),l.jsx("p",{className:"supporting-copy",children:"Optional. Domains that compete for the same queries, one per line. You can add them later from the project."}),Wi?l.jsxs("div",{className:"compact-stack",children:[l.jsx("ul",{className:"detail-list",children:xi.map(H=>l.jsx("li",{children:H},H))}),l.jsxs("div",{className:"setup-nav",children:[l.jsx(le,{type:"button",variant:"outline",onClick:Bn,children:"Back"}),l.jsx(le,{type:"button",onClick:()=>ir("competitors",4,xi.length),children:"Continue"})]})]}):l.jsxs("div",{className:"compact-stack",children:[l.jsxs("div",{className:"setup-field",children:[l.jsx("label",{className:"setup-label",htmlFor:"competitors",children:"Competitor domains (one per line)"}),l.jsx("textarea",{id:"competitors",className:"setup-textarea",rows:4,placeholder:`competitor1.com
86
- competitor2.com`,value:bi,onChange:H=>Ji(H.target.value)})]}),tn?l.jsx("p",{className:"text-negative-400 text-sm",children:tn}):null,l.jsxs("div",{className:"setup-nav",children:[l.jsx(le,{type:"button",variant:"outline",onClick:Bn,children:"Back"}),l.jsx("div",{className:"flex gap-2",children:xi.length===0?l.jsx(le,{type:"button",onClick:Tl,children:"Continue without competitors"}):l.jsxs(l.Fragment,{children:[l.jsx(le,{type:"button",variant:"outline",onClick:Tl,children:"Skip"}),l.jsx(le,{type:"button",disabled:wl,onClick:gn(Nl),children:wl?"Saving...":`Save ${xi.length} competitor${xi.length!==1?"s":""}`})]})})]})]})]});case 4:{const H=Wa.data,Xe=H?.status??(ts===tt?.id?tt.status:void 0),Si=Xe==="completed"||Xe==="partial"||Xe==="failed"||Xe==="cancelled",as=H?.snapshots??[],La=H?.queryCounts,Rl=Xe?Bk(Xe,as.length):!1,Nn=Ge&&!Ja,ki=An??(H?.error?JQ(H.error):Xe==="cancelled"?"The sweep was cancelled before it produced a baseline.":(Xe==="completed"||Xe==="partial")&&as.length===0?"The sweep finished without producing any snapshots.":tt?.statusDetail||"The sweep did not produce a baseline.");let ni=null;return Nn||Rl?ni=l.jsx(Sn,{tone:"positive",children:"Complete"}):An&&!Ja?ni=l.jsx(Sn,{tone:"negative",children:"Failed"}):Si?ni=l.jsx(Sn,{tone:"negative",children:Xe==="cancelled"?"Cancelled":"Failed"}):Ja&&(ni=l.jsx(Sn,{tone:"caution",children:"Running"})),l.jsxs(Ta,{className:"surface-card step-card",children:[l.jsxs("div",{className:"section-head",children:[l.jsxs("div",{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:T?"Step 2 of 2":"Step 5 of 5"}),l.jsx("h2",{children:So()?"AI Visibility":"Launch first run"})]}),ni]}),Nn?l.jsxs("div",{className:"compact-stack",children:[l.jsxs("p",{className:"text-secondary",children:["Setup is complete. ",l.jsx("span",{className:"text-strong font-medium",children:Ne})," already has a successful answer-visibility baseline."]}),l.jsxs("div",{className:"setup-nav",children:[l.jsx("span",{}),l.jsx(le,{type:"button",onClick:()=>ct(),children:f?"Finish setup":"Open project dashboard →"})]})]}):!Ja&&So()?l.jsxs("div",{className:"compact-stack",children:[Ne?l.jsx(vW,{projectName:Ne}):l.jsx("p",{className:"text-sm text-secondary",children:a0}),An&&l.jsx("p",{role:"alert",className:"text-sm text-negative",children:An}),l.jsxs("div",{className:"setup-nav",children:[l.jsx("span",{}),l.jsx(le,{type:"button",onClick:$e,children:"Open project dashboard →"})]})]}):Ja?Si?Rl?l.jsxs("div",{className:"compact-stack",children:[l.jsxs("p",{className:"text-neutral",children:["Sweep complete. Your first answer-visibility snapshot for"," ",l.jsx("span",{className:"text-heading font-medium",children:Ne}),":"]}),l.jsxs("div",{className:"grid grid-cols-3 gap-2 mt-1",children:[l.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[l.jsx("p",{className:"text-xs font-medium text-secondary",children:"Mentioned"}),l.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:La?l.jsxs(l.Fragment,{children:[La.mentionedQueries,l.jsxs("span",{className:"text-faint text-lg",children:[" / ",La.totalQueries]})]}):"Unavailable"}),l.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries naming your brand"})]}),l.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[l.jsx("p",{className:"text-xs font-medium text-secondary",children:"Cited"}),l.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:La?l.jsxs(l.Fragment,{children:[La.citedQueries,l.jsxs("span",{className:"text-faint text-lg",children:[" / ",La.totalQueries]})]}):"Unavailable"}),l.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries citing your site"})]}),l.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[l.jsx("p",{className:"text-xs font-medium text-secondary",children:"Results"}),l.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:as.length}),l.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"completed engine checks"})]})]}),!b&&Ne?l.jsx(lte,{projectName:Ne}):null,l.jsxs("div",{className:"setup-nav",children:[l.jsx("span",{}),l.jsx(le,{type:"button",onClick:()=>ct(),children:f?"Finish setup":"Open project dashboard →"})]})]}):l.jsxs("div",{className:"compact-stack",children:[l.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[l.jsx("p",{children:ki}),l.jsx("p",{className:"mt-1 text-xs text-secondary",children:So()?a0:x?"Fix provider or query configuration if needed, then retry without leaving setup.":"Ask an administrator to review the provider and query configuration."})]}),l.jsxs("div",{className:"setup-nav",children:[x&&!So()?l.jsx(le,{type:"button",variant:"outline",asChild:!0,children:l.jsx(at,{to:"/settings",children:"Configure providers"})}):l.jsx("span",{}),So()||!x?l.jsx(le,{type:"button",onClick:$e,children:"Open project dashboard →"}):l.jsx(le,{type:"button",disabled:vi||!!ei,onClick:gn(wi),children:vi?"Retrying...":"Retry visibility sweep"})]})]}):l.jsxs("div",{className:"compact-stack",children:[l.jsx("p",{className:"text-neutral",children:"Sweep running. This usually takes 30 to 60 seconds."}),l.jsx("div",{className:"rounded-md border border-default bg-surface p-3 text-xs text-muted",children:l.jsxs("p",{children:["Status: ",l.jsx("span",{className:"text-neutral",children:Xe??"queued"})]})}),Wa.isError&&l.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[l.jsx("p",{children:Wa.error instanceof Error?Wa.error.message:"Could not refresh the sweep status."}),l.jsx(le,{type:"button",variant:"outline",size:"sm",className:"mt-2",onClick:()=>{Wa.refetch()},children:"Retry status check"})]}),l.jsxs("div",{className:"setup-nav",children:[l.jsx("span",{}),l.jsx(le,{type:"button",variant:"outline",onClick:f?()=>ct():$e,children:f?"Finish setup":"Watch on project page"})]})]}):l.jsxs("div",{className:"compact-stack",children:[l.jsxs("p",{className:"supporting-copy",children:["Your queries are saved. Run a first sweep to get a baseline for"," ",l.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."]}),(ei||An)&&l.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[l.jsx("p",{children:An??ei}),l.jsx("p",{className:"mt-1 text-xs text-secondary",children:"Resolve the blocker above, then retry the sweep here."})]}),l.jsxs("div",{className:"setup-nav",children:[l.jsx(le,{type:"button",variant:"outline",onClick:Bn,children:"Back"}),l.jsx(le,{type:"button",variant:"ghost",onClick:Ft,children:"Finish without running"}),va==="no_provider"&&!T?l.jsx(le,{type:"button",asChild:!0,children:l.jsx(at,{to:"/settings",children:"Configure a provider"})}):l.jsx(le,{type:"button",disabled:vi||!!ei,title:ei,onClick:gn(wi),children:vi?"Launching...":An?"Retry visibility sweep":"Launch visibility sweep"})]})]})]})}default:return null}})();return l.jsxs("div",{className:T?"page-container visibility-setup":"page-container",children:[f?l.jsx(Po,{current:"visibility"}):null,l.jsxs("div",{className:"page-header",children:[l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{ref:u?h:void 0,tabIndex:u?-1:void 0,className:"page-title",children:u?"Set up AI Visibility":"Setup"}),l.jsx("p",{className:"page-subtitle",children:u?"Connect an answer engine, then choose queries for your first sweep.":"Create a project and run its first visibility check."})]}),f?l.jsx("div",{className:"page-header-right",children:l.jsx(le,{type:"button",variant:"outline",className:"min-h-11",onClick:Ft,children:"Skip AI Visibility"})}):null]}),f?null:l.jsx(hte,{current:T?B===4?1:0:B,labels:T?mte:dte}),l.jsxs("section",{className:"setup-wizard",children:[eo,ti]})]})}const mg="canonry mcp install --client claude-code",yte="https://github.com/Canonry/canonry/blob/main/docs/mcp.md";function bte(){const e=_.useRef(J1()).current,n=_.useRef(new Set),i=_.useCallback((r,u)=>{n.current.has(r)||(n.current.add(r),ay({...u,flowVersion:ft,onboardingSessionId:e,surface:"platform",eventId:W1()}))},[e]);return _.useEffect(()=>{i("started",{event:"onboarding.started",step:"finish",resumed:!1})},[i]),_.useCallback(r=>{i(`action:${r}`,{event:"onboarding.step_completed",step:"finish",method:"manual",nextAction:r})},[i])}const vp=_.createContext(()=>{});function vte({projectName:e,skippedVisibility:n=!1}){const i=yt({...MY({client:J,path:{name:e}}),retry:!1}),r=i.data?.hasData?i.data:null,u=bte(),h=Vk(e,Oe["site-audit"]),f=Vk(e,Oe["answer-visibility"]),b={...h?{site:h,fixes:h}:{},...xte(f,n)};return l.jsx(vp.Provider,{value:u,children:l.jsxs("div",{className:"page-container max-w-6xl py-8 md:py-10",children:[l.jsx(Po,{current:"done",outcomes:b}),l.jsxs("header",{className:"relative mx-auto mt-12 max-w-2xl text-center md:mt-16",children:[l.jsx(wte,{}),l.jsx("p",{className:"onb-reveal mt-6 text-sm font-medium text-positive",style:Ra(250),children:"Setup complete"}),l.jsx("h1",{className:"onb-reveal mt-2 text-5xl font-semibold tracking-tight text-heading md:text-6xl",style:Ra(350),children:"You’re set."}),l.jsxs("p",{className:"onb-reveal mx-auto mt-4 max-w-xl text-lg text-secondary",style:Ra(450),children:["Canonry is tracking ",l.jsx("span",{className:"font-medium text-heading",children:e}),". Here’s how to get the most out of it from here."]})]}),l.jsxs("div",{className:"mt-14 grid gap-4 md:grid-cols-6",children:[l.jsx(Gd,{className:"md:col-span-4 md:row-span-2",delayMs:600,labelledBy:"onb-agent-heading",children:l.jsx(jte,{projectName:e})}),l.jsx(Gd,{className:"md:col-span-2 md:row-span-2",delayMs:700,labelledBy:"onb-data-heading",children:l.jsx(Cte,{projectName:e})}),l.jsx(Gd,{className:"md:col-span-3",delayMs:800,labelledBy:"onb-schedule-heading",children:l.jsx(Ete,{projectName:e})}),l.jsx(Gd,{className:"md:col-span-3",delayMs:900,labelledBy:"onb-alerts-heading",children:l.jsx(Rte,{projectName:e,score:r?.aggregateScore??null})})]}),l.jsxs("div",{className:"onb-reveal mt-12 flex flex-col items-center gap-3 sm:flex-row sm:justify-center",style:Ra(1e3),children:[l.jsx(le,{asChild:!0,className:"h-11 rounded-full px-6 text-base md:h-11",children:l.jsxs(at,{to:"/projects/$projectName",params:{projectName:e},replace:!0,onClick:()=>u("open_project"),children:["Open ",e,l.jsx(qc,{className:"size-4","aria-hidden":"true"})]})}),l.jsx(le,{asChild:!0,variant:"ghost",className:"h-11 rounded-full px-5 md:h-11",children:l.jsx(at,{to:"/projects/$projectName/technical-aeo",params:{projectName:e},replace:!0,onClick:()=>u("review_page_health"),children:"Review page health"})})]})]})})}function Vk(e,n){const i=yt({...e4({client:J,path:{name:e},query:{kind:n,limit:20}}),retry:!1,refetchInterval:r=>$k(r.state.status==="success"?{isSuccess:!0,data:r.state.data}:{isSuccess:!1})==="pending"?5e3:!1});return $k(i)}function xte(e,n){return e===void 0?{}:n?{visibility:"skipped"}:{visibility:e}}function $k(e){if(!e.isSuccess||!e.data)return"unknown";const n=e.data.filter(i=>i.trigger!==Ga.probe);if(!n.some(i=>i.status===Nt.completed||i.status===Nt.partial))return n.some(i=>i.status===Nt.queued||i.status===Nt.running)?"pending":n.length>0?"incomplete":"skipped"}function Ra(e){return{"--onb-delay":`${e}ms`}}function wte(){return l.jsx("div",{className:"onb-check relative mx-auto size-20","aria-hidden":"true",children:l.jsxs("svg",{viewBox:"0 0 80 80",className:"relative size-20",children:[l.jsx("circle",{className:"onb-check-ring",cx:"40",cy:"40",r:"36",fill:"none",strokeWidth:"3",pathLength:"1"}),l.jsx("path",{className:"onb-check-mark",d:"M25 41 L35 51 L56 30",fill:"none",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round",pathLength:"1"})]})})}function Gd({className:e="",delayMs:n,labelledBy:i,children:r}){return l.jsx("section",{"aria-labelledby":i,className:`onb-reveal onb-tile flex flex-col overflow-hidden rounded-2xl border border-default bg-surface p-6 md:p-7 ${e}`,style:Ra(n),children:r})}function xp({id:e,eyebrow:n,title:i,children:r}){return l.jsxs("div",{children:[l.jsx("p",{className:"text-xs font-medium uppercase tracking-wide text-muted",children:n}),l.jsx("h2",{id:e,className:"mt-1.5 text-2xl font-semibold tracking-tight text-heading",children:i}),l.jsx("p",{className:"mt-2 text-sm text-secondary",children:r})]})}const Hd=[{id:"diagnose",label:"Diagnose",prompt:"Why did we lose citations this week?",calls:["canonry_insights_list","canonry_competitor_landscape"],reply:"Two engines started citing a competitor’s comparison page instead of yours. Want me to draft one that answers the same query?"},{id:"fix",label:"Fix",prompt:"Fix the weakest pages on the site.",calls:["canonry_technical_aeo_pages","canonry_site_health_page_audit"],reply:"The lowest-scoring pages are missing structured data and answer-first intros. I’ve written the changes for you to review."},{id:"automate",label:"Automate",prompt:"Re-check everything every Monday and tell me in Slack.",calls:["canonry_schedule_set","canonry_agent_webhook_attach"],reply:"Done. A sweep runs every Monday, and I’ll post what changed to Slack."}],Ste=9e3;function kte(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function jte({projectName:e}){const n=_.useContext(vp),[i,r]=_.useState(0),[u,h]=_.useState(!1),[f,b]=_.useState(!1);_.useEffect(()=>{if(u||kte())return;const S=window.setTimeout(()=>r(j=>(j+1)%Hd.length),Ste);return()=>window.clearTimeout(S)},[i,u]);const v=async()=>{try{await navigator.clipboard.writeText(mg),n("copy_agent_command"),b(!0),window.setTimeout(()=>b(!1),1800)}catch{vn({tone:"negative",title:"Could not copy the command",detail:`Run ${mg} in your terminal.`})}},x=Hd[i]??Hd[0];return l.jsxs(l.Fragment,{children:[l.jsxs(xp,{id:"onb-agent-heading",eyebrow:"Your agent",title:"Let your agent run it.",children:["Your agent can do everything in Canonry: diagnose a drop, fix pages, run sweeps and scans, and write the client report. Use Claude Code, Codex, Cursor, or Aero, the analyst built into"," ",l.jsx("span",{className:"text-heading",children:e})," that reviews every sweep on its own."]}),l.jsxs("div",{className:"mt-6 flex flex-1 flex-col rounded-xl border border-default bg-bg",onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1),onFocus:()=>h(!0),children:[l.jsxs("div",{className:"flex items-center gap-1 border-b border-default px-3 py-2",role:"tablist","aria-label":"Example agent sessions",children:[Hd.map((S,j)=>l.jsx("button",{type:"button",role:"tab","aria-selected":j===i,onClick:()=>{r(j),h(!0)},className:`rounded-md px-2.5 py-1 text-xs font-medium transition-colors ${j===i?"bg-surface-inset text-heading":"text-muted hover:text-secondary"}`,children:S.label},S.id)),l.jsx("span",{className:"ml-auto text-xs text-faint",children:"Example"})]}),l.jsxs("div",{role:"tabpanel","aria-label":`${x.label} example`,className:"flex-1 p-4 font-mono text-[13px] leading-relaxed",children:[l.jsxs("p",{className:"onb-type text-heading",style:Ra(150),children:[l.jsx("span",{className:"text-muted",children:"> "}),x.prompt]}),x.calls.map((S,j)=>l.jsxs("p",{className:"onb-line mt-1 text-muted first:mt-3",style:Ra(1300+j*450),children:[l.jsx("span",{className:"text-positive",children:"●"})," ",S]},S)),l.jsx("p",{className:"onb-line mt-3 text-secondary",style:Ra(1500+x.calls.length*450),children:x.reply}),l.jsx("span",{className:"onb-caret mt-2 inline-block h-4 w-2 bg-current align-middle text-secondary",style:Ra(1900+x.calls.length*450),"aria-hidden":"true"})]},x.id)]}),l.jsxs("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:[l.jsx("code",{className:"min-w-0 flex-1 truncate rounded-lg border border-default bg-surface-inset px-3 py-2 font-mono text-[13px] text-heading",children:mg}),l.jsxs(le,{type:"button",variant:"secondary",size:"sm",className:"h-9 md:h-9",onClick:()=>{v()},children:[f?l.jsx(Xc,{className:"size-4","aria-hidden":"true"}):l.jsx(g0,{className:"size-4","aria-hidden":"true"}),f?"Copied":"Copy"]}),l.jsx("a",{href:yte,target:"_blank",rel:"noreferrer",className:"text-sm font-medium text-link underline-offset-4 hover:underline",children:"Other clients"})]})]})}const Ate=[{icon:f0,label:"Search Console",action:"connect_search_console",to:"/projects/$projectName/search-console"},{icon:sj,label:"Google Analytics",action:"connect_analytics",to:"/projects/$projectName/activity"},{icon:rj,label:"Business Profile",action:"connect_business_profile",to:"/projects/$projectName/local"}],Nte=["GPTBot","ClaudeBot","PerplexityBot"];function Cte({projectName:e}){const n=_.useContext(vp);return l.jsxs(l.Fragment,{children:[l.jsx(xp,{id:"onb-data-heading",eyebrow:"Server-side traffic",title:"See the AI bots.",children:"AI crawlers and answer-engine fetches never run JavaScript, so Google Analytics never sees them. Canonry reads them straight from your server."}),l.jsx(_te,{}),l.jsxs(at,{to:"/traffic",onClick:()=>n("connect_server_traffic"),"aria-label":"Connect server-side traffic",className:"group flex items-center gap-3 rounded-xl border border-strong bg-surface-inset px-4 py-3 text-sm font-medium text-heading transition-colors hover:bg-surface-inset-hover",children:[l.jsx(lj,{className:"size-4 text-positive","aria-hidden":"true"}),l.jsxs("span",{className:"flex-1",children:["Connect your server",l.jsx("span",{className:"block text-xs font-normal text-secondary",children:"Cloudflare, Vercel, WordPress, or Cloud Run"})]}),l.jsx(qc,{className:"size-4 text-link transition-transform group-hover:translate-x-0.5","aria-hidden":"true"})]}),l.jsx("p",{className:"mt-5 text-xs font-medium uppercase tracking-wide text-muted",children:"Also connect"}),l.jsx("ul",{className:"mt-1 divide-y divide-default",children:Ate.map(({icon:i,label:r,action:u,to:h})=>l.jsx("li",{children:l.jsxs(at,{to:h,params:{projectName:e},"aria-label":`Connect ${r}`,onClick:()=>n(u),className:"group flex items-center gap-3 py-2.5 text-sm text-heading",children:[l.jsx(i,{className:"size-4 text-muted","aria-hidden":"true"}),l.jsx("span",{className:"flex-1",children:r}),l.jsx(qc,{className:"size-3.5 text-link transition-transform group-hover:translate-x-0.5","aria-hidden":"true"})]})},r))})]})}function _te(){const e=[22,70,118];return l.jsxs("div",{className:"relative my-6 h-36","aria-hidden":"true",children:[l.jsx("svg",{viewBox:"0 0 200 140",preserveAspectRatio:"none",className:"absolute inset-0 size-full",children:e.map((n,i)=>l.jsx("path",{className:"onb-flow",style:Ra(i*400),d:`M20 ${n} C 100 ${n}, 118 70, 170 70`,fill:"none",strokeWidth:"1.5"},n))}),Nte.map((n,i)=>l.jsx("span",{className:"onb-bot absolute left-0 -translate-y-1/2 rounded-md border border-default bg-bg-elevated px-2 py-1 font-mono text-[11px] text-secondary",style:{top:`${(e[i]??70)/140*100}%`,...Ra(i*600)},children:n},n)),l.jsx("span",{className:"onb-hub absolute right-0 top-1/2 flex size-11 -translate-y-1/2 items-center justify-center rounded-2xl bg-accent text-on-inverse",children:l.jsx(lj,{className:"size-5"})})]})}const Tte=["M","T","W","T","F","S","S"];function Ete({projectName:e}){return l.jsxs(l.Fragment,{children:[l.jsx(xp,{id:"onb-schedule-heading",eyebrow:"Scheduled sweeps",title:"Runs on its own.",children:"Re-measure every week without lifting a finger, so a drop shows up before a customer notices."}),l.jsx("ol",{className:"mt-6 grid grid-cols-7 gap-2","aria-hidden":"true",children:Tte.map((n,i)=>l.jsxs("li",{className:"flex flex-col items-center gap-2",children:[l.jsx("span",{className:"onb-day size-3 rounded-full bg-surface-inset",style:Ra(i*500)}),l.jsx("span",{className:"text-xs text-muted",children:n})]},i))}),l.jsx(K4,{projectName:e,to:"/projects/$projectName/settings",icon:oj,label:"Set a schedule",action:"set_schedule"})]})}function Rte({projectName:e,score:n}){return l.jsxs(l.Fragment,{children:[l.jsx(xp,{id:"onb-alerts-heading",eyebrow:"Notifications",title:"Hear about changes.",children:"Get a webhook in Slack or anywhere else when a sweep finishes or a score moves."}),l.jsxs("div",{className:"relative mt-6 flex h-14 items-center","aria-hidden":"true",children:[l.jsx("span",{className:"onb-bell flex size-10 items-center justify-center rounded-full border border-default bg-bg-elevated",children:l.jsx(fg,{className:"size-4 text-secondary"})}),l.jsxs("span",{className:"onb-toast ml-3 flex items-center gap-2 rounded-xl border border-default bg-bg-elevated px-3 py-2 text-sm shadow-[0_8px_24px_var(--color-shadow-panel)]",children:[l.jsx("span",{className:"size-2 rounded-full bg-positive-400"}),l.jsx("span",{className:"text-heading",children:e}),l.jsx("span",{className:"text-secondary",children:n===null?"sweep finished":`page health ${n}`})]})]}),l.jsx(K4,{projectName:e,to:"/projects/$projectName/settings",icon:fg,label:"Add a notification",action:"add_notification"})]})}function K4({projectName:e,to:n,icon:i,label:r,action:u}){const h=_.useContext(vp);return l.jsxs(at,{to:n,params:{projectName:e},onClick:()=>h(u),className:"group mt-6 inline-flex items-center gap-2 self-start text-sm font-medium text-link",children:[l.jsx(i,{className:"size-4","aria-hidden":"true"}),r,l.jsx(qc,{className:"size-3.5 transition-transform group-hover:translate-x-0.5","aria-hidden":"true"})]})}const Dte=_.lazy(async()=>({default:(await Zi(()=>import("./SiteHealthSection-Bm5nWAoZ.js").then(n=>n.d),__vite__mapDeps([0,1,2,3,4]),import.meta.url)).SiteHealthSection})),zte=`Public pages only, crawled from this computer and stored locally. The first scan reads up to ${s3} pages, then stops.`,Ite=1800,Ote="https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent",Pte="Help me set up Canonry for my public site.\n\nUse the official Canonry 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\nPick one path and stay on it. Use connected Canonry tools (plugin or MCP) only if you have them and I have not pointed you at a specific install. A connected tool runs in its own process and never sees `CANONRY_CONFIG_DIR`, `CANONRY_PORT`, or anything else you export in a shell, so it always acts on my default install. If I named a config directory, a port, or a sandbox, that is the shell path: use `cnry` and tell me which path you chose. Never mix the two in one run, and never create a duplicate project. The `cnry` and `canonry` commands are interchangeable.\n\n1. Ask for my public domain, country, and language. Do not create or scan anything yet. Country and language are only applied when a project is created, so if you reuse an existing project, report its country and language instead of changing them.\n2. Shell path only: confirm `cnry` is on PATH, then run `cnry --version`. If Canonry is missing, propose `npm install -g @canonry/canonry` and wait for approval. Then run `cnry doctor --format json`, which is the command that says whether config, database, and server are in place. `cnry --version` does not read config and succeeds on a completely unconfigured install, so it cannot answer this. If config is missing, run `cnry bootstrap` yourself: it is not interactive, takes about a second, and is safe to rerun. Do not hand it to me and wait. The interactive command is `cnry init`, which is optional provider and OAuth setup that Page Health does not need. Bootstrap prints an API key, so do not repeat its output back to me, and never ask me to paste passwords, API keys, OAuth credentials, or command output.\n3. Confirm the API is reachable. `cnry doctor --format json` reports it, and any project read exits non-zero with `CONNECTION_ERROR` when it is not. If it is unreachable, propose `cnry start` and wait for approval. Use `cnry start`, which is the background daemon, and not `cnry serve`, which runs in the foreground and will block you until I stop it, even though some error messages suggest it. Stop anything you started with `cnry stop`.\n4. List projects with the connected project tool or `cnry project list --format json`, and reuse one whose domain matches. Confirm the proposed name is not already assigned to a different domain. To find out whether a project has already been scanned, run `cnry technical-aeo score <project> --format json` with no `--run-id`, which reports the latest run. Read the `hasData` field, not the score: this command exits 0 and reports `aggregateScore: 0` for a project that has never been scanned, so reading the score alone would have you tell me my site scored zero. If `hasData` is true and `runStatus` is `completed` or `partial`, read that scan instead of starting a new one. If no project matches, show the exact create operation and wait for approval.\n5. Propose a bounded Site Health scan: `--max-pages 100` for a first look, plus whether dead-link checking is on (it is off unless you pass `--check-dead-links`). Show the connected operation or the exact `cnry technical-aeo run <project> --max-pages 100 --wait --format json` command with the project name filled in, and wait for separate approval before scanning. `--wait` polls for up to 15 minutes and returns only the run id and status. If the status it returns is still `queued` or `running`, the scan has not finished: do not rerun it or report results, poll `cnry technical-aeo progress <project> --run-id <run-id> --format json` until it is terminal. If `--wait` outruns your own tool timeout first, recover the run id with `cnry technical-aeo score <project> --format json` and poll the same way.\n6. When the run is `completed` or `partial`, read `cnry technical-aeo crawl <project> --run-id <run-id> --format json` first. It is the only one of these commands that carries `termination` and `complete`; the score and pages commands do not. Then read `cnry technical-aeo score <project> --run-id <run-id> --format json` and `cnry technical-aeo pages <project> --run-id <run-id> --sort score-asc --limit 10 --format jsonl`. Tell me the termination reason in plain words and whether the scan covered the whole site or stopped at a page, link, depth, or time limit. A `partial` run scored the pages it reached and not my site, so never present it as a full-site result. If it stopped early, the fix depends on the reason, so say which: a page or depth limit needs a larger budget, a time limit needs a smaller scan (a lower `--max-pages` or `--max-depth`). If the run failed or was cancelled, inspect the run error and stop.\n7. Summarize only completed evidence, then propose AI Visibility setup. Ask before you add queries, connect providers, start a provider-backed or quota-consuming run, edit files, or publish.";function qte(e,n){return e==="legacy"?"legacy":e==="platform"?"platform":n.state==="success"?n.projectCount===0?"platform":"legacy":n.state==="error"?"retry":"loading"}const Mte="2000-01-01T00:00:00.000Z",Bte=5e3;function Lte(e,n){const i=new Set,r=new Map;for(const f of n)f.trigger!==Ga.probe&&(r.has(f.projectId)||r.set(f.projectId,f.id),(f.status===Nt.completed||f.status===Nt.partial)&&i.add(f.projectId));const h=(e.every(f=>f.createdAt)?[...e].sort((f,b)=>(f.createdAt??"").localeCompare(b.createdAt??"")||f.name.localeCompare(b.name)):e).find(f=>!i.has(f.id));return h?{projectName:h.name,runId:r.get(h.id)}:null}const G4=[{value:"US",label:"United States"},{value:"CA",label:"Canada"},{value:"GB",label:"United Kingdom"},{value:"AU",label:"Australia"},{value:"NZ",label:"New Zealand"},{value:"IE",label:"Ireland"},{value:"DE",label:"Germany"},{value:"FR",label:"France"},{value:"ES",label:"Spain"},{value:"IT",label:"Italy"},{value:"NL",label:"Netherlands"},{value:"BR",label:"Brazil"},{value:"MX",label:"Mexico"},{value:"IN",label:"India"},{value:"SG",label:"Singapore"},{value:"JP",label:"Japan"}],H4=[{value:"en",label:"English"},{value:"es",label:"Spanish"},{value:"fr",label:"French"},{value:"de",label:"German"},{value:"it",label:"Italian"},{value:"pt",label:"Portuguese"},{value:"nl",label:"Dutch"},{value:"ja",label:"Japanese"}];function Ute(e,n){try{const i=new Intl.DisplayNames(["en"],{type:"region"}),r=new Intl.DisplayNames(["en"],{type:"language"}),u=e.length===2?i.of(e.toUpperCase()):void 0,h=n?r.of(n.toLowerCase()):void 0;return`${u??(e||"Country")} · ${h??(n||"Language")}`}catch{return`${e||"Country"} · ${n||"Language"}`}}function Vte(e,n){const i=e.trim().toUpperCase(),r=n.trim().toLowerCase();return{countryValid:G4.some(u=>u.value===i),languageValid:H4.some(u=>u.value===r)}}function $te(e){const n=e.replace(/^\[|\]$/g,"");return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(n)||n.includes(":")}function Kte(e){const n=e.trim();if(!n)return null;const i=/^[a-z][a-z\d+.-]*:\/\//i.test(n)?n:`https://${n}`;let r;try{r=new URL(i)}catch{return null}if(r.protocol!=="http:"&&r.protocol!=="https:")return null;const u=r.hostname.toLowerCase().replace(/^www\./,"");if(!u||u==="localhost"||$te(u)||!u.includes("."))return null;const h=u.replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return h?{canonicalDomain:u,projectName:h,displayName:u}:null}async function Gte(e,n=Ite){let i;const r=new Promise(h=>{i=setTimeout(()=>h({state:"timed-out"}),n)}),u=await Promise.race([e.then(h=>({state:"queued",run:h})),r]);return i&&clearTimeout(i),u}function Hte(e,n){e.catch(()=>{vn({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 F4(e){const n=_.useRef(J1()).current,i=_.useRef(new Set),r=_.useCallback((u,h)=>{if(h){if(i.current.has(h))return;i.current.add(h)}ay({...u,surface:e,eventId:W1()})},[e]);return{onboardingSessionId:n,emit:r}}function Kk(e,n){return e instanceof yn&&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 u0(){return l.jsxs("div",{className:"page-container max-w-3xl","aria-busy":"true","aria-live":"polite",children:[l.jsx("div",{className:"page-header",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Preparing setup"}),l.jsx("p",{className:"page-subtitle",children:"Checking the projects already on this install."})]})}),l.jsxs("div",{className:"flex items-center gap-3 rounded-lg border border-default bg-surface p-4 text-sm text-secondary",role:"status",children:[l.jsx(Rs,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading projects…"]})]})}function Fte({onRetry:e}){return l.jsxs("div",{className:"page-container max-w-3xl",children:[l.jsx("div",{className:"page-header",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Can’t load projects"}),l.jsx("p",{className:"page-subtitle",children:"Canonry could not confirm whether this install already has a project."})]})}),l.jsxs("div",{className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",tabIndex:-1,children:[l.jsx("p",{className:"text-sm font-medium text-heading",children:"Setup is paused to protect existing projects."}),l.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),l.jsx(le,{type:"button",className:"mt-4",variant:"secondary",onClick:e,children:"Retry project check"})]})]})}function Qte({projectName:e,initialRunId:n}){return l.jsx(fy,{title:"Site Health setup",children:l.jsx(Zte,{projectName:e,initialRunId:n})})}function Zte({projectName:e,initialRunId:n}){const i=Ps(),r=yt({...Fo({client:J}),enabled:!!e,retry:!1,refetchOnMount:"always"}),{onboardingSessionId:u,emit:h}=F4("site_health"),[f]=_.useState(()=>cF(n));_.useEffect(()=>{f&&uF()},[f]),_.useEffect(()=>{e&&h({flowVersion:ft,onboardingSessionId:u,event:"onboarding.started",step:"run",resumed:!!n&&!f},"onboarding.started")},[h,f,n,u,e]),_.useEffect(()=>{!e||!n||OC(e)?.runId!==n&&IC(e,n)},[n,e]);const v=yt({...oy({client:J,path:{id:n??""}}),enabled:!!n,refetchInterval:({state:T})=>{const z=T.data?.status;return z==="completed"||z==="partial"||z==="failed"||z==="cancelled"?!1:2e3},refetchIntervalInBackground:!0}).data?.status;if(_.useEffect(()=>{if(!e||!n||!v)return;if(v==="completed"||v==="partial"){h({flowVersion:ft,onboardingSessionId:u,event:"onboarding.step_completed",step:"run",method:"automatic"},"onboarding.step_completed:run"),xm(n);return}if(v!=="failed"&&v!=="cancelled")return;const T=v==="cancelled"?"run_cancelled":"run_failed";h({flowVersion:ft,onboardingSessionId:u,event:"onboarding.blocked",step:"run",action:"retry_run",reasonCode:T},`onboarding.blocked:run:${T}`),xm(n)},[h,n,u,e,v]),!e)return l.jsxs("div",{className:"page-container max-w-3xl",children:[l.jsx("div",{className:"page-header",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Project not found"}),l.jsx("p",{className:"page-subtitle",children:"This setup link does not identify a project."})]})}),l.jsx(le,{type:"button",variant:"secondary",onClick:()=>{i({to:"/projects"})},children:"View projects"})]});if(r.isPending)return l.jsxs("div",{className:"page-container max-w-3xl","aria-busy":"true","aria-live":"polite",children:[l.jsx(Po,{current:"site"}),l.jsxs("div",{className:"mt-8 flex items-center gap-3 text-sm text-secondary",role:"status",children:[l.jsx(Rs,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health setup…"]})]});if(r.isError)return l.jsxs("div",{className:"page-container max-w-3xl",children:[l.jsx("div",{className:"page-header",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Can’t resume setup"}),l.jsx("p",{className:"page-subtitle",children:"Canonry could not load the project for this Site Health scan."})]})}),l.jsxs("div",{className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",children:[l.jsx("p",{className:"text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),l.jsx(le,{type:"button",className:"mt-4",variant:"secondary",onClick:()=>{r.refetch()},children:"Retry project check"})]})]});const x=r.data.find(T=>T.name===e);if(!x)return l.jsxs("div",{className:"page-container max-w-3xl",children:[l.jsx("div",{className:"page-header",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Project not found"}),l.jsxs("p",{className:"page-subtitle",children:["Canonry could not find ",e,". It will not open a different project."]})]})}),l.jsx(le,{type:"button",variant:"secondary",onClick:()=>{i({to:"/projects"})},children:"View projects"})]});const S=()=>{i({to:"/setup",search:{onboarding:"site-health",setupProject:x.name},replace:!0})},j=()=>{i({to:"/setup",search:{experience:"legacy",onboarding:"site-health",setupProject:x.name},replace:!0})},C=()=>{h({flowVersion:ft,onboardingSessionId:u,event:"onboarding.step_completed",step:"run",method:"skipped"},"onboarding.step_completed:run"),i({to:"/setup",search:{onboarding:"complete",setupProject:x.name,skipped:"visibility"},replace:!0})};return l.jsxs("div",{className:"page-container max-w-7xl py-8 md:py-10",children:[l.jsx("h1",{className:"sr-only",children:"Set up Canonry"}),l.jsx(_.Suspense,{fallback:l.jsxs("div",{className:"space-y-5",children:[l.jsx(Po,{current:"site"}),l.jsxs("div",{className:"flex min-h-72 items-center justify-center gap-3 text-sm text-secondary",role:"status",children:[l.jsx(Rs,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health…"]})]}),children:l.jsx(Dte,{projectName:x.name,projectId:x.id,initialRunId:n,onReleaseInitialRun:S,showOnboardingActions:!0,onContinueOnboarding:j,onSkipOnboarding:C})})]})}function Yte(){const e=Fk({from:"/setup"}),n=e.onboarding==="site-health"&&!e.setupProject,i=e.onboarding==="site-health"&&e.experience!=="legacy",r=qF(),u=e.experience==="legacy"?"legacy":e.experience==="platform"?"platform":r,[h,f]=_.useState(!1),[b,v]=_.useState(void 0),x=yt({...Fo({client:J}),enabled:u==="auto",retry:!1,refetchOnMount:"always"}),S=yt({...Fc({client:J,query:{kind:Oe["site-audit"],since:Mte,limit:Bte}}),enabled:u==="auto",retry:!1,refetchOnMount:"always"}),j=u==="auto"&&x.isSuccess&&x.isFetchedAfterMount&&x.data.length===0;_.useEffect(()=>{j&&f(!0)},[j]);const C=u!=="auto"?{state:"idle"}:x.isSuccess&&x.isFetchedAfterMount?{state:"success",projectCount:x.data.length}:x.isError?{state:"error"}:{state:"loading"},T=u==="legacy"?"legacy":h||j?"platform":qte(u,C);if(e.onboarding==="complete"&&e.setupProject)return l.jsx(vte,{projectName:e.setupProject,skippedVisibility:e.skipped==="visibility"});if(n||i)return l.jsx(Qte,{projectName:e.setupProject,initialRunId:e.siteHealthRunId});const z=u==="auto"&&T==="legacy"&&!e.setupProject&&x.isSuccess;if(z&&b===void 0)return S.isError?v(null):S.isSuccess&&S.isFetchedAfterMount&&v(Lte(x.data,S.data)),l.jsx(u0,{});const q=z?b:null;return q?l.jsx(Xte,{projectName:q.projectName,runId:q.runId}):T==="legacy"?l.jsx(fte,{visibilityProjectName:e.setupProject,siteHealthOnboarding:e.onboarding==="site-health",onboardingFinish:e.onboarding==="site-health"||e.onboarding==="first-run"}):T==="loading"?l.jsx(u0,{}):T==="retry"?l.jsx(Fte,{onRetry:()=>{x.refetch()}}):l.jsx(Jte,{onActivationStarted:()=>f(!0),skipSiteScan:e.siteScan==="skip"})}function Xte({projectName:e,runId:n}){const i=Ps();return _.useEffect(()=>{i({to:"/setup",search:{onboarding:"site-health",setupProject:e,...n?{siteHealthRunId:n}:{}},replace:!0})},[i,e,n]),l.jsx(u0,{})}function Jte({onActivationStarted:e,skipSiteScan:n}){return l.jsx(fy,{title:"Site Health setup",children:l.jsx(Wte,{onActivationStarted:e,skipSiteScan:n})})}function Wte({onActivationStarted:e,skipSiteScan:n}){const i=Ps(),r=Os(),u=ite(),h=yt({...VZ({client:J}),retry:!1}),f=ci($Z()),[b,v]=_.useState(""),[x,S]=_.useState(""),[j,C]=_.useState(""),[T,z]=_.useState("US"),[q,R]=_.useState("en"),[P,M]=_.useState(!1),[L,$]=_.useState("idle"),[Q,ae]=_.useState(null),[V,Z]=_.useState(null),[X,Ce]=_.useState(!1),[tt,Ge]=_.useState(null),[Ve,ke]=_.useState(!1),Le=h.isError?void 0:h.data,B=typeof Le?.enabled=="boolean"?Le.enabled:null,W=f.isPending?f.variables.body.enabled:B,[ve,Ae]=_.useState(null),se=_.useRef(null),{onboardingSessionId:Se,emit:Me}=F4("platform");_.useEffect(()=>{Me({flowVersion:ft,onboardingSessionId:Se,event:"onboarding.started",step:"project",resumed:!1},"onboarding.started")},[Me,Se]);const xe=Kte(b),pe=x||xe?.projectName||"",ce=j||xe?.displayName||"",ue=L==="creating"||L==="dispatching",_e=V??tt,Ze=Ute(T,q),{countryValid:Ee,languageValid:Ct}=Vte(T,q),me=Ee&&Ct;_.useEffect(()=>{_e&&se.current?.focus()},[_e]);const Be=($e,ct)=>i({to:"/setup",search:{...ct?{siteHealthRunId:ct}:{},onboarding:"site-health",setupProject:$e.name},replace:!0}),Ne=async $e=>{$("dispatching"),Ge(null);try{const ct=u.mutateAsync({projectName:$e.name,projectId:$e.id,projectLabel:$e.displayName||$e.name,suppressErrorToast:!0,body:{checkDeadLinks:!0,maxPages:s3}}),Ft=await Gte(ct);if(Ft.state==="queued"){Me({flowVersion:ft,onboardingSessionId:Se,event:"run.requested",origin:"dashboard_setup",result:"queued",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0"}),lF(Ft.run.runId),await Be($e,Ft.run.runId);return}ct.then(()=>{Me({flowVersion:ft,onboardingSessionId:Se,event:"run.requested",origin:"dashboard_setup",result:"queued",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0"})},Qt=>{Me({flowVersion:ft,onboardingSessionId:Se,event:"run.requested",origin:"dashboard_setup",result:"rejected",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0",reasonCode:zc(Qt,"run_rejected")})}),Hte(ct,$e.id),await Be($e)}catch(ct){$("recovery"),Ge(Kk(ct,"The project was created, but the Site Health scan could not be started."));const Ft=zc(ct,"run_rejected");Me({flowVersion:ft,onboardingSessionId:Se,event:"run.requested",origin:"dashboard_setup",result:"rejected",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0",reasonCode:Ft}),Me({flowVersion:ft,onboardingSessionId:Se,event:"onboarding.blocked",step:"run",action:"retry_run",reasonCode:Ft},`onboarding.blocked:run:${Ft}`)}},re=async $e=>{if($e.preventDefault(),!(!xe||!n&&!P||!me||ue)){$("creating"),Z(null),Ce(!1),Ge(null);try{const ct=await aQ({name:pe,displayName:ce,canonicalDomain:xe.canonicalDomain,country:T,language:q});if(e(),ae(ct),Me({flowVersion:ft,onboardingSessionId:Se,event:"onboarding.step_completed",step:"project",method:"manual"},"onboarding.step_completed:project"),await r.invalidateQueries({queryKey:Xr({client:J})}),n){await i({to:"/setup",search:{experience:"legacy",onboarding:"first-run",setupProject:ct.name},replace:!0});return}await Ne(ct)}catch(ct){$("idle");const Ft=ct instanceof yn&&ct.statusCode===409;Ce(Ft),Z(Kk(ct,"Could not create the project. Try again.")),Me({flowVersion:ft,onboardingSessionId:Se,event:"onboarding.blocked",step:"project",action:"save",reasonCode:zc(ct,"project_create_failed")},"onboarding.blocked:project"),Ft&&(e(),r.invalidateQueries({queryKey:Xr({client:J})}))}}},Ye=()=>{Q&&!ue&&Ne(Q)},vt=()=>{ue||i({to:"/projects"})},Mn=async()=>{try{await navigator.clipboard.writeText(Pte),ke(!0)}catch{vn({tone:"negative",title:"Could not copy setup request",detail:"Open the agent quickstart to continue with the CLI instead."})}},Ht=async $e=>{Ae(null);try{const ct=await f.mutateAsync({client:J,body:{enabled:$e}});r.setQueryData(n4({client:J}),ct),ct.enabled!==$e&&Ae(`The server kept telemetry ${ct.enabled?"on":"off"}. Check its telemetry settings.`)}catch{Ae("Could not update telemetry. Try again.")}};return Q&&L==="recovery"?l.jsxs("div",{className:"page-container max-w-3xl",children:[l.jsx(Po,{current:"site"}),l.jsx("div",{className:"page-header mt-8",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Project created"}),l.jsxs("p",{className:"page-subtitle",children:[Q.displayName||Q.name," is ready. The Site Health scan needs another try."]})]})}),l.jsxs("div",{ref:se,className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",tabIndex:-1,children:[l.jsx("p",{className:"text-sm font-medium text-heading",children:tt}),l.jsx("p",{className:"mt-1 text-sm text-secondary",children:"You can retry the scan or continue setup and retry from Site Health."}),l.jsxs("div",{className:"mt-4 flex flex-wrap gap-3",children:[l.jsx(le,{type:"button",onClick:Ye,children:"Retry Site Health scan"}),l.jsx(le,{type:"button",variant:"secondary",onClick:()=>{Be(Q)},children:"Continue setup"})]})]})]}):l.jsxs("div",{className:"page-container max-w-xl py-8 md:py-12",children:[n?null:l.jsx(Po,{current:"site"}),l.jsxs("header",{className:`mb-8 ${n?"":"mt-8"}`,children:[l.jsx("h1",{id:"site-map-setup-title",className:"text-2xl font-semibold tracking-[-0.025em] text-heading",children:n?"Create a project":"Scan your site"}),l.jsx("p",{className:"mt-2 max-w-lg text-sm leading-6 text-secondary",children:n?"Add a public domain, then choose the queries you want to track. No site scan will run.":"Enter your public website to see its pages, structure, internal links, and technical SEO scores."})]}),l.jsxs("form",{"aria-labelledby":"site-map-setup-title",className:"space-y-6",onSubmit:gn(re),noValidate:!0,children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx("label",{className:"text-sm font-medium text-heading",htmlFor:"launchpad-domain",children:"Website URL"}),l.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":!!(b&&!xe),"aria-describedby":b&&!xe?"launchpad-domain-hint launchpad-domain-error":"launchpad-domain-hint",placeholder:"https://example.com",value:b,onChange:$e=>{v($e.target.value),Z(null),Ce(!1)}}),l.jsx("p",{id:"launchpad-domain-hint",className:"text-sm text-secondary",children:n?l.jsxs(l.Fragment,{children:["A public domain is still required."," ",l.jsx(at,{to:"/setup",search:{experience:"platform"},className:"font-medium text-link underline-offset-4 hover:underline",children:"Map with Site Health instead"})]}):l.jsxs(l.Fragment,{children:["Only public pages are scanned."," ",l.jsx(at,{to:"/setup",search:{experience:"platform",onboarding:"first-run",siteScan:"skip"},className:"font-medium text-link underline-offset-4 hover:underline",children:"Set up without a site scan"})]})}),b&&!xe?l.jsx("p",{id:"launchpad-domain-error",className:"text-sm text-negative",role:"alert",children:"Enter a public domain, such as example.com."}):null]}),l.jsxs("details",{className:"group border-y border-default",children:[l.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:[l.jsx("span",{className:"font-medium text-heading",children:"Project name and locale"}),l.jsxs("span",{className:"flex items-center gap-2 text-secondary",children:[Ze,l.jsx(Yc,{className:"size-4 transition-transform group-open:rotate-180 motion-reduce:transition-none","aria-hidden":"true"})]})]}),l.jsxs("div",{className:"space-y-5 border-t border-default py-4",children:[xe?l.jsxs("div",{children:[l.jsx("p",{className:"mb-3 text-sm font-medium text-heading",children:"Project"}),l.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-project-name",children:"Project name"}),l.jsx("input",{id:"launchpad-project-name",className:"setup-input h-10",type:"text",value:pe,onChange:$e=>S($e.target.value)})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-display-name",children:"Display name"}),l.jsx("input",{id:"launchpad-display-name",className:"setup-input h-10",type:"text",value:ce,onChange:$e=>C($e.target.value)})]})]})]}):null,l.jsxs("div",{children:[l.jsx("p",{className:"mb-3 text-sm font-medium text-heading",children:"Locale"}),l.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-country",children:"Country"}),l.jsx("select",{id:"launchpad-country",className:"setup-input h-10",value:T,onChange:$e=>z($e.target.value),children:G4.map($e=>l.jsx("option",{value:$e.value,children:$e.label},$e.value))})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-language",children:"Language"}),l.jsx("select",{id:"launchpad-language",className:"setup-input h-10",value:q,onChange:$e=>R($e.target.value),children:H4.map($e=>l.jsx("option",{value:$e.value,children:$e.label},$e.value))})]})]})]})]})]}),n?null:l.jsxs("label",{className:"flex min-h-11 cursor-pointer items-start gap-3 py-2",children:[l.jsx("input",{className:"mt-0.5 size-4 shrink-0 rounded border-strong bg-bg",type:"checkbox",checked:P,onChange:$e=>M($e.target.checked),"aria-label":"Allow Canonry to scan this public site."}),l.jsxs("span",{className:"flex items-center gap-1.5",children:[l.jsx("span",{className:"text-sm leading-5 text-heading",children:"Allow Canonry to scan this public site."}),l.jsx(ma,{text:zte})]})]}),_e?l.jsxs("div",{ref:se,className:"rounded-md border border-negative bg-negative-soft p-3",role:"alert",tabIndex:-1,children:[l.jsx("p",{className:"text-sm font-medium text-heading",children:_e}),X?l.jsx(le,{type:"button",variant:"secondary",size:"sm",className:"mt-3",onClick:vt,children:"View projects"}):null]}):null,l.jsxs("div",{className:"grid gap-2",children:[l.jsx(le,{className:"h-11 w-full",type:"submit",disabled:!xe||!n&&!P||!me||ue,children:L==="creating"||L==="dispatching"?l.jsxs(l.Fragment,{children:[l.jsx(Rs,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"})," ",n?"Creating project…":"Mapping site…"]}):n?"Create project":"Scan site"}),L==="dispatching"?l.jsx("span",{className:"text-center text-sm text-secondary",role:"status",children:"Opening Site Health when the scan is ready."}):null]})]}),l.jsxs("section",{className:"mt-8 border-t border-default pt-6","aria-labelledby":"agent-setup-title",children:[l.jsx("p",{id:"agent-setup-title",className:"text-sm font-medium text-heading",children:"Use your agent instead"}),l.jsx("p",{className:"mt-1 text-sm leading-5 text-secondary",children:"Copy a complete CLI setup request into any agent."}),l.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-1",children:[l.jsxs(le,{type:"button",variant:"ghost",size:"sm",className:"-ml-3",onClick:gn(Mn),children:[Ve?l.jsx(Xc,{className:"size-3.5","aria-hidden":"true"}):l.jsx(g0,{className:"size-3.5","aria-hidden":"true"}),l.jsx("span",{"aria-live":"polite",children:Ve?"Copied setup request":"Copy setup request"})]}),l.jsx(le,{asChild:!0,variant:"ghost",size:"sm",children:l.jsxs("a",{href:Ote,target:"_blank",rel:"noopener noreferrer",children:["Agent quickstart",l.jsx(N6,{className:"size-3.5","aria-hidden":"true"}),l.jsx("span",{className:"sr-only",children:" (opens in a new tab)"})]})})]})]}),B!==null?l.jsxs("section",{className:"mt-6 border-t border-default pt-5","aria-labelledby":"telemetry-title",children:[l.jsxs("label",{className:`flex min-h-11 items-start gap-3 py-2 ${f.isPending?"cursor-wait":"cursor-pointer"}`,children:[l.jsx("input",{className:"mt-0.5 size-4 shrink-0 rounded border-strong bg-bg accent-accent focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-mono-500 disabled:cursor-wait",type:"checkbox",checked:W??!1,disabled:f.isPending,onChange:$e=>{Ht($e.target.checked)},"aria-describedby":"telemetry-detail"}),l.jsxs("span",{className:"grid gap-0.5",children:[l.jsx("span",{id:"telemetry-title",className:"text-sm leading-5 text-heading",children:"Share anonymous product telemetry"}),l.jsx("span",{id:"telemetry-detail",className:"max-w-[70ch] text-sm leading-5 text-secondary",children:"Helps prioritize improvements. Canonry does not send raw domains, URLs, queries, answer content, or credentials."})]})]}),f.isPending?l.jsx("p",{className:"mt-1 text-sm text-secondary",role:"status",children:"Saving preference…"}):null,ve?l.jsx("p",{className:"mt-1 text-sm text-negative",role:"alert",children:ve}):null]}):null]})}function ene(){return l.jsx("div",{className:"page-container",children:l.jsx("section",{className:"page-section",children:l.jsxs(Ta,{className:"surface-card empty-card",children:[l.jsx("h1",{children:"Route not found"}),l.jsx("p",{children:"The current path does not map to a dashboard view."}),l.jsx(le,{asChild:!0,children:l.jsx(at,{to:"/",children:"Return to overview"})})]})})})}const Pa=qs(()=>Zi(()=>import("./ProjectPage-BCiospUp.js"),__vite__mapDeps([5,1,0,2,3,4,6,7,8,9,10,11,12]),import.meta.url),"ProjectPage"),tne=qs(()=>Zi(()=>import("./RunsPage-CzPvTnwG.js"),__vite__mapDeps([13,1,11,4,2,7,12]),import.meta.url),"RunsPage"),nne=qs(()=>Zi(()=>import("./HistoryPage-CqzQSAil.js"),__vite__mapDeps([14,1,10,11,4,2,7,12]),import.meta.url),"HistoryPage"),ane=qs(()=>Zi(()=>import("./SettingsPage-CZYckyPO.js"),__vite__mapDeps([15,1,11,4,2,7,12]),import.meta.url),"SettingsPage"),ine=qs(()=>Zi(()=>import("./BacklinksPage-CmYpSNGB.js"),__vite__mapDeps([16,1,9,2,11,4,7,12]),import.meta.url),"BacklinksPage"),sne=qs(()=>Zi(()=>import("./TrafficPage-DZw_GvaO.js"),__vite__mapDeps([17,1,8,2,11,4,7,12]),import.meta.url),"TrafficPage"),one=qs(()=>Zi(()=>import("./TrafficSourceDetailPage-CD20PJ4A.js"),__vite__mapDeps([18,1,8,3,4,2,11,7,12]),import.meta.url),"TrafficSourceDetailPage"),rne=qs(()=>Zi(()=>import("./MeasurementPropertyPage-KfpmUisb.js"),__vite__mapDeps([19,1,3,4,6,7,2,11,12]),import.meta.url),"MeasurementPropertyPage");function lne(){return l.jsx(mee,{children:l.jsx(ZQ,{children:l.jsx(dee,{})})})}const Vn=i6()({component:lne,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"||e.onboarding==="first-run"||e.onboarding==="complete"?e.onboarding:void 0,experience:e.experience==="legacy"||e.experience==="platform"?e.experience:void 0,siteScan:e.siteScan==="skip"?"skip":void 0,skipped:e.skipped==="visibility"?"visibility":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,...Object.fromEntries(["queryWorkspace","researchMode","trackingQueryId","measurementScope","measurementScopeKey","measurementMarketKey","queryClass","measurementProvider","measurementModel","measurementLocation","measurementFrom","measurementTo","measurementRevision","measurementRunId","measurementQueryKey","measurementAnswer"].map(n=>[n,typeof e[n]=="string"?e[n]:void 0]))})}),cne=Bt({getParentRoute:()=>Vn,path:"/",component:Fee,beforeLoad:async({context:e})=>{let n=e.queryClient.getQueryData(Xr({client:J}));if(n===void 0)try{n=await e.queryClient.ensureQueryData(Fo({client:J}))}catch{return}if(n.length===0)throw d0({to:"/setup"})}}),une=Bt({getParentRoute:()=>Vn,path:"/projects",component:Xee}),dne=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,$n=Bt({getParentRoute:()=>Vn,path:"/projects/$projectName",component:()=>l.jsx(pg,{}),beforeLoad:async({context:e,params:n,location:i})=>{const r=n.projectName;if(!dne.test(r))return;let u=e.queryClient.getQueryData(Xr({client:J}));if(!u)try{u=await e.queryClient.ensureQueryData(Fo({client:J}))}catch{return}const h=u.find(f=>f.id===r);if(h)throw d0({to:i.pathname.replace(`/projects/${r}`,`/projects/${encodeURIComponent(h.name)}`),replace:!0})}}),mne=Bt({getParentRoute:()=>$n,path:"/",component:()=>l.jsx(Pa,{tab:"overview"})}),pne=Bt({getParentRoute:()=>$n,path:"/portfolio",component:()=>l.jsx(Pa,{tab:"portfolio"})}),hne=Bt({getParentRoute:()=>$n,path:"/search-console",component:()=>l.jsx(Pa,{tab:"search-console"})}),fne=Bt({getParentRoute:()=>$n,path:"/conversions",component:()=>l.jsx(Pa,{tab:"conversions"})}),gne=Bt({getParentRoute:()=>$n,path:"/local",component:()=>l.jsx(Pa,{tab:"local"})}),yne=Bt({getParentRoute:()=>$n,path:"/discovery",component:()=>l.jsx(Pa,{tab:"discovery"})}),bne=Bt({getParentRoute:()=>$n,path:"/queries",component:()=>l.jsx(Pa,{tab:"queries"})}),vne=Bt({getParentRoute:()=>$n,path:"/properties/$targetKey",component:()=>l.jsx(rne,{})}),xne=Bt({getParentRoute:()=>$n,path:"/report",beforeLoad:({params:e})=>{throw d0({to:"/projects/$projectName",params:e,replace:!0})}}),wne=Bt({getParentRoute:()=>$n,path:"/activity",component:()=>l.jsx(Pa,{tab:"activity"})}),Sne=Bt({getParentRoute:()=>$n,path:"/backlinks",component:()=>l.jsx(Pa,{tab:"backlinks"})}),kne=Bt({getParentRoute:()=>$n,path:"/technical-aeo",component:()=>l.jsx(Pa,{tab:"technical-aeo"})}),jne=Bt({getParentRoute:()=>$n,path:"/history",component:()=>l.jsx(Pa,{tab:"history"})}),Ane=Bt({getParentRoute:()=>$n,path:"/settings",component:()=>l.jsx(Pa,{tab:"settings"})}),Nne=Bt({getParentRoute:()=>Vn,path:"/runs",component:tne}),Cne=Bt({getParentRoute:()=>Vn,path:"/history",component:nne}),_ne=Bt({getParentRoute:()=>Vn,path:"/settings",component:ane,beforeLoad:({context:e})=>{}}),Tne=Bt({getParentRoute:()=>Vn,path:"/setup",component:Yte}),Ene=Bt({getParentRoute:()=>Vn,path:"/backlinks",component:ine}),Rne=Bt({getParentRoute:()=>Vn,path:"/traffic",component:sne}),Dne=Bt({getParentRoute:()=>Vn,path:"/traffic/$projectName/$sourceId",component:one}),zne=Bt({getParentRoute:()=>Vn,path:"*",component:ene}),Ine=Vn.addChildren([cne,une,$n.addChildren([mne,pne,hne,fne,gne,yne,bne,vne,xne,wne,Sne,kne,jne,Ane]),Nne,Cne,_ne,Tne,Ene,Rne,Dne,zne]);function One(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const Gk=One(),Pne=Gk==="/"?"":Gk.replace(/\/$/,"");function qne(e,n){return s6({routeTree:Ine,basepath:Pne||"/",context:{queryClient:e},...n?.initialEntries})}let Hk=!1;async function Mne(e){return(await dE({client:J,body:e,keepalive:!0})).data}function Bne(){Hk||typeof window>"u"||(Hk=!0,!(rp()||To())&&(yF({send:Mne}),J.interceptors.request.use((e,n)=>{const i=n.fetch??globalThis.fetch,r=typeof n.url=="string"?n.url:void 0;return n.fetch=async(u,h)=>{try{return await i(u,h)}catch(f){throw f instanceof DOMException&&f.name==="AbortError"||km({method:e.method,route:r,network:!0}),f}},e}),J.interceptors.response.use((e,n,i)=>(km({method:n.method,route:typeof i.url=="string"?i.url:void 0,path:Une(n.url),status:e.status}),e)),window.addEventListener("error",e=>{Sm({kind:"unhandled",error:e.error})}),window.addEventListener("unhandledrejection",e=>{Sm({kind:"unhandled",error:e.reason})}),Hne()))}function Lne(e){let n=null;const i=()=>{const r=e.state.matches.at(-1);if(!r)return;bF(r.fullPath);const u=e.state.location;if(!u)return;const h=u.search&&typeof u.search=="object"?u.search:{};n&&n.pathname===u.pathname&&kF(n.search,h),n={pathname:u.pathname,search:h}};return i(),e.subscribe("onResolved",i)}function Une(e){try{return new URL(e,window.location.origin).pathname}catch{return}}const Vne={LCP:[2500,4e3],INP:[200,500],CLS:[.1,.25],FCP:[1800,3e3],TTFB:[800,1800]};function $ne(e,n){const[i,r]=Vne[e];return n<=i?"good":n<=r?"needs-improvement":"poor"}function Kne(){let e=0,n=0,i=-1/0,r=-1/0;return{add(u){u.hadRecentInput||(u.startTime-r<1e3&&u.startTime-i<5e3?n+=u.value:(n=u.value,i=u.startTime),r=u.startTime,e=Math.max(e,n))},value:()=>e}}function Gne(){let e=0;return{add(n){n.interactionId&&(e=Math.max(e,n.duration))},value:()=>e}}function Hne(){if(typeof PerformanceObserver>"u")return;const e=new Set,n=(b,v)=>{e.has(b)||!Number.isFinite(v)||(e.add(b),AF(b,$ne(b,v)))},i=(b,v,x={})=>{try{new PerformanceObserver(S=>v(S.getEntries())).observe({type:b,buffered:!0,...x})}catch{}};try{const b=performance.getEntriesByType("navigation")[0];b&&b.responseStart>0&&n("TTFB",b.responseStart)}catch{}i("paint",b=>{const v=b.find(x=>x.name==="first-contentful-paint");v&&n("FCP",v.startTime)});let r=0;i("largest-contentful-paint",b=>{const v=b.at(-1);v&&(r=v.startTime)});const u=Kne();i("layout-shift",b=>{for(const v of b)u.add({startTime:v.startTime,value:v.value??0,hadRecentInput:v.hadRecentInput===!0})});const h=Gne();i("event",b=>{for(const v of b)h.add(v)},{durationThreshold:40});const f=()=>{r>0&&n("LCP",r),n("CLS",u.value()),h.value()>0&&n("INP",h.value())};document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&f()}),window.addEventListener("pagehide",f)}const Fne=6e4,Qne="Anyone with this password can sign in to this dashboard.",Pr={label:"Root API key",help:"To create the password from here, enter the root API key (apiKey in config.yaml). It is used once and not saved.",missing:"Enter the root API key.",rejected:"That is not the root API key for this install.",show:"Show passwords and key"};function Zne(){const e=_.useRef(eQ()).current,[n,i]=_.useState(e?"ready":"checking"),[r,u]=_.useState(null),[h,f]=_.useState(null),[b,v]=_.useState(e),[x,S]=_.useState(!1),[j,C]=_.useState(""),[T,z]=_.useState(""),[q,R]=_.useState(""),[P,M]=_.useState(!1),[L,$]=_.useState("password"),[Q,ae]=_.useState(!1),[V,Z]=_.useState(""),[X,Ce]=_.useState(null),[tt,Ge]=_.useState(!1),[Ve,ke]=_.useState(!1),Le=_.useRef(null),B=_.useRef(null),W=_.useRef(null),ve=()=>{const me=r?`${r.name}:${r.role}`:e?"api-key:explicit":h?`api-key:${h.id}`:"no-accounts";if(!Le.current||W.current!==me){B.current?.clear();const Be=HQ();B.current=Be,Le.current=qne(Be),Lne(Le.current),W.current=me}return{queryClient:B.current,router:Le.current}},Ae=me=>me.authRequired?(S(!0),u(me.user),f(null),v(!1),i(me.user?"ready":"account-login"),!0):!1;_.useEffect(()=>{let me=!1;const Be=async(Ne,re=!1)=>{try{const Ye=await ag();if(me)return;f(Ye),v(!1),i("ready")}catch(Ye){if(me)return;if(re&&Ye instanceof yn&&Ye.statusCode===401)return dQ().then(()=>{me||(Ce(null),f(null),v(!1),ke(!0),i("login"))}).catch(vt=>{me||(Ce(vt instanceof Error?vt.message:"Could not clear the invalid session"),i(Ne))});Ce(Ye instanceof Error?Ye.message:"Could not verify API key access"),i(Ne)}};return e?(Be("api-key-error"),()=>{me=!0}):(Promise.allSettled([HS(),GS()]).then(([Ne,re])=>{if(me||Ne.status==="fulfilled"&&Ae(Ne.value))return;if(re.status==="rejected"){const vt=re.reason;Ce(vt instanceof Error?vt.message:"Failed to reach the Canonry API"),i("login");return}const Ye=re.value;Ye.authenticated?(v(!0),Be("api-key-error",!0)):(f(null),v(!1),i(Ye.setupRequired?"setup":"login"))}),()=>{me=!0})},[]),_.useEffect(()=>{if(n!=="ready"||e)return;const me=setInterval(()=>{if(x){HS().then(Be=>{Be.authRequired&&!Be.user&&(ke(!0),u(null),f(null),i("account-login"))}).catch(()=>{});return}GS().then(Be=>{Be.authenticated||(ke(!0),f(null),i(Be.setupRequired?"setup":"login"))}).catch(()=>{})},Fne);return KS(()=>{ke(!0),u(null),f(null),v(!1),i(x?"account-login":"login")}),()=>{clearInterval(me),KS(null)}},[n,x,e]);const se=async me=>{if(me.preventDefault(),!T.trim()||T.trim().length<8){Ce("Password must be at least 8 characters");return}if(T!==q){Ce("Passwords do not match");return}const Be=V.trim();if(Q&&!Be){Ce(Pr.missing);return}Ge(!0),Ce(null);try{if(!(await lQ(T.trim(),Q?Be:void 0)).authenticated){Ce("Setup failed");return}z(""),R(""),Z(""),ae(!1),M(!1),ke(!1),f(null),v(!0),i("checking");try{const re=await ag();f(re),v(!1),i("ready")}catch(re){Ce(re instanceof Error?re.message:"Could not verify API key access"),i("api-key-error")}}catch(Ne){if(Ne instanceof yn&&Ne.statusCode===401&&Ne.code==="AUTH_REQUIRED"){Ce(Q?Pr.rejected:null),ae(!0);return}Ce(Ne instanceof yn||Ne instanceof Error?Ne.message:"Setup failed")}finally{Ge(!1)}},Se=me=>{z(me),Ce(null)},Me=me=>{Z(me),Ce(null)},xe=me=>{R(me),Ce(null)},pe=async me=>{if(me.preventDefault(),!!T.trim()){Ge(!0),Ce(null);try{if(!(L==="api-key"?await uQ(T.trim()):await cQ(T.trim())).authenticated){Ce(L==="api-key"?"Invalid API key":"Incorrect password");return}const Ne=await ag();f(Ne),v(!1),z(""),M(!1),ke(!1),i("ready")}catch(Be){Ce(Be instanceof yn||Be instanceof Error?Be.message:"Authentication failed")}finally{Ge(!1)}}},ce=me=>{$(me),z(""),M(!1),Ce(null)},ue=async me=>{if(me.preventDefault(),!(!j.trim()||!T)){Ge(!0),Ce(null);try{const Be=await mQ(j.trim(),T);if(!Be.user){Ce("Incorrect name or password.");return}z(""),ke(!1),u(Be.user),f(null),v(!1),i("ready")}catch(Be){Ce(Be instanceof yn?Be.message:"Incorrect name or password.")}finally{Ge(!1)}}};if(n==="ready"){const{queryClient:me,router:Be}=ve();return l.jsx(IQ,{account:r,apiKey:h,apiKeyPending:b,children:l.jsx(o6,{client:me,children:l.jsx(r6,{router:Be})})})}const _e=T.trim(),Ze=T.length>0&&_e.length<8,Ee=q.length>0&&T!==q,Ct=_e.length>=8&&T===q&&(!Q||V.trim().length>0);return l.jsx("div",{className:"min-h-screen bg-bg px-4 py-8",children:l.jsxs("div",{className:"mx-auto flex min-h-[calc(100vh-4rem)] max-w-md flex-col items-center justify-center gap-5",children:[l.jsxs("div",{"data-testid":"auth-brand",className:"flex items-center gap-2.5",children:[l.jsx("img",{className:"size-7",src:"./favicon.svg",alt:"","aria-hidden":"true"}),l.jsx("span",{className:"text-lg font-semibold tracking-tight text-heading",children:"Canonry"})]}),l.jsx(Ta,{className:"surface-card w-full",children:n==="checking"?l.jsx(ko,{className:"py-8",children:l.jsx("p",{className:"supporting-copy text-center",children:"Connecting to Canonry…"})}):n==="api-key-error"?l.jsxs(l.Fragment,{children:[l.jsxs(Lr,{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),l.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Could not verify API key access"})]}),l.jsxs(ko,{className:"space-y-4",children:[l.jsx("p",{className:"supporting-copy",children:X??"Canonry could not verify this session’s access, so the dashboard stayed locked."}),l.jsx(le,{type:"button",className:"w-full",onClick:()=>{window.location.reload()},children:"Try again"})]})]}):n==="account-login"?l.jsxs(l.Fragment,{children:[l.jsxs(Lr,{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),l.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Sign in to Canonry"})]}),l.jsxs(ko,{children:[Ve?l.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,l.jsxs("form",{className:"space-y-4",onSubmit:gn(ue),children:[l.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-name",children:[l.jsx("span",{className:"text-xs font-medium text-secondary",children:"Name"}),l.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",name:"username",autoComplete:"username",value:j,onChange:me=>{C(me.target.value),Ce(null)},"aria-invalid":!!X,"aria-describedby":X?"account-login-error":void 0})]}),l.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-password",children:[l.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),l.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",name:"password",autoComplete:"current-password",value:T,onChange:me=>Se(me.target.value),"aria-invalid":!!X,"aria-describedby":X?"account-login-error":void 0})]}),X?l.jsx("p",{id:"account-login-error",role:"alert",className:"text-sm text-negative-400",children:X}):null,l.jsx(le,{type:"submit",disabled:tt||!j.trim()||!T,children:tt?"Signing in…":"Sign in"})]})]})]}):n==="setup"?l.jsxs(l.Fragment,{children:[l.jsxs(Lr,{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),l.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Create a dashboard password"}),l.jsx(Tm,{children:Qne})]}),l.jsx(ko,{children:l.jsxs("form",{className:"space-y-4",onSubmit:gn(se),children:[l.jsxs("div",{className:"space-y-1.5",children:[l.jsx("label",{className:"block text-xs font-medium text-secondary",htmlFor:"dashboard-password-new",children:"Password"}),l.jsx("input",{autoFocus:!0,id:"dashboard-password-new",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:P?"text":"password",name:"new-password",autoComplete:"new-password",minLength:8,required:!0,value:T,onChange:me=>Se(me.target.value),"aria-invalid":Ze,"aria-describedby":"dashboard-password-new-help"}),l.jsx("span",{id:"dashboard-password-new-help","aria-live":"polite",className:Ze?"block text-sm text-negative-400":"block text-sm text-secondary",children:Ze?"Enter at least 8 characters.":"Use at least 8 characters."})]}),l.jsxs("div",{className:"space-y-1.5",children:[l.jsx("label",{className:"block text-xs font-medium text-secondary",htmlFor:"dashboard-password-confirm",children:"Confirm password"}),l.jsx("input",{id:"dashboard-password-confirm",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:P?"text":"password",name:"confirm-password",autoComplete:"new-password",minLength:8,required:!0,value:q,onChange:me=>xe(me.target.value),"aria-invalid":Ee,"aria-describedby":"dashboard-password-confirm-help"}),l.jsx("span",{id:"dashboard-password-confirm-help","aria-live":"polite",className:Ee?"block text-sm text-negative-400":"block text-sm text-secondary",children:Ee?"Passwords do not match.":"Enter the same password again."})]}),Q?l.jsxs("div",{className:"space-y-1.5",children:[l.jsx("label",{className:"block text-xs font-medium text-secondary",htmlFor:"dashboard-setup-root-key",children:Pr.label}),l.jsx("input",{autoFocus:!0,id:"dashboard-setup-root-key",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:P?"text":"password",name:"apiKey",autoComplete:"off",spellCheck:!1,required:!0,value:V,onChange:me=>Me(me.target.value),"aria-invalid":X===Pr.rejected,"aria-describedby":"dashboard-setup-root-key-help"}),l.jsx("span",{id:"dashboard-setup-root-key-help","aria-live":"polite",className:"block text-sm text-secondary",children:Pr.help})]}):null,l.jsxs("label",{className:"flex min-h-10 cursor-pointer items-center gap-2 text-sm text-secondary",htmlFor:"dashboard-password-show",children:[l.jsx("input",{id:"dashboard-password-show",type:"checkbox",checked:P,onChange:me=>M(me.target.checked)}),Q?Pr.show:"Show passwords"]}),X?l.jsx("p",{id:"dashboard-password-setup-error",role:"alert",className:"text-sm text-negative-400",children:X}):null,l.jsx(le,{type:"submit",disabled:tt||!Ct,children:tt?"Creating password…":"Create password and continue"})]})})]}):l.jsxs(l.Fragment,{children:[l.jsxs(Lr,{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),l.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Sign in to Canonry"}),l.jsx(Tm,{children:L==="api-key"?"Enter an API key from this Canonry install. This opens the dashboard with that key’s access and does not change the password.":"Enter your dashboard password to continue."})]}),l.jsxs(ko,{children:[Ve?l.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,l.jsxs("form",{className:"space-y-4",onSubmit:gn(pe),children:[l.jsxs("label",{className:"block space-y-1.5",htmlFor:"dashboard-password-current",children:[l.jsx("span",{className:"text-xs font-medium text-secondary",children:L==="api-key"?"Canonry API key":"Password"}),l.jsx("input",{autoFocus:!0,id:"dashboard-password-current",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:P?"text":"password",name:L==="api-key"?"apiKey":"password",autoComplete:L==="api-key"?"off":"current-password",spellCheck:!1,required:!0,value:T,onChange:me=>Se(me.target.value),"aria-invalid":!!X,"aria-describedby":X?"dashboard-password-login-error":void 0})]}),l.jsxs("label",{className:"flex min-h-10 cursor-pointer items-center gap-2 text-sm text-secondary",htmlFor:"dashboard-login-password-show",children:[l.jsx("input",{id:"dashboard-login-password-show",type:"checkbox",checked:P,onChange:me=>M(me.target.checked)}),L==="api-key"?"Show API key":"Show password"]}),X?l.jsx("p",{id:"dashboard-password-login-error",role:"alert",className:"text-sm text-negative-400",children:X}):null,l.jsx(le,{type:"submit",disabled:tt||!T.trim(),children:tt?"Signing in…":"Open dashboard"}),l.jsx(le,{type:"button",variant:"ghost",onClick:()=>ce(L==="api-key"?"password":"api-key"),children:L==="api-key"?"Use dashboard password instead":"Forgot password? Use API key"})]})]})]})})]})})}const Q4=document.getElementById("root");if(!Q4)throw new Error("Expected #root element for web app bootstrap.");Bne();I6.createRoot(Q4).render(l.jsx(_.StrictMode,{children:l.jsx(Zne,{})}));export{dJ as $,To as A,le as B,Ec as C,Pn as D,gn as E,Hoe as F,Zoe as G,Qoe as H,ma as I,Fie as J,Zie as K,Qae as L,bre as M,Goe as N,Zae as O,Bae as P,Fae as Q,Fa as R,qk as S,Sn as T,Xae as U,Qie as V,Yae as W,ga as X,XQ as Y,Ire as Z,Ore as _,yre as a,Rie as a$,iZ as a0,Lae as a1,bse as a2,kse as a3,vie as a4,gse as a5,Soe as a6,Aoe as a7,joe as a8,_ie as a9,zoe as aA,o4 as aB,Fi as aC,Doe as aD,r0 as aE,_9 as aF,T9 as aG,jae as aH,kae as aI,ise as aJ,use as aK,dse as aL,yn as aM,mse as aN,uie as aO,JQ as aP,uX as aQ,Gg as aR,pse as aS,Wd as aT,Xoe as aU,a0 as aV,So as aW,tZ as aX,$Q as aY,Pse as aZ,mW as a_,Cie as aa,Mie as ab,vn as ac,_oe as ad,Toe as ae,zie as af,Eoe as ag,Iie as ah,Eie as ai,Die as aj,Noe as ak,Coe as al,koe as am,Tie as an,e4 as ao,Oe as ap,Nt as aq,F0 as ar,Roe as as,Moe as at,Ioe as au,Poe as av,Ooe as aw,qoe as ax,tse as ay,ry as az,Sse as b,fie as b$,$ae as b0,Uae as b1,Li as b2,Tre as b3,Hae as b4,rie as b5,BB as b6,iie as b7,Gae as b8,wse as b9,Yoe as bA,Wse as bB,toe as bC,coe as bD,voe as bE,boe as bF,roe as bG,goe as bH,woe as bI,aoe as bJ,doe as bK,moe as bL,poe as bM,noe as bN,uoe as bO,ioe as bP,hoe as bQ,soe as bR,foe as bS,loe as bT,yoe as bU,xoe as bV,Wee as bW,ooe as bX,sie as bY,yie as bZ,gie as b_,Kae as ba,hZ as bb,MZ as bc,Vse as bd,Fse as be,$se as bf,eie as bg,nie as bh,XK as bi,aie as bj,NZ as bk,Use as bl,WK as bm,$g as bn,tie as bo,GF as bp,Kse as bq,Lse as br,_Z as bs,Gse as bt,hse as bu,Hse as bv,nre as bw,are as bx,Oie as by,t4 as bz,Sae as c,sQ as c$,Hie as c0,KF as c1,i3 as c2,su as c3,s3 as c4,Es as c5,Yse as c6,Aae as c7,UZ as c8,eoe as c9,GZ as cA,ute as cB,Pre as cC,kre as cD,cW as cE,Sre as cF,ate as cG,Qse as cH,Ese as cI,wre as cJ,Ose as cK,Rse as cL,nP as cM,iB as cN,Zse as cO,xre as cP,zse as cQ,hre as cR,bW as cS,nQ as cT,rZ as cU,vW as cV,mie as cW,Uq as cX,qae as cY,pie as cZ,die as c_,Nse as ca,Vae as cb,WS as cc,wie as cd,Sie as ce,jse as cf,Ase as cg,kie as ch,jie as ci,Nie as cj,Aie as ck,yu as cl,Fo as cm,UC as cn,Tse as co,_se as cp,YJ as cq,Wg as cr,Nm as cs,e0 as ct,Cm as cu,_m as cv,dW as cw,bZ as cx,jo as cy,Em as cz,aZ as d,Pae as d$,jre as d0,Are as d1,Nre as d2,_re as d3,hie as d4,pZ as d5,bie as d6,oJ as d7,Boe as d8,gQ as d9,dy as dA,cte as dB,Gie as dC,Jr as dD,tk as dE,nse as dF,sse as dG,rse as dH,lse as dI,ase as dJ,ose as dK,cse as dL,eg as dM,ese as dN,ere as dO,Zee as dP,Wae as dQ,L1 as dR,Cse as dS,Joe as dT,tre as dU,Wie as dV,Jae as dW,Xie as dX,Jie as dY,Yie as dZ,Woe as d_,$ie as da,Uoe as db,Voe as dc,$oe as dd,Loe as de,vse as df,Bie as dg,Lie as dh,Uie as di,Kie as dj,Vie as dk,uy as dl,Fc as dm,zre as dn,gu as dp,Xse as dq,Jse as dr,ZF as ds,lie as dt,cie as du,xie as dv,Pie as dw,qie as dx,fy as dy,mp as dz,nZ as e,dre as e$,m9 as e0,za as e1,p9 as e2,Bq as e3,Dse as e4,yse as e5,jP as e6,qse as e7,Ise as e8,Bse as e9,Iae as eA,Tae as eB,u2 as eC,Zi as eD,Oa as eE,_ae as eF,Sm as eG,oie as eH,MY as eI,sre as eJ,ire as eK,ite as eL,lre as eM,fW as eN,Nae as eO,fre as eP,gre as eQ,ore as eR,rre as eS,Cae as eT,ure as eU,pre as eV,cre as eW,mre as eX,Po as eY,Oae as eZ,Rae as e_,Mse as ea,mk as eb,ye as ec,wae as ed,xae as ee,vae as ef,bae as eg,fae as eh,hae as ei,yae as ej,gae as ek,pae as el,mae as em,sae as en,oae as eo,dae as ep,uae as eq,cae as er,rae as es,lae as et,iae as eu,aae as ev,nae as ew,oT as ex,sT as ey,Tq as ez,um as f,Eae as f0,mq as f1,zae as f2,Dae as f3,Ere as g,Cre as h,Rre as i,Dre as j,t0 as k,Wc as l,vre as m,cK as n,mJ as o,wF as p,fse as q,Koe as r,xse as s,eZ as t,my as u,Foe as v,Ta as w,Mae as x,J as y,rp as z};
86
+ competitor2.com`,value:bi,onChange:H=>Ji(H.target.value)})]}),tn?l.jsx("p",{className:"text-negative-400 text-sm",children:tn}):null,l.jsxs("div",{className:"setup-nav",children:[l.jsx(le,{type:"button",variant:"outline",onClick:Bn,children:"Back"}),l.jsx("div",{className:"flex gap-2",children:xi.length===0?l.jsx(le,{type:"button",onClick:Tl,children:"Continue without competitors"}):l.jsxs(l.Fragment,{children:[l.jsx(le,{type:"button",variant:"outline",onClick:Tl,children:"Skip"}),l.jsx(le,{type:"button",disabled:wl,onClick:gn(Nl),children:wl?"Saving...":`Save ${xi.length} competitor${xi.length!==1?"s":""}`})]})})]})]})]});case 4:{const H=Wa.data,Xe=H?.status??(ts===tt?.id?tt.status:void 0),Si=Xe==="completed"||Xe==="partial"||Xe==="failed"||Xe==="cancelled",as=H?.snapshots??[],La=H?.queryCounts,Rl=Xe?Bk(Xe,as.length):!1,Nn=Ge&&!Ja,ki=An??(H?.error?JQ(H.error):Xe==="cancelled"?"The sweep was cancelled before it produced a baseline.":(Xe==="completed"||Xe==="partial")&&as.length===0?"The sweep finished without producing any snapshots.":tt?.statusDetail||"The sweep did not produce a baseline.");let ni=null;return Nn||Rl?ni=l.jsx(Sn,{tone:"positive",children:"Complete"}):An&&!Ja?ni=l.jsx(Sn,{tone:"negative",children:"Failed"}):Si?ni=l.jsx(Sn,{tone:"negative",children:Xe==="cancelled"?"Cancelled":"Failed"}):Ja&&(ni=l.jsx(Sn,{tone:"caution",children:"Running"})),l.jsxs(Ta,{className:"surface-card step-card",children:[l.jsxs("div",{className:"section-head",children:[l.jsxs("div",{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:T?"Step 2 of 2":"Step 5 of 5"}),l.jsx("h2",{children:So()?"AI Visibility":"Launch first run"})]}),ni]}),Nn?l.jsxs("div",{className:"compact-stack",children:[l.jsxs("p",{className:"text-secondary",children:["Setup is complete. ",l.jsx("span",{className:"text-strong font-medium",children:Ne})," already has a successful answer-visibility baseline."]}),l.jsxs("div",{className:"setup-nav",children:[l.jsx("span",{}),l.jsx(le,{type:"button",onClick:()=>ct(),children:f?"Finish setup":"Open project dashboard →"})]})]}):!Ja&&So()?l.jsxs("div",{className:"compact-stack",children:[Ne?l.jsx(vW,{projectName:Ne}):l.jsx("p",{className:"text-sm text-secondary",children:a0}),An&&l.jsx("p",{role:"alert",className:"text-sm text-negative",children:An}),l.jsxs("div",{className:"setup-nav",children:[l.jsx("span",{}),l.jsx(le,{type:"button",onClick:$e,children:"Open project dashboard →"})]})]}):Ja?Si?Rl?l.jsxs("div",{className:"compact-stack",children:[l.jsxs("p",{className:"text-neutral",children:["Sweep complete. Your first answer-visibility snapshot for"," ",l.jsx("span",{className:"text-heading font-medium",children:Ne}),":"]}),l.jsxs("div",{className:"grid grid-cols-3 gap-2 mt-1",children:[l.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[l.jsx("p",{className:"text-xs font-medium text-secondary",children:"Mentioned"}),l.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:La?l.jsxs(l.Fragment,{children:[La.mentionedQueries,l.jsxs("span",{className:"text-faint text-lg",children:[" / ",La.totalQueries]})]}):"Unavailable"}),l.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries naming your brand"})]}),l.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[l.jsx("p",{className:"text-xs font-medium text-secondary",children:"Cited"}),l.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:La?l.jsxs(l.Fragment,{children:[La.citedQueries,l.jsxs("span",{className:"text-faint text-lg",children:[" / ",La.totalQueries]})]}):"Unavailable"}),l.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries citing your site"})]}),l.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[l.jsx("p",{className:"text-xs font-medium text-secondary",children:"Results"}),l.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:as.length}),l.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"completed engine checks"})]})]}),!b&&Ne?l.jsx(lte,{projectName:Ne}):null,l.jsxs("div",{className:"setup-nav",children:[l.jsx("span",{}),l.jsx(le,{type:"button",onClick:()=>ct(),children:f?"Finish setup":"Open project dashboard →"})]})]}):l.jsxs("div",{className:"compact-stack",children:[l.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[l.jsx("p",{children:ki}),l.jsx("p",{className:"mt-1 text-xs text-secondary",children:So()?a0:x?"Fix provider or query configuration if needed, then retry without leaving setup.":"Ask an administrator to review the provider and query configuration."})]}),l.jsxs("div",{className:"setup-nav",children:[x&&!So()?l.jsx(le,{type:"button",variant:"outline",asChild:!0,children:l.jsx(at,{to:"/settings",children:"Configure providers"})}):l.jsx("span",{}),So()||!x?l.jsx(le,{type:"button",onClick:$e,children:"Open project dashboard →"}):l.jsx(le,{type:"button",disabled:vi||!!ei,onClick:gn(wi),children:vi?"Retrying...":"Retry visibility sweep"})]})]}):l.jsxs("div",{className:"compact-stack",children:[l.jsx("p",{className:"text-neutral",children:"Sweep running. This usually takes 30 to 60 seconds."}),l.jsx("div",{className:"rounded-md border border-default bg-surface p-3 text-xs text-muted",children:l.jsxs("p",{children:["Status: ",l.jsx("span",{className:"text-neutral",children:Xe??"queued"})]})}),Wa.isError&&l.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[l.jsx("p",{children:Wa.error instanceof Error?Wa.error.message:"Could not refresh the sweep status."}),l.jsx(le,{type:"button",variant:"outline",size:"sm",className:"mt-2",onClick:()=>{Wa.refetch()},children:"Retry status check"})]}),l.jsxs("div",{className:"setup-nav",children:[l.jsx("span",{}),l.jsx(le,{type:"button",variant:"outline",onClick:f?()=>ct():$e,children:f?"Finish setup":"Watch on project page"})]})]}):l.jsxs("div",{className:"compact-stack",children:[l.jsxs("p",{className:"supporting-copy",children:["Your queries are saved. Run a first sweep to get a baseline for"," ",l.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."]}),(ei||An)&&l.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[l.jsx("p",{children:An??ei}),l.jsx("p",{className:"mt-1 text-xs text-secondary",children:"Resolve the blocker above, then retry the sweep here."})]}),l.jsxs("div",{className:"setup-nav",children:[l.jsx(le,{type:"button",variant:"outline",onClick:Bn,children:"Back"}),l.jsx(le,{type:"button",variant:"ghost",onClick:Ft,children:"Finish without running"}),va==="no_provider"&&!T?l.jsx(le,{type:"button",asChild:!0,children:l.jsx(at,{to:"/settings",children:"Configure a provider"})}):l.jsx(le,{type:"button",disabled:vi||!!ei,title:ei,onClick:gn(wi),children:vi?"Launching...":An?"Retry visibility sweep":"Launch visibility sweep"})]})]})]})}default:return null}})();return l.jsxs("div",{className:T?"page-container visibility-setup":"page-container",children:[f?l.jsx(Po,{current:"visibility"}):null,l.jsxs("div",{className:"page-header",children:[l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{ref:u?h:void 0,tabIndex:u?-1:void 0,className:"page-title",children:u?"Set up AI Visibility":"Setup"}),l.jsx("p",{className:"page-subtitle",children:u?"Connect an answer engine, then choose queries for your first sweep.":"Create a project and run its first visibility check."})]}),f?l.jsx("div",{className:"page-header-right",children:l.jsx(le,{type:"button",variant:"outline",className:"min-h-11",onClick:Ft,children:"Skip AI Visibility"})}):null]}),f?null:l.jsx(hte,{current:T?B===4?1:0:B,labels:T?mte:dte}),l.jsxs("section",{className:"setup-wizard",children:[eo,ti]})]})}const mg="canonry mcp install --client claude-code",yte="https://github.com/Canonry/canonry/blob/main/docs/mcp.md";function bte(){const e=_.useRef(J1()).current,n=_.useRef(new Set),i=_.useCallback((r,u)=>{n.current.has(r)||(n.current.add(r),ay({...u,flowVersion:ft,onboardingSessionId:e,surface:"platform",eventId:W1()}))},[e]);return _.useEffect(()=>{i("started",{event:"onboarding.started",step:"finish",resumed:!1})},[i]),_.useCallback(r=>{i(`action:${r}`,{event:"onboarding.step_completed",step:"finish",method:"manual",nextAction:r})},[i])}const vp=_.createContext(()=>{});function vte({projectName:e,skippedVisibility:n=!1}){const i=yt({...MY({client:J,path:{name:e}}),retry:!1}),r=i.data?.hasData?i.data:null,u=bte(),h=Vk(e,Oe["site-audit"]),f=Vk(e,Oe["answer-visibility"]),b={...h?{site:h,fixes:h}:{},...xte(f,n)};return l.jsx(vp.Provider,{value:u,children:l.jsxs("div",{className:"page-container max-w-6xl py-8 md:py-10",children:[l.jsx(Po,{current:"done",outcomes:b}),l.jsxs("header",{className:"relative mx-auto mt-12 max-w-2xl text-center md:mt-16",children:[l.jsx(wte,{}),l.jsx("p",{className:"onb-reveal mt-6 text-sm font-medium text-positive",style:Ra(250),children:"Setup complete"}),l.jsx("h1",{className:"onb-reveal mt-2 text-5xl font-semibold tracking-tight text-heading md:text-6xl",style:Ra(350),children:"You’re set."}),l.jsxs("p",{className:"onb-reveal mx-auto mt-4 max-w-xl text-lg text-secondary",style:Ra(450),children:["Canonry is tracking ",l.jsx("span",{className:"font-medium text-heading",children:e}),". Here’s how to get the most out of it from here."]})]}),l.jsxs("div",{className:"mt-14 grid gap-4 md:grid-cols-6",children:[l.jsx(Gd,{className:"md:col-span-4 md:row-span-2",delayMs:600,labelledBy:"onb-agent-heading",children:l.jsx(jte,{projectName:e})}),l.jsx(Gd,{className:"md:col-span-2 md:row-span-2",delayMs:700,labelledBy:"onb-data-heading",children:l.jsx(Cte,{projectName:e})}),l.jsx(Gd,{className:"md:col-span-3",delayMs:800,labelledBy:"onb-schedule-heading",children:l.jsx(Ete,{projectName:e})}),l.jsx(Gd,{className:"md:col-span-3",delayMs:900,labelledBy:"onb-alerts-heading",children:l.jsx(Rte,{projectName:e,score:r?.aggregateScore??null})})]}),l.jsxs("div",{className:"onb-reveal mt-12 flex flex-col items-center gap-3 sm:flex-row sm:justify-center",style:Ra(1e3),children:[l.jsx(le,{asChild:!0,className:"h-11 rounded-full px-6 text-base md:h-11",children:l.jsxs(at,{to:"/projects/$projectName",params:{projectName:e},replace:!0,onClick:()=>u("open_project"),children:["Open ",e,l.jsx(qc,{className:"size-4","aria-hidden":"true"})]})}),l.jsx(le,{asChild:!0,variant:"ghost",className:"h-11 rounded-full px-5 md:h-11",children:l.jsx(at,{to:"/projects/$projectName/technical-aeo",params:{projectName:e},replace:!0,onClick:()=>u("review_page_health"),children:"Review page health"})})]})]})})}function Vk(e,n){const i=yt({...e4({client:J,path:{name:e},query:{kind:n,limit:20}}),retry:!1,refetchInterval:r=>$k(r.state.status==="success"?{isSuccess:!0,data:r.state.data}:{isSuccess:!1})==="pending"?5e3:!1});return $k(i)}function xte(e,n){return e===void 0?{}:n?{visibility:"skipped"}:{visibility:e}}function $k(e){if(!e.isSuccess||!e.data)return"unknown";const n=e.data.filter(i=>i.trigger!==Ga.probe);if(!n.some(i=>i.status===Nt.completed||i.status===Nt.partial))return n.some(i=>i.status===Nt.queued||i.status===Nt.running)?"pending":n.length>0?"incomplete":"skipped"}function Ra(e){return{"--onb-delay":`${e}ms`}}function wte(){return l.jsx("div",{className:"onb-check relative mx-auto size-20","aria-hidden":"true",children:l.jsxs("svg",{viewBox:"0 0 80 80",className:"relative size-20",children:[l.jsx("circle",{className:"onb-check-ring",cx:"40",cy:"40",r:"36",fill:"none",strokeWidth:"3",pathLength:"1"}),l.jsx("path",{className:"onb-check-mark",d:"M25 41 L35 51 L56 30",fill:"none",strokeWidth:"4",strokeLinecap:"round",strokeLinejoin:"round",pathLength:"1"})]})})}function Gd({className:e="",delayMs:n,labelledBy:i,children:r}){return l.jsx("section",{"aria-labelledby":i,className:`onb-reveal onb-tile flex flex-col overflow-hidden rounded-2xl border border-default bg-surface p-6 md:p-7 ${e}`,style:Ra(n),children:r})}function xp({id:e,eyebrow:n,title:i,children:r}){return l.jsxs("div",{children:[l.jsx("p",{className:"text-xs font-medium uppercase tracking-wide text-muted",children:n}),l.jsx("h2",{id:e,className:"mt-1.5 text-2xl font-semibold tracking-tight text-heading",children:i}),l.jsx("p",{className:"mt-2 text-sm text-secondary",children:r})]})}const Hd=[{id:"diagnose",label:"Diagnose",prompt:"Why did we lose citations this week?",calls:["canonry_insights_list","canonry_competitor_landscape"],reply:"Two engines started citing a competitor’s comparison page instead of yours. Want me to draft one that answers the same query?"},{id:"fix",label:"Fix",prompt:"Fix the weakest pages on the site.",calls:["canonry_technical_aeo_pages","canonry_site_health_page_audit"],reply:"The lowest-scoring pages are missing structured data and answer-first intros. I’ve written the changes for you to review."},{id:"automate",label:"Automate",prompt:"Re-check everything every Monday and tell me in Slack.",calls:["canonry_schedule_set","canonry_agent_webhook_attach"],reply:"Done. A sweep runs every Monday, and I’ll post what changed to Slack."}],Ste=9e3;function kte(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function jte({projectName:e}){const n=_.useContext(vp),[i,r]=_.useState(0),[u,h]=_.useState(!1),[f,b]=_.useState(!1);_.useEffect(()=>{if(u||kte())return;const S=window.setTimeout(()=>r(j=>(j+1)%Hd.length),Ste);return()=>window.clearTimeout(S)},[i,u]);const v=async()=>{try{await navigator.clipboard.writeText(mg),n("copy_agent_command"),b(!0),window.setTimeout(()=>b(!1),1800)}catch{vn({tone:"negative",title:"Could not copy the command",detail:`Run ${mg} in your terminal.`})}},x=Hd[i]??Hd[0];return l.jsxs(l.Fragment,{children:[l.jsxs(xp,{id:"onb-agent-heading",eyebrow:"Your agent",title:"Let your agent run it.",children:["Your agent can do everything in Canonry: diagnose a drop, fix pages, run sweeps and scans, and write the client report. Use Claude Code, Codex, Cursor, or Aero, the analyst built into"," ",l.jsx("span",{className:"text-heading",children:e})," that reviews every sweep on its own."]}),l.jsxs("div",{className:"mt-6 flex flex-1 flex-col rounded-xl border border-default bg-bg",onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1),onFocus:()=>h(!0),children:[l.jsxs("div",{className:"flex items-center gap-1 border-b border-default px-3 py-2",role:"tablist","aria-label":"Example agent sessions",children:[Hd.map((S,j)=>l.jsx("button",{type:"button",role:"tab","aria-selected":j===i,onClick:()=>{r(j),h(!0)},className:`rounded-md px-2.5 py-1 text-xs font-medium transition-colors ${j===i?"bg-surface-inset text-heading":"text-muted hover:text-secondary"}`,children:S.label},S.id)),l.jsx("span",{className:"ml-auto text-xs text-faint",children:"Example"})]}),l.jsxs("div",{role:"tabpanel","aria-label":`${x.label} example`,className:"flex-1 p-4 font-mono text-[13px] leading-relaxed",children:[l.jsxs("p",{className:"onb-type text-heading",style:Ra(150),children:[l.jsx("span",{className:"text-muted",children:"> "}),x.prompt]}),x.calls.map((S,j)=>l.jsxs("p",{className:"onb-line mt-1 text-muted first:mt-3",style:Ra(1300+j*450),children:[l.jsx("span",{className:"text-positive",children:"●"})," ",S]},S)),l.jsx("p",{className:"onb-line mt-3 text-secondary",style:Ra(1500+x.calls.length*450),children:x.reply}),l.jsx("span",{className:"onb-caret mt-2 inline-block h-4 w-2 bg-current align-middle text-secondary",style:Ra(1900+x.calls.length*450),"aria-hidden":"true"})]},x.id)]}),l.jsxs("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:[l.jsx("code",{className:"min-w-0 flex-1 truncate rounded-lg border border-default bg-surface-inset px-3 py-2 font-mono text-[13px] text-heading",children:mg}),l.jsxs(le,{type:"button",variant:"secondary",size:"sm",className:"h-9 md:h-9",onClick:()=>{v()},children:[f?l.jsx(Xc,{className:"size-4","aria-hidden":"true"}):l.jsx(g0,{className:"size-4","aria-hidden":"true"}),f?"Copied":"Copy"]}),l.jsx("a",{href:yte,target:"_blank",rel:"noreferrer",className:"text-sm font-medium text-link underline-offset-4 hover:underline",children:"Other clients"})]})]})}const Ate=[{icon:f0,label:"Search Console",action:"connect_search_console",to:"/projects/$projectName/search-console"},{icon:sj,label:"Google Analytics",action:"connect_analytics",to:"/projects/$projectName/activity"},{icon:rj,label:"Business Profile",action:"connect_business_profile",to:"/projects/$projectName/local"}],Nte=["GPTBot","ClaudeBot","PerplexityBot"];function Cte({projectName:e}){const n=_.useContext(vp);return l.jsxs(l.Fragment,{children:[l.jsx(xp,{id:"onb-data-heading",eyebrow:"Server-side traffic",title:"See the AI bots.",children:"AI crawlers and answer-engine fetches never run JavaScript, so Google Analytics never sees them. Canonry reads them straight from your server."}),l.jsx(_te,{}),l.jsxs(at,{to:"/traffic",onClick:()=>n("connect_server_traffic"),"aria-label":"Connect server-side traffic",className:"group flex items-center gap-3 rounded-xl border border-strong bg-surface-inset px-4 py-3 text-sm font-medium text-heading transition-colors hover:bg-surface-inset-hover",children:[l.jsx(lj,{className:"size-4 text-positive","aria-hidden":"true"}),l.jsxs("span",{className:"flex-1",children:["Connect your server",l.jsx("span",{className:"block text-xs font-normal text-secondary",children:"Cloudflare, Vercel, WordPress, or Cloud Run"})]}),l.jsx(qc,{className:"size-4 text-link transition-transform group-hover:translate-x-0.5","aria-hidden":"true"})]}),l.jsx("p",{className:"mt-5 text-xs font-medium uppercase tracking-wide text-muted",children:"Also connect"}),l.jsx("ul",{className:"mt-1 divide-y divide-default",children:Ate.map(({icon:i,label:r,action:u,to:h})=>l.jsx("li",{children:l.jsxs(at,{to:h,params:{projectName:e},"aria-label":`Connect ${r}`,onClick:()=>n(u),className:"group flex items-center gap-3 py-2.5 text-sm text-heading",children:[l.jsx(i,{className:"size-4 text-muted","aria-hidden":"true"}),l.jsx("span",{className:"flex-1",children:r}),l.jsx(qc,{className:"size-3.5 text-link transition-transform group-hover:translate-x-0.5","aria-hidden":"true"})]})},r))})]})}function _te(){const e=[22,70,118];return l.jsxs("div",{className:"relative my-6 h-36","aria-hidden":"true",children:[l.jsx("svg",{viewBox:"0 0 200 140",preserveAspectRatio:"none",className:"absolute inset-0 size-full",children:e.map((n,i)=>l.jsx("path",{className:"onb-flow",style:Ra(i*400),d:`M20 ${n} C 100 ${n}, 118 70, 170 70`,fill:"none",strokeWidth:"1.5"},n))}),Nte.map((n,i)=>l.jsx("span",{className:"onb-bot absolute left-0 -translate-y-1/2 rounded-md border border-default bg-bg-elevated px-2 py-1 font-mono text-[11px] text-secondary",style:{top:`${(e[i]??70)/140*100}%`,...Ra(i*600)},children:n},n)),l.jsx("span",{className:"onb-hub absolute right-0 top-1/2 flex size-11 -translate-y-1/2 items-center justify-center rounded-2xl bg-accent text-on-inverse",children:l.jsx(lj,{className:"size-5"})})]})}const Tte=["M","T","W","T","F","S","S"];function Ete({projectName:e}){return l.jsxs(l.Fragment,{children:[l.jsx(xp,{id:"onb-schedule-heading",eyebrow:"Scheduled sweeps",title:"Runs on its own.",children:"Re-measure every week without lifting a finger, so a drop shows up before a customer notices."}),l.jsx("ol",{className:"mt-6 grid grid-cols-7 gap-2","aria-hidden":"true",children:Tte.map((n,i)=>l.jsxs("li",{className:"flex flex-col items-center gap-2",children:[l.jsx("span",{className:"onb-day size-3 rounded-full bg-surface-inset",style:Ra(i*500)}),l.jsx("span",{className:"text-xs text-muted",children:n})]},i))}),l.jsx(K4,{projectName:e,to:"/projects/$projectName/settings",icon:oj,label:"Set a schedule",action:"set_schedule"})]})}function Rte({projectName:e,score:n}){return l.jsxs(l.Fragment,{children:[l.jsx(xp,{id:"onb-alerts-heading",eyebrow:"Notifications",title:"Hear about changes.",children:"Get a webhook in Slack or anywhere else when a sweep finishes or a score moves."}),l.jsxs("div",{className:"relative mt-6 flex h-14 items-center","aria-hidden":"true",children:[l.jsx("span",{className:"onb-bell flex size-10 items-center justify-center rounded-full border border-default bg-bg-elevated",children:l.jsx(fg,{className:"size-4 text-secondary"})}),l.jsxs("span",{className:"onb-toast ml-3 flex items-center gap-2 rounded-xl border border-default bg-bg-elevated px-3 py-2 text-sm shadow-[0_8px_24px_var(--color-shadow-panel)]",children:[l.jsx("span",{className:"size-2 rounded-full bg-positive-400"}),l.jsx("span",{className:"text-heading",children:e}),l.jsx("span",{className:"text-secondary",children:n===null?"sweep finished":`page health ${n}`})]})]}),l.jsx(K4,{projectName:e,to:"/projects/$projectName/settings",icon:fg,label:"Add a notification",action:"add_notification"})]})}function K4({projectName:e,to:n,icon:i,label:r,action:u}){const h=_.useContext(vp);return l.jsxs(at,{to:n,params:{projectName:e},onClick:()=>h(u),className:"group mt-6 inline-flex items-center gap-2 self-start text-sm font-medium text-link",children:[l.jsx(i,{className:"size-4","aria-hidden":"true"}),r,l.jsx(qc,{className:"size-3.5 transition-transform group-hover:translate-x-0.5","aria-hidden":"true"})]})}const Dte=_.lazy(async()=>({default:(await Zi(()=>import("./SiteHealthSection-ClZRxJ-A.js").then(n=>n.d),__vite__mapDeps([0,1,2,3,4]),import.meta.url)).SiteHealthSection})),zte=`Public pages only, crawled from this computer and stored locally. The first scan reads up to ${s3} pages, then stops.`,Ite=1800,Ote="https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent",Pte="Help me set up Canonry for my public site.\n\nUse the official Canonry 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\nPick one path and stay on it. Use connected Canonry tools (plugin or MCP) only if you have them and I have not pointed you at a specific install. A connected tool runs in its own process and never sees `CANONRY_CONFIG_DIR`, `CANONRY_PORT`, or anything else you export in a shell, so it always acts on my default install. If I named a config directory, a port, or a sandbox, that is the shell path: use `cnry` and tell me which path you chose. Never mix the two in one run, and never create a duplicate project. The `cnry` and `canonry` commands are interchangeable.\n\n1. Ask for my public domain, country, and language. Do not create or scan anything yet. Country and language are only applied when a project is created, so if you reuse an existing project, report its country and language instead of changing them.\n2. Shell path only: confirm `cnry` is on PATH, then run `cnry --version`. If Canonry is missing, propose `npm install -g @canonry/canonry` and wait for approval. Then run `cnry doctor --format json`, which is the command that says whether config, database, and server are in place. `cnry --version` does not read config and succeeds on a completely unconfigured install, so it cannot answer this. If config is missing, run `cnry bootstrap` yourself: it is not interactive, takes about a second, and is safe to rerun. Do not hand it to me and wait. The interactive command is `cnry init`, which is optional provider and OAuth setup that Page Health does not need. Bootstrap prints an API key, so do not repeat its output back to me, and never ask me to paste passwords, API keys, OAuth credentials, or command output.\n3. Confirm the API is reachable. `cnry doctor --format json` reports it, and any project read exits non-zero with `CONNECTION_ERROR` when it is not. If it is unreachable, propose `cnry start` and wait for approval. Use `cnry start`, which is the background daemon, and not `cnry serve`, which runs in the foreground and will block you until I stop it, even though some error messages suggest it. Stop anything you started with `cnry stop`.\n4. List projects with the connected project tool or `cnry project list --format json`, and reuse one whose domain matches. Confirm the proposed name is not already assigned to a different domain. To find out whether a project has already been scanned, run `cnry technical-aeo score <project> --format json` with no `--run-id`, which reports the latest run. Read the `hasData` field, not the score: this command exits 0 and reports `aggregateScore: 0` for a project that has never been scanned, so reading the score alone would have you tell me my site scored zero. If `hasData` is true and `runStatus` is `completed` or `partial`, read that scan instead of starting a new one. If no project matches, show the exact create operation and wait for approval.\n5. Propose a bounded Site Health scan: `--max-pages 100` for a first look, plus whether dead-link checking is on (it is off unless you pass `--check-dead-links`). Show the connected operation or the exact `cnry technical-aeo run <project> --max-pages 100 --wait --format json` command with the project name filled in, and wait for separate approval before scanning. `--wait` polls for up to 15 minutes and returns only the run id and status. If the status it returns is still `queued` or `running`, the scan has not finished: do not rerun it or report results, poll `cnry technical-aeo progress <project> --run-id <run-id> --format json` until it is terminal. If `--wait` outruns your own tool timeout first, recover the run id with `cnry technical-aeo score <project> --format json` and poll the same way.\n6. When the run is `completed` or `partial`, read `cnry technical-aeo crawl <project> --run-id <run-id> --format json` first. It is the only one of these commands that carries `termination` and `complete`; the score and pages commands do not. Then read `cnry technical-aeo score <project> --run-id <run-id> --format json` and `cnry technical-aeo pages <project> --run-id <run-id> --sort score-asc --limit 10 --format jsonl`. Tell me the termination reason in plain words and whether the scan covered the whole site or stopped at a page, link, depth, or time limit. A `partial` run scored the pages it reached and not my site, so never present it as a full-site result. If it stopped early, the fix depends on the reason, so say which: a page or depth limit needs a larger budget, a time limit needs a smaller scan (a lower `--max-pages` or `--max-depth`). If the run failed or was cancelled, inspect the run error and stop.\n7. Summarize only completed evidence, then propose AI Visibility setup. Ask before you add queries, connect providers, start a provider-backed or quota-consuming run, edit files, or publish.";function qte(e,n){return e==="legacy"?"legacy":e==="platform"?"platform":n.state==="success"?n.projectCount===0?"platform":"legacy":n.state==="error"?"retry":"loading"}const Mte="2000-01-01T00:00:00.000Z",Bte=5e3;function Lte(e,n){const i=new Set,r=new Map;for(const f of n)f.trigger!==Ga.probe&&(r.has(f.projectId)||r.set(f.projectId,f.id),(f.status===Nt.completed||f.status===Nt.partial)&&i.add(f.projectId));const h=(e.every(f=>f.createdAt)?[...e].sort((f,b)=>(f.createdAt??"").localeCompare(b.createdAt??"")||f.name.localeCompare(b.name)):e).find(f=>!i.has(f.id));return h?{projectName:h.name,runId:r.get(h.id)}:null}const G4=[{value:"US",label:"United States"},{value:"CA",label:"Canada"},{value:"GB",label:"United Kingdom"},{value:"AU",label:"Australia"},{value:"NZ",label:"New Zealand"},{value:"IE",label:"Ireland"},{value:"DE",label:"Germany"},{value:"FR",label:"France"},{value:"ES",label:"Spain"},{value:"IT",label:"Italy"},{value:"NL",label:"Netherlands"},{value:"BR",label:"Brazil"},{value:"MX",label:"Mexico"},{value:"IN",label:"India"},{value:"SG",label:"Singapore"},{value:"JP",label:"Japan"}],H4=[{value:"en",label:"English"},{value:"es",label:"Spanish"},{value:"fr",label:"French"},{value:"de",label:"German"},{value:"it",label:"Italian"},{value:"pt",label:"Portuguese"},{value:"nl",label:"Dutch"},{value:"ja",label:"Japanese"}];function Ute(e,n){try{const i=new Intl.DisplayNames(["en"],{type:"region"}),r=new Intl.DisplayNames(["en"],{type:"language"}),u=e.length===2?i.of(e.toUpperCase()):void 0,h=n?r.of(n.toLowerCase()):void 0;return`${u??(e||"Country")} · ${h??(n||"Language")}`}catch{return`${e||"Country"} · ${n||"Language"}`}}function Vte(e,n){const i=e.trim().toUpperCase(),r=n.trim().toLowerCase();return{countryValid:G4.some(u=>u.value===i),languageValid:H4.some(u=>u.value===r)}}function $te(e){const n=e.replace(/^\[|\]$/g,"");return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(n)||n.includes(":")}function Kte(e){const n=e.trim();if(!n)return null;const i=/^[a-z][a-z\d+.-]*:\/\//i.test(n)?n:`https://${n}`;let r;try{r=new URL(i)}catch{return null}if(r.protocol!=="http:"&&r.protocol!=="https:")return null;const u=r.hostname.toLowerCase().replace(/^www\./,"");if(!u||u==="localhost"||$te(u)||!u.includes("."))return null;const h=u.replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return h?{canonicalDomain:u,projectName:h,displayName:u}:null}async function Gte(e,n=Ite){let i;const r=new Promise(h=>{i=setTimeout(()=>h({state:"timed-out"}),n)}),u=await Promise.race([e.then(h=>({state:"queued",run:h})),r]);return i&&clearTimeout(i),u}function Hte(e,n){e.catch(()=>{vn({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 F4(e){const n=_.useRef(J1()).current,i=_.useRef(new Set),r=_.useCallback((u,h)=>{if(h){if(i.current.has(h))return;i.current.add(h)}ay({...u,surface:e,eventId:W1()})},[e]);return{onboardingSessionId:n,emit:r}}function Kk(e,n){return e instanceof yn&&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 u0(){return l.jsxs("div",{className:"page-container max-w-3xl","aria-busy":"true","aria-live":"polite",children:[l.jsx("div",{className:"page-header",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Preparing setup"}),l.jsx("p",{className:"page-subtitle",children:"Checking the projects already on this install."})]})}),l.jsxs("div",{className:"flex items-center gap-3 rounded-lg border border-default bg-surface p-4 text-sm text-secondary",role:"status",children:[l.jsx(Rs,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading projects…"]})]})}function Fte({onRetry:e}){return l.jsxs("div",{className:"page-container max-w-3xl",children:[l.jsx("div",{className:"page-header",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Can’t load projects"}),l.jsx("p",{className:"page-subtitle",children:"Canonry could not confirm whether this install already has a project."})]})}),l.jsxs("div",{className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",tabIndex:-1,children:[l.jsx("p",{className:"text-sm font-medium text-heading",children:"Setup is paused to protect existing projects."}),l.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),l.jsx(le,{type:"button",className:"mt-4",variant:"secondary",onClick:e,children:"Retry project check"})]})]})}function Qte({projectName:e,initialRunId:n}){return l.jsx(fy,{title:"Site Health setup",children:l.jsx(Zte,{projectName:e,initialRunId:n})})}function Zte({projectName:e,initialRunId:n}){const i=Ps(),r=yt({...Fo({client:J}),enabled:!!e,retry:!1,refetchOnMount:"always"}),{onboardingSessionId:u,emit:h}=F4("site_health"),[f]=_.useState(()=>cF(n));_.useEffect(()=>{f&&uF()},[f]),_.useEffect(()=>{e&&h({flowVersion:ft,onboardingSessionId:u,event:"onboarding.started",step:"run",resumed:!!n&&!f},"onboarding.started")},[h,f,n,u,e]),_.useEffect(()=>{!e||!n||OC(e)?.runId!==n&&IC(e,n)},[n,e]);const v=yt({...oy({client:J,path:{id:n??""}}),enabled:!!n,refetchInterval:({state:T})=>{const z=T.data?.status;return z==="completed"||z==="partial"||z==="failed"||z==="cancelled"?!1:2e3},refetchIntervalInBackground:!0}).data?.status;if(_.useEffect(()=>{if(!e||!n||!v)return;if(v==="completed"||v==="partial"){h({flowVersion:ft,onboardingSessionId:u,event:"onboarding.step_completed",step:"run",method:"automatic"},"onboarding.step_completed:run"),xm(n);return}if(v!=="failed"&&v!=="cancelled")return;const T=v==="cancelled"?"run_cancelled":"run_failed";h({flowVersion:ft,onboardingSessionId:u,event:"onboarding.blocked",step:"run",action:"retry_run",reasonCode:T},`onboarding.blocked:run:${T}`),xm(n)},[h,n,u,e,v]),!e)return l.jsxs("div",{className:"page-container max-w-3xl",children:[l.jsx("div",{className:"page-header",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Project not found"}),l.jsx("p",{className:"page-subtitle",children:"This setup link does not identify a project."})]})}),l.jsx(le,{type:"button",variant:"secondary",onClick:()=>{i({to:"/projects"})},children:"View projects"})]});if(r.isPending)return l.jsxs("div",{className:"page-container max-w-3xl","aria-busy":"true","aria-live":"polite",children:[l.jsx(Po,{current:"site"}),l.jsxs("div",{className:"mt-8 flex items-center gap-3 text-sm text-secondary",role:"status",children:[l.jsx(Rs,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health setup…"]})]});if(r.isError)return l.jsxs("div",{className:"page-container max-w-3xl",children:[l.jsx("div",{className:"page-header",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Can’t resume setup"}),l.jsx("p",{className:"page-subtitle",children:"Canonry could not load the project for this Site Health scan."})]})}),l.jsxs("div",{className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",children:[l.jsx("p",{className:"text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),l.jsx(le,{type:"button",className:"mt-4",variant:"secondary",onClick:()=>{r.refetch()},children:"Retry project check"})]})]});const x=r.data.find(T=>T.name===e);if(!x)return l.jsxs("div",{className:"page-container max-w-3xl",children:[l.jsx("div",{className:"page-header",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Project not found"}),l.jsxs("p",{className:"page-subtitle",children:["Canonry could not find ",e,". It will not open a different project."]})]})}),l.jsx(le,{type:"button",variant:"secondary",onClick:()=>{i({to:"/projects"})},children:"View projects"})]});const S=()=>{i({to:"/setup",search:{onboarding:"site-health",setupProject:x.name},replace:!0})},j=()=>{i({to:"/setup",search:{experience:"legacy",onboarding:"site-health",setupProject:x.name},replace:!0})},C=()=>{h({flowVersion:ft,onboardingSessionId:u,event:"onboarding.step_completed",step:"run",method:"skipped"},"onboarding.step_completed:run"),i({to:"/setup",search:{onboarding:"complete",setupProject:x.name,skipped:"visibility"},replace:!0})};return l.jsxs("div",{className:"page-container max-w-7xl py-8 md:py-10",children:[l.jsx("h1",{className:"sr-only",children:"Set up Canonry"}),l.jsx(_.Suspense,{fallback:l.jsxs("div",{className:"space-y-5",children:[l.jsx(Po,{current:"site"}),l.jsxs("div",{className:"flex min-h-72 items-center justify-center gap-3 text-sm text-secondary",role:"status",children:[l.jsx(Rs,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health…"]})]}),children:l.jsx(Dte,{projectName:x.name,projectId:x.id,initialRunId:n,onReleaseInitialRun:S,showOnboardingActions:!0,onContinueOnboarding:j,onSkipOnboarding:C})})]})}function Yte(){const e=Fk({from:"/setup"}),n=e.onboarding==="site-health"&&!e.setupProject,i=e.onboarding==="site-health"&&e.experience!=="legacy",r=qF(),u=e.experience==="legacy"?"legacy":e.experience==="platform"?"platform":r,[h,f]=_.useState(!1),[b,v]=_.useState(void 0),x=yt({...Fo({client:J}),enabled:u==="auto",retry:!1,refetchOnMount:"always"}),S=yt({...Fc({client:J,query:{kind:Oe["site-audit"],since:Mte,limit:Bte}}),enabled:u==="auto",retry:!1,refetchOnMount:"always"}),j=u==="auto"&&x.isSuccess&&x.isFetchedAfterMount&&x.data.length===0;_.useEffect(()=>{j&&f(!0)},[j]);const C=u!=="auto"?{state:"idle"}:x.isSuccess&&x.isFetchedAfterMount?{state:"success",projectCount:x.data.length}:x.isError?{state:"error"}:{state:"loading"},T=u==="legacy"?"legacy":h||j?"platform":qte(u,C);if(e.onboarding==="complete"&&e.setupProject)return l.jsx(vte,{projectName:e.setupProject,skippedVisibility:e.skipped==="visibility"});if(n||i)return l.jsx(Qte,{projectName:e.setupProject,initialRunId:e.siteHealthRunId});const z=u==="auto"&&T==="legacy"&&!e.setupProject&&x.isSuccess;if(z&&b===void 0)return S.isError?v(null):S.isSuccess&&S.isFetchedAfterMount&&v(Lte(x.data,S.data)),l.jsx(u0,{});const q=z?b:null;return q?l.jsx(Xte,{projectName:q.projectName,runId:q.runId}):T==="legacy"?l.jsx(fte,{visibilityProjectName:e.setupProject,siteHealthOnboarding:e.onboarding==="site-health",onboardingFinish:e.onboarding==="site-health"||e.onboarding==="first-run"}):T==="loading"?l.jsx(u0,{}):T==="retry"?l.jsx(Fte,{onRetry:()=>{x.refetch()}}):l.jsx(Jte,{onActivationStarted:()=>f(!0),skipSiteScan:e.siteScan==="skip"})}function Xte({projectName:e,runId:n}){const i=Ps();return _.useEffect(()=>{i({to:"/setup",search:{onboarding:"site-health",setupProject:e,...n?{siteHealthRunId:n}:{}},replace:!0})},[i,e,n]),l.jsx(u0,{})}function Jte({onActivationStarted:e,skipSiteScan:n}){return l.jsx(fy,{title:"Site Health setup",children:l.jsx(Wte,{onActivationStarted:e,skipSiteScan:n})})}function Wte({onActivationStarted:e,skipSiteScan:n}){const i=Ps(),r=Os(),u=ite(),h=yt({...VZ({client:J}),retry:!1}),f=ci($Z()),[b,v]=_.useState(""),[x,S]=_.useState(""),[j,C]=_.useState(""),[T,z]=_.useState("US"),[q,R]=_.useState("en"),[P,M]=_.useState(!1),[L,$]=_.useState("idle"),[Q,ae]=_.useState(null),[V,Z]=_.useState(null),[X,Ce]=_.useState(!1),[tt,Ge]=_.useState(null),[Ve,ke]=_.useState(!1),Le=h.isError?void 0:h.data,B=typeof Le?.enabled=="boolean"?Le.enabled:null,W=f.isPending?f.variables.body.enabled:B,[ve,Ae]=_.useState(null),se=_.useRef(null),{onboardingSessionId:Se,emit:Me}=F4("platform");_.useEffect(()=>{Me({flowVersion:ft,onboardingSessionId:Se,event:"onboarding.started",step:"project",resumed:!1},"onboarding.started")},[Me,Se]);const xe=Kte(b),pe=x||xe?.projectName||"",ce=j||xe?.displayName||"",ue=L==="creating"||L==="dispatching",_e=V??tt,Ze=Ute(T,q),{countryValid:Ee,languageValid:Ct}=Vte(T,q),me=Ee&&Ct;_.useEffect(()=>{_e&&se.current?.focus()},[_e]);const Be=($e,ct)=>i({to:"/setup",search:{...ct?{siteHealthRunId:ct}:{},onboarding:"site-health",setupProject:$e.name},replace:!0}),Ne=async $e=>{$("dispatching"),Ge(null);try{const ct=u.mutateAsync({projectName:$e.name,projectId:$e.id,projectLabel:$e.displayName||$e.name,suppressErrorToast:!0,body:{checkDeadLinks:!0,maxPages:s3}}),Ft=await Gte(ct);if(Ft.state==="queued"){Me({flowVersion:ft,onboardingSessionId:Se,event:"run.requested",origin:"dashboard_setup",result:"queued",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0"}),lF(Ft.run.runId),await Be($e,Ft.run.runId);return}ct.then(()=>{Me({flowVersion:ft,onboardingSessionId:Se,event:"run.requested",origin:"dashboard_setup",result:"queued",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0"})},Qt=>{Me({flowVersion:ft,onboardingSessionId:Se,event:"run.requested",origin:"dashboard_setup",result:"rejected",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0",reasonCode:zc(Qt,"run_rejected")})}),Hte(ct,$e.id),await Be($e)}catch(ct){$("recovery"),Ge(Kk(ct,"The project was created, but the Site Health scan could not be started."));const Ft=zc(ct,"run_rejected");Me({flowVersion:ft,onboardingSessionId:Se,event:"run.requested",origin:"dashboard_setup",result:"rejected",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0",reasonCode:Ft}),Me({flowVersion:ft,onboardingSessionId:Se,event:"onboarding.blocked",step:"run",action:"retry_run",reasonCode:Ft},`onboarding.blocked:run:${Ft}`)}},re=async $e=>{if($e.preventDefault(),!(!xe||!n&&!P||!me||ue)){$("creating"),Z(null),Ce(!1),Ge(null);try{const ct=await aQ({name:pe,displayName:ce,canonicalDomain:xe.canonicalDomain,country:T,language:q});if(e(),ae(ct),Me({flowVersion:ft,onboardingSessionId:Se,event:"onboarding.step_completed",step:"project",method:"manual"},"onboarding.step_completed:project"),await r.invalidateQueries({queryKey:Xr({client:J})}),n){await i({to:"/setup",search:{experience:"legacy",onboarding:"first-run",setupProject:ct.name},replace:!0});return}await Ne(ct)}catch(ct){$("idle");const Ft=ct instanceof yn&&ct.statusCode===409;Ce(Ft),Z(Kk(ct,"Could not create the project. Try again.")),Me({flowVersion:ft,onboardingSessionId:Se,event:"onboarding.blocked",step:"project",action:"save",reasonCode:zc(ct,"project_create_failed")},"onboarding.blocked:project"),Ft&&(e(),r.invalidateQueries({queryKey:Xr({client:J})}))}}},Ye=()=>{Q&&!ue&&Ne(Q)},vt=()=>{ue||i({to:"/projects"})},Mn=async()=>{try{await navigator.clipboard.writeText(Pte),ke(!0)}catch{vn({tone:"negative",title:"Could not copy setup request",detail:"Open the agent quickstart to continue with the CLI instead."})}},Ht=async $e=>{Ae(null);try{const ct=await f.mutateAsync({client:J,body:{enabled:$e}});r.setQueryData(n4({client:J}),ct),ct.enabled!==$e&&Ae(`The server kept telemetry ${ct.enabled?"on":"off"}. Check its telemetry settings.`)}catch{Ae("Could not update telemetry. Try again.")}};return Q&&L==="recovery"?l.jsxs("div",{className:"page-container max-w-3xl",children:[l.jsx(Po,{current:"site"}),l.jsx("div",{className:"page-header mt-8",children:l.jsxs("div",{className:"page-header-left",children:[l.jsx("h1",{className:"page-title",children:"Project created"}),l.jsxs("p",{className:"page-subtitle",children:[Q.displayName||Q.name," is ready. The Site Health scan needs another try."]})]})}),l.jsxs("div",{ref:se,className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",tabIndex:-1,children:[l.jsx("p",{className:"text-sm font-medium text-heading",children:tt}),l.jsx("p",{className:"mt-1 text-sm text-secondary",children:"You can retry the scan or continue setup and retry from Site Health."}),l.jsxs("div",{className:"mt-4 flex flex-wrap gap-3",children:[l.jsx(le,{type:"button",onClick:Ye,children:"Retry Site Health scan"}),l.jsx(le,{type:"button",variant:"secondary",onClick:()=>{Be(Q)},children:"Continue setup"})]})]})]}):l.jsxs("div",{className:"page-container max-w-xl py-8 md:py-12",children:[n?null:l.jsx(Po,{current:"site"}),l.jsxs("header",{className:`mb-8 ${n?"":"mt-8"}`,children:[l.jsx("h1",{id:"site-map-setup-title",className:"text-2xl font-semibold tracking-[-0.025em] text-heading",children:n?"Create a project":"Scan your site"}),l.jsx("p",{className:"mt-2 max-w-lg text-sm leading-6 text-secondary",children:n?"Add a public domain, then choose the queries you want to track. No site scan will run.":"Enter your public website to see its pages, structure, internal links, and technical SEO scores."})]}),l.jsxs("form",{"aria-labelledby":"site-map-setup-title",className:"space-y-6",onSubmit:gn(re),noValidate:!0,children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx("label",{className:"text-sm font-medium text-heading",htmlFor:"launchpad-domain",children:"Website URL"}),l.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":!!(b&&!xe),"aria-describedby":b&&!xe?"launchpad-domain-hint launchpad-domain-error":"launchpad-domain-hint",placeholder:"https://example.com",value:b,onChange:$e=>{v($e.target.value),Z(null),Ce(!1)}}),l.jsx("p",{id:"launchpad-domain-hint",className:"text-sm text-secondary",children:n?l.jsxs(l.Fragment,{children:["A public domain is still required."," ",l.jsx(at,{to:"/setup",search:{experience:"platform"},className:"font-medium text-link underline-offset-4 hover:underline",children:"Map with Site Health instead"})]}):l.jsxs(l.Fragment,{children:["Only public pages are scanned."," ",l.jsx(at,{to:"/setup",search:{experience:"platform",onboarding:"first-run",siteScan:"skip"},className:"font-medium text-link underline-offset-4 hover:underline",children:"Set up without a site scan"})]})}),b&&!xe?l.jsx("p",{id:"launchpad-domain-error",className:"text-sm text-negative",role:"alert",children:"Enter a public domain, such as example.com."}):null]}),l.jsxs("details",{className:"group border-y border-default",children:[l.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:[l.jsx("span",{className:"font-medium text-heading",children:"Project name and locale"}),l.jsxs("span",{className:"flex items-center gap-2 text-secondary",children:[Ze,l.jsx(Yc,{className:"size-4 transition-transform group-open:rotate-180 motion-reduce:transition-none","aria-hidden":"true"})]})]}),l.jsxs("div",{className:"space-y-5 border-t border-default py-4",children:[xe?l.jsxs("div",{children:[l.jsx("p",{className:"mb-3 text-sm font-medium text-heading",children:"Project"}),l.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-project-name",children:"Project name"}),l.jsx("input",{id:"launchpad-project-name",className:"setup-input h-10",type:"text",value:pe,onChange:$e=>S($e.target.value)})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-display-name",children:"Display name"}),l.jsx("input",{id:"launchpad-display-name",className:"setup-input h-10",type:"text",value:ce,onChange:$e=>C($e.target.value)})]})]})]}):null,l.jsxs("div",{children:[l.jsx("p",{className:"mb-3 text-sm font-medium text-heading",children:"Locale"}),l.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-country",children:"Country"}),l.jsx("select",{id:"launchpad-country",className:"setup-input h-10",value:T,onChange:$e=>z($e.target.value),children:G4.map($e=>l.jsx("option",{value:$e.value,children:$e.label},$e.value))})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-language",children:"Language"}),l.jsx("select",{id:"launchpad-language",className:"setup-input h-10",value:q,onChange:$e=>R($e.target.value),children:H4.map($e=>l.jsx("option",{value:$e.value,children:$e.label},$e.value))})]})]})]})]})]}),n?null:l.jsxs("label",{className:"flex min-h-11 cursor-pointer items-start gap-3 py-2",children:[l.jsx("input",{className:"mt-0.5 size-4 shrink-0 rounded border-strong bg-bg",type:"checkbox",checked:P,onChange:$e=>M($e.target.checked),"aria-label":"Allow Canonry to scan this public site."}),l.jsxs("span",{className:"flex items-center gap-1.5",children:[l.jsx("span",{className:"text-sm leading-5 text-heading",children:"Allow Canonry to scan this public site."}),l.jsx(ma,{text:zte})]})]}),_e?l.jsxs("div",{ref:se,className:"rounded-md border border-negative bg-negative-soft p-3",role:"alert",tabIndex:-1,children:[l.jsx("p",{className:"text-sm font-medium text-heading",children:_e}),X?l.jsx(le,{type:"button",variant:"secondary",size:"sm",className:"mt-3",onClick:vt,children:"View projects"}):null]}):null,l.jsxs("div",{className:"grid gap-2",children:[l.jsx(le,{className:"h-11 w-full",type:"submit",disabled:!xe||!n&&!P||!me||ue,children:L==="creating"||L==="dispatching"?l.jsxs(l.Fragment,{children:[l.jsx(Rs,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"})," ",n?"Creating project…":"Mapping site…"]}):n?"Create project":"Scan site"}),L==="dispatching"?l.jsx("span",{className:"text-center text-sm text-secondary",role:"status",children:"Opening Site Health when the scan is ready."}):null]})]}),l.jsxs("section",{className:"mt-8 border-t border-default pt-6","aria-labelledby":"agent-setup-title",children:[l.jsx("p",{id:"agent-setup-title",className:"text-sm font-medium text-heading",children:"Use your agent instead"}),l.jsx("p",{className:"mt-1 text-sm leading-5 text-secondary",children:"Copy a complete CLI setup request into any agent."}),l.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-1",children:[l.jsxs(le,{type:"button",variant:"ghost",size:"sm",className:"-ml-3",onClick:gn(Mn),children:[Ve?l.jsx(Xc,{className:"size-3.5","aria-hidden":"true"}):l.jsx(g0,{className:"size-3.5","aria-hidden":"true"}),l.jsx("span",{"aria-live":"polite",children:Ve?"Copied setup request":"Copy setup request"})]}),l.jsx(le,{asChild:!0,variant:"ghost",size:"sm",children:l.jsxs("a",{href:Ote,target:"_blank",rel:"noopener noreferrer",children:["Agent quickstart",l.jsx(N6,{className:"size-3.5","aria-hidden":"true"}),l.jsx("span",{className:"sr-only",children:" (opens in a new tab)"})]})})]})]}),B!==null?l.jsxs("section",{className:"mt-6 border-t border-default pt-5","aria-labelledby":"telemetry-title",children:[l.jsxs("label",{className:`flex min-h-11 items-start gap-3 py-2 ${f.isPending?"cursor-wait":"cursor-pointer"}`,children:[l.jsx("input",{className:"mt-0.5 size-4 shrink-0 rounded border-strong bg-bg accent-accent focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-mono-500 disabled:cursor-wait",type:"checkbox",checked:W??!1,disabled:f.isPending,onChange:$e=>{Ht($e.target.checked)},"aria-describedby":"telemetry-detail"}),l.jsxs("span",{className:"grid gap-0.5",children:[l.jsx("span",{id:"telemetry-title",className:"text-sm leading-5 text-heading",children:"Share anonymous product telemetry"}),l.jsx("span",{id:"telemetry-detail",className:"max-w-[70ch] text-sm leading-5 text-secondary",children:"Helps prioritize improvements. Canonry does not send raw domains, URLs, queries, answer content, or credentials."})]})]}),f.isPending?l.jsx("p",{className:"mt-1 text-sm text-secondary",role:"status",children:"Saving preference…"}):null,ve?l.jsx("p",{className:"mt-1 text-sm text-negative",role:"alert",children:ve}):null]}):null]})}function ene(){return l.jsx("div",{className:"page-container",children:l.jsx("section",{className:"page-section",children:l.jsxs(Ta,{className:"surface-card empty-card",children:[l.jsx("h1",{children:"Route not found"}),l.jsx("p",{children:"The current path does not map to a dashboard view."}),l.jsx(le,{asChild:!0,children:l.jsx(at,{to:"/",children:"Return to overview"})})]})})})}const Pa=qs(()=>Zi(()=>import("./ProjectPage-H7nsLkhG.js"),__vite__mapDeps([5,1,0,2,3,4,6,7,8,9,10,11,12]),import.meta.url),"ProjectPage"),tne=qs(()=>Zi(()=>import("./RunsPage-CE5wFNdP.js"),__vite__mapDeps([13,1,11,4,2,7,12]),import.meta.url),"RunsPage"),nne=qs(()=>Zi(()=>import("./HistoryPage-D_3qu4SQ.js"),__vite__mapDeps([14,1,10,11,4,2,7,12]),import.meta.url),"HistoryPage"),ane=qs(()=>Zi(()=>import("./SettingsPage-D2zKpqOv.js"),__vite__mapDeps([15,1,11,4,2,7,12]),import.meta.url),"SettingsPage"),ine=qs(()=>Zi(()=>import("./BacklinksPage-DQu_3poO.js"),__vite__mapDeps([16,1,9,2,11,4,7,12]),import.meta.url),"BacklinksPage"),sne=qs(()=>Zi(()=>import("./TrafficPage-BDH4Dzk0.js"),__vite__mapDeps([17,1,8,2,11,4,7,12]),import.meta.url),"TrafficPage"),one=qs(()=>Zi(()=>import("./TrafficSourceDetailPage-DaVUcHXu.js"),__vite__mapDeps([18,1,8,3,4,2,11,7,12]),import.meta.url),"TrafficSourceDetailPage"),rne=qs(()=>Zi(()=>import("./MeasurementPropertyPage-FKmEMw_G.js"),__vite__mapDeps([19,1,3,4,6,7,2,11,12]),import.meta.url),"MeasurementPropertyPage");function lne(){return l.jsx(mee,{children:l.jsx(ZQ,{children:l.jsx(dee,{})})})}const Vn=i6()({component:lne,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"||e.onboarding==="first-run"||e.onboarding==="complete"?e.onboarding:void 0,experience:e.experience==="legacy"||e.experience==="platform"?e.experience:void 0,siteScan:e.siteScan==="skip"?"skip":void 0,skipped:e.skipped==="visibility"?"visibility":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,...Object.fromEntries(["queryWorkspace","researchMode","trackingQueryId","measurementScope","measurementScopeKey","measurementMarketKey","queryClass","measurementProvider","measurementModel","measurementLocation","measurementFrom","measurementTo","measurementRevision","measurementRunId","measurementQueryKey","measurementAnswer"].map(n=>[n,typeof e[n]=="string"?e[n]:void 0]))})}),cne=Bt({getParentRoute:()=>Vn,path:"/",component:Fee,beforeLoad:async({context:e})=>{let n=e.queryClient.getQueryData(Xr({client:J}));if(n===void 0)try{n=await e.queryClient.ensureQueryData(Fo({client:J}))}catch{return}if(n.length===0)throw d0({to:"/setup"})}}),une=Bt({getParentRoute:()=>Vn,path:"/projects",component:Xee}),dne=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,$n=Bt({getParentRoute:()=>Vn,path:"/projects/$projectName",component:()=>l.jsx(pg,{}),beforeLoad:async({context:e,params:n,location:i})=>{const r=n.projectName;if(!dne.test(r))return;let u=e.queryClient.getQueryData(Xr({client:J}));if(!u)try{u=await e.queryClient.ensureQueryData(Fo({client:J}))}catch{return}const h=u.find(f=>f.id===r);if(h)throw d0({to:i.pathname.replace(`/projects/${r}`,`/projects/${encodeURIComponent(h.name)}`),replace:!0})}}),mne=Bt({getParentRoute:()=>$n,path:"/",component:()=>l.jsx(Pa,{tab:"overview"})}),pne=Bt({getParentRoute:()=>$n,path:"/portfolio",component:()=>l.jsx(Pa,{tab:"portfolio"})}),hne=Bt({getParentRoute:()=>$n,path:"/search-console",component:()=>l.jsx(Pa,{tab:"search-console"})}),fne=Bt({getParentRoute:()=>$n,path:"/conversions",component:()=>l.jsx(Pa,{tab:"conversions"})}),gne=Bt({getParentRoute:()=>$n,path:"/local",component:()=>l.jsx(Pa,{tab:"local"})}),yne=Bt({getParentRoute:()=>$n,path:"/discovery",component:()=>l.jsx(Pa,{tab:"discovery"})}),bne=Bt({getParentRoute:()=>$n,path:"/queries",component:()=>l.jsx(Pa,{tab:"queries"})}),vne=Bt({getParentRoute:()=>$n,path:"/properties/$targetKey",component:()=>l.jsx(rne,{})}),xne=Bt({getParentRoute:()=>$n,path:"/report",beforeLoad:({params:e})=>{throw d0({to:"/projects/$projectName",params:e,replace:!0})}}),wne=Bt({getParentRoute:()=>$n,path:"/activity",component:()=>l.jsx(Pa,{tab:"activity"})}),Sne=Bt({getParentRoute:()=>$n,path:"/backlinks",component:()=>l.jsx(Pa,{tab:"backlinks"})}),kne=Bt({getParentRoute:()=>$n,path:"/technical-aeo",component:()=>l.jsx(Pa,{tab:"technical-aeo"})}),jne=Bt({getParentRoute:()=>$n,path:"/history",component:()=>l.jsx(Pa,{tab:"history"})}),Ane=Bt({getParentRoute:()=>$n,path:"/settings",component:()=>l.jsx(Pa,{tab:"settings"})}),Nne=Bt({getParentRoute:()=>Vn,path:"/runs",component:tne}),Cne=Bt({getParentRoute:()=>Vn,path:"/history",component:nne}),_ne=Bt({getParentRoute:()=>Vn,path:"/settings",component:ane,beforeLoad:({context:e})=>{}}),Tne=Bt({getParentRoute:()=>Vn,path:"/setup",component:Yte}),Ene=Bt({getParentRoute:()=>Vn,path:"/backlinks",component:ine}),Rne=Bt({getParentRoute:()=>Vn,path:"/traffic",component:sne}),Dne=Bt({getParentRoute:()=>Vn,path:"/traffic/$projectName/$sourceId",component:one}),zne=Bt({getParentRoute:()=>Vn,path:"*",component:ene}),Ine=Vn.addChildren([cne,une,$n.addChildren([mne,pne,hne,fne,gne,yne,bne,vne,xne,wne,Sne,kne,jne,Ane]),Nne,Cne,_ne,Tne,Ene,Rne,Dne,zne]);function One(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const Gk=One(),Pne=Gk==="/"?"":Gk.replace(/\/$/,"");function qne(e,n){return s6({routeTree:Ine,basepath:Pne||"/",context:{queryClient:e},...n?.initialEntries})}let Hk=!1;async function Mne(e){return(await dE({client:J,body:e,keepalive:!0})).data}function Bne(){Hk||typeof window>"u"||(Hk=!0,!(rp()||To())&&(yF({send:Mne}),J.interceptors.request.use((e,n)=>{const i=n.fetch??globalThis.fetch,r=typeof n.url=="string"?n.url:void 0;return n.fetch=async(u,h)=>{try{return await i(u,h)}catch(f){throw f instanceof DOMException&&f.name==="AbortError"||km({method:e.method,route:r,network:!0}),f}},e}),J.interceptors.response.use((e,n,i)=>(km({method:n.method,route:typeof i.url=="string"?i.url:void 0,path:Une(n.url),status:e.status}),e)),window.addEventListener("error",e=>{Sm({kind:"unhandled",error:e.error})}),window.addEventListener("unhandledrejection",e=>{Sm({kind:"unhandled",error:e.reason})}),Hne()))}function Lne(e){let n=null;const i=()=>{const r=e.state.matches.at(-1);if(!r)return;bF(r.fullPath);const u=e.state.location;if(!u)return;const h=u.search&&typeof u.search=="object"?u.search:{};n&&n.pathname===u.pathname&&kF(n.search,h),n={pathname:u.pathname,search:h}};return i(),e.subscribe("onResolved",i)}function Une(e){try{return new URL(e,window.location.origin).pathname}catch{return}}const Vne={LCP:[2500,4e3],INP:[200,500],CLS:[.1,.25],FCP:[1800,3e3],TTFB:[800,1800]};function $ne(e,n){const[i,r]=Vne[e];return n<=i?"good":n<=r?"needs-improvement":"poor"}function Kne(){let e=0,n=0,i=-1/0,r=-1/0;return{add(u){u.hadRecentInput||(u.startTime-r<1e3&&u.startTime-i<5e3?n+=u.value:(n=u.value,i=u.startTime),r=u.startTime,e=Math.max(e,n))},value:()=>e}}function Gne(){let e=0;return{add(n){n.interactionId&&(e=Math.max(e,n.duration))},value:()=>e}}function Hne(){if(typeof PerformanceObserver>"u")return;const e=new Set,n=(b,v)=>{e.has(b)||!Number.isFinite(v)||(e.add(b),AF(b,$ne(b,v)))},i=(b,v,x={})=>{try{new PerformanceObserver(S=>v(S.getEntries())).observe({type:b,buffered:!0,...x})}catch{}};try{const b=performance.getEntriesByType("navigation")[0];b&&b.responseStart>0&&n("TTFB",b.responseStart)}catch{}i("paint",b=>{const v=b.find(x=>x.name==="first-contentful-paint");v&&n("FCP",v.startTime)});let r=0;i("largest-contentful-paint",b=>{const v=b.at(-1);v&&(r=v.startTime)});const u=Kne();i("layout-shift",b=>{for(const v of b)u.add({startTime:v.startTime,value:v.value??0,hadRecentInput:v.hadRecentInput===!0})});const h=Gne();i("event",b=>{for(const v of b)h.add(v)},{durationThreshold:40});const f=()=>{r>0&&n("LCP",r),n("CLS",u.value()),h.value()>0&&n("INP",h.value())};document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&f()}),window.addEventListener("pagehide",f)}const Fne=6e4,Qne="Anyone with this password can sign in to this dashboard.",Pr={label:"Root API key",help:"To create the password from here, enter the root API key (apiKey in config.yaml). It is used once and not saved.",missing:"Enter the root API key.",rejected:"That is not the root API key for this install.",show:"Show passwords and key"};function Zne(){const e=_.useRef(eQ()).current,[n,i]=_.useState(e?"ready":"checking"),[r,u]=_.useState(null),[h,f]=_.useState(null),[b,v]=_.useState(e),[x,S]=_.useState(!1),[j,C]=_.useState(""),[T,z]=_.useState(""),[q,R]=_.useState(""),[P,M]=_.useState(!1),[L,$]=_.useState("password"),[Q,ae]=_.useState(!1),[V,Z]=_.useState(""),[X,Ce]=_.useState(null),[tt,Ge]=_.useState(!1),[Ve,ke]=_.useState(!1),Le=_.useRef(null),B=_.useRef(null),W=_.useRef(null),ve=()=>{const me=r?`${r.name}:${r.role}`:e?"api-key:explicit":h?`api-key:${h.id}`:"no-accounts";if(!Le.current||W.current!==me){B.current?.clear();const Be=HQ();B.current=Be,Le.current=qne(Be),Lne(Le.current),W.current=me}return{queryClient:B.current,router:Le.current}},Ae=me=>me.authRequired?(S(!0),u(me.user),f(null),v(!1),i(me.user?"ready":"account-login"),!0):!1;_.useEffect(()=>{let me=!1;const Be=async(Ne,re=!1)=>{try{const Ye=await ag();if(me)return;f(Ye),v(!1),i("ready")}catch(Ye){if(me)return;if(re&&Ye instanceof yn&&Ye.statusCode===401)return dQ().then(()=>{me||(Ce(null),f(null),v(!1),ke(!0),i("login"))}).catch(vt=>{me||(Ce(vt instanceof Error?vt.message:"Could not clear the invalid session"),i(Ne))});Ce(Ye instanceof Error?Ye.message:"Could not verify API key access"),i(Ne)}};return e?(Be("api-key-error"),()=>{me=!0}):(Promise.allSettled([HS(),GS()]).then(([Ne,re])=>{if(me||Ne.status==="fulfilled"&&Ae(Ne.value))return;if(re.status==="rejected"){const vt=re.reason;Ce(vt instanceof Error?vt.message:"Failed to reach the Canonry API"),i("login");return}const Ye=re.value;Ye.authenticated?(v(!0),Be("api-key-error",!0)):(f(null),v(!1),i(Ye.setupRequired?"setup":"login"))}),()=>{me=!0})},[]),_.useEffect(()=>{if(n!=="ready"||e)return;const me=setInterval(()=>{if(x){HS().then(Be=>{Be.authRequired&&!Be.user&&(ke(!0),u(null),f(null),i("account-login"))}).catch(()=>{});return}GS().then(Be=>{Be.authenticated||(ke(!0),f(null),i(Be.setupRequired?"setup":"login"))}).catch(()=>{})},Fne);return KS(()=>{ke(!0),u(null),f(null),v(!1),i(x?"account-login":"login")}),()=>{clearInterval(me),KS(null)}},[n,x,e]);const se=async me=>{if(me.preventDefault(),!T.trim()||T.trim().length<8){Ce("Password must be at least 8 characters");return}if(T!==q){Ce("Passwords do not match");return}const Be=V.trim();if(Q&&!Be){Ce(Pr.missing);return}Ge(!0),Ce(null);try{if(!(await lQ(T.trim(),Q?Be:void 0)).authenticated){Ce("Setup failed");return}z(""),R(""),Z(""),ae(!1),M(!1),ke(!1),f(null),v(!0),i("checking");try{const re=await ag();f(re),v(!1),i("ready")}catch(re){Ce(re instanceof Error?re.message:"Could not verify API key access"),i("api-key-error")}}catch(Ne){if(Ne instanceof yn&&Ne.statusCode===401&&Ne.code==="AUTH_REQUIRED"){Ce(Q?Pr.rejected:null),ae(!0);return}Ce(Ne instanceof yn||Ne instanceof Error?Ne.message:"Setup failed")}finally{Ge(!1)}},Se=me=>{z(me),Ce(null)},Me=me=>{Z(me),Ce(null)},xe=me=>{R(me),Ce(null)},pe=async me=>{if(me.preventDefault(),!!T.trim()){Ge(!0),Ce(null);try{if(!(L==="api-key"?await uQ(T.trim()):await cQ(T.trim())).authenticated){Ce(L==="api-key"?"Invalid API key":"Incorrect password");return}const Ne=await ag();f(Ne),v(!1),z(""),M(!1),ke(!1),i("ready")}catch(Be){Ce(Be instanceof yn||Be instanceof Error?Be.message:"Authentication failed")}finally{Ge(!1)}}},ce=me=>{$(me),z(""),M(!1),Ce(null)},ue=async me=>{if(me.preventDefault(),!(!j.trim()||!T)){Ge(!0),Ce(null);try{const Be=await mQ(j.trim(),T);if(!Be.user){Ce("Incorrect name or password.");return}z(""),ke(!1),u(Be.user),f(null),v(!1),i("ready")}catch(Be){Ce(Be instanceof yn?Be.message:"Incorrect name or password.")}finally{Ge(!1)}}};if(n==="ready"){const{queryClient:me,router:Be}=ve();return l.jsx(IQ,{account:r,apiKey:h,apiKeyPending:b,children:l.jsx(o6,{client:me,children:l.jsx(r6,{router:Be})})})}const _e=T.trim(),Ze=T.length>0&&_e.length<8,Ee=q.length>0&&T!==q,Ct=_e.length>=8&&T===q&&(!Q||V.trim().length>0);return l.jsx("div",{className:"min-h-screen bg-bg px-4 py-8",children:l.jsxs("div",{className:"mx-auto flex min-h-[calc(100vh-4rem)] max-w-md flex-col items-center justify-center gap-5",children:[l.jsxs("div",{"data-testid":"auth-brand",className:"flex items-center gap-2.5",children:[l.jsx("img",{className:"size-7",src:"./favicon.svg",alt:"","aria-hidden":"true"}),l.jsx("span",{className:"text-lg font-semibold tracking-tight text-heading",children:"Canonry"})]}),l.jsx(Ta,{className:"surface-card w-full",children:n==="checking"?l.jsx(ko,{className:"py-8",children:l.jsx("p",{className:"supporting-copy text-center",children:"Connecting to Canonry…"})}):n==="api-key-error"?l.jsxs(l.Fragment,{children:[l.jsxs(Lr,{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),l.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Could not verify API key access"})]}),l.jsxs(ko,{className:"space-y-4",children:[l.jsx("p",{className:"supporting-copy",children:X??"Canonry could not verify this session’s access, so the dashboard stayed locked."}),l.jsx(le,{type:"button",className:"w-full",onClick:()=>{window.location.reload()},children:"Try again"})]})]}):n==="account-login"?l.jsxs(l.Fragment,{children:[l.jsxs(Lr,{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),l.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Sign in to Canonry"})]}),l.jsxs(ko,{children:[Ve?l.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,l.jsxs("form",{className:"space-y-4",onSubmit:gn(ue),children:[l.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-name",children:[l.jsx("span",{className:"text-xs font-medium text-secondary",children:"Name"}),l.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",name:"username",autoComplete:"username",value:j,onChange:me=>{C(me.target.value),Ce(null)},"aria-invalid":!!X,"aria-describedby":X?"account-login-error":void 0})]}),l.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-password",children:[l.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),l.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",name:"password",autoComplete:"current-password",value:T,onChange:me=>Se(me.target.value),"aria-invalid":!!X,"aria-describedby":X?"account-login-error":void 0})]}),X?l.jsx("p",{id:"account-login-error",role:"alert",className:"text-sm text-negative-400",children:X}):null,l.jsx(le,{type:"submit",disabled:tt||!j.trim()||!T,children:tt?"Signing in…":"Sign in"})]})]})]}):n==="setup"?l.jsxs(l.Fragment,{children:[l.jsxs(Lr,{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),l.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Create a dashboard password"}),l.jsx(Tm,{children:Qne})]}),l.jsx(ko,{children:l.jsxs("form",{className:"space-y-4",onSubmit:gn(se),children:[l.jsxs("div",{className:"space-y-1.5",children:[l.jsx("label",{className:"block text-xs font-medium text-secondary",htmlFor:"dashboard-password-new",children:"Password"}),l.jsx("input",{autoFocus:!0,id:"dashboard-password-new",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:P?"text":"password",name:"new-password",autoComplete:"new-password",minLength:8,required:!0,value:T,onChange:me=>Se(me.target.value),"aria-invalid":Ze,"aria-describedby":"dashboard-password-new-help"}),l.jsx("span",{id:"dashboard-password-new-help","aria-live":"polite",className:Ze?"block text-sm text-negative-400":"block text-sm text-secondary",children:Ze?"Enter at least 8 characters.":"Use at least 8 characters."})]}),l.jsxs("div",{className:"space-y-1.5",children:[l.jsx("label",{className:"block text-xs font-medium text-secondary",htmlFor:"dashboard-password-confirm",children:"Confirm password"}),l.jsx("input",{id:"dashboard-password-confirm",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:P?"text":"password",name:"confirm-password",autoComplete:"new-password",minLength:8,required:!0,value:q,onChange:me=>xe(me.target.value),"aria-invalid":Ee,"aria-describedby":"dashboard-password-confirm-help"}),l.jsx("span",{id:"dashboard-password-confirm-help","aria-live":"polite",className:Ee?"block text-sm text-negative-400":"block text-sm text-secondary",children:Ee?"Passwords do not match.":"Enter the same password again."})]}),Q?l.jsxs("div",{className:"space-y-1.5",children:[l.jsx("label",{className:"block text-xs font-medium text-secondary",htmlFor:"dashboard-setup-root-key",children:Pr.label}),l.jsx("input",{autoFocus:!0,id:"dashboard-setup-root-key",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:P?"text":"password",name:"apiKey",autoComplete:"off",spellCheck:!1,required:!0,value:V,onChange:me=>Me(me.target.value),"aria-invalid":X===Pr.rejected,"aria-describedby":"dashboard-setup-root-key-help"}),l.jsx("span",{id:"dashboard-setup-root-key-help","aria-live":"polite",className:"block text-sm text-secondary",children:Pr.help})]}):null,l.jsxs("label",{className:"flex min-h-10 cursor-pointer items-center gap-2 text-sm text-secondary",htmlFor:"dashboard-password-show",children:[l.jsx("input",{id:"dashboard-password-show",type:"checkbox",checked:P,onChange:me=>M(me.target.checked)}),Q?Pr.show:"Show passwords"]}),X?l.jsx("p",{id:"dashboard-password-setup-error",role:"alert",className:"text-sm text-negative-400",children:X}):null,l.jsx(le,{type:"submit",disabled:tt||!Ct,children:tt?"Creating password…":"Create password and continue"})]})})]}):l.jsxs(l.Fragment,{children:[l.jsxs(Lr,{children:[l.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),l.jsx("h1",{className:"font-medium tracking-tight text-primary",children:"Sign in to Canonry"}),l.jsx(Tm,{children:L==="api-key"?"Enter an API key from this Canonry install. This opens the dashboard with that key’s access and does not change the password.":"Enter your dashboard password to continue."})]}),l.jsxs(ko,{children:[Ve?l.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,l.jsxs("form",{className:"space-y-4",onSubmit:gn(pe),children:[l.jsxs("label",{className:"block space-y-1.5",htmlFor:"dashboard-password-current",children:[l.jsx("span",{className:"text-xs font-medium text-secondary",children:L==="api-key"?"Canonry API key":"Password"}),l.jsx("input",{autoFocus:!0,id:"dashboard-password-current",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:P?"text":"password",name:L==="api-key"?"apiKey":"password",autoComplete:L==="api-key"?"off":"current-password",spellCheck:!1,required:!0,value:T,onChange:me=>Se(me.target.value),"aria-invalid":!!X,"aria-describedby":X?"dashboard-password-login-error":void 0})]}),l.jsxs("label",{className:"flex min-h-10 cursor-pointer items-center gap-2 text-sm text-secondary",htmlFor:"dashboard-login-password-show",children:[l.jsx("input",{id:"dashboard-login-password-show",type:"checkbox",checked:P,onChange:me=>M(me.target.checked)}),L==="api-key"?"Show API key":"Show password"]}),X?l.jsx("p",{id:"dashboard-password-login-error",role:"alert",className:"text-sm text-negative-400",children:X}):null,l.jsx(le,{type:"submit",disabled:tt||!T.trim(),children:tt?"Signing in…":"Open dashboard"}),l.jsx(le,{type:"button",variant:"ghost",onClick:()=>ce(L==="api-key"?"password":"api-key"),children:L==="api-key"?"Use dashboard password instead":"Forgot password? Use API key"})]})]})]})})]})})}const Q4=document.getElementById("root");if(!Q4)throw new Error("Expected #root element for web app bootstrap.");Bne();I6.createRoot(Q4).render(l.jsx(_.StrictMode,{children:l.jsx(Zne,{})}));export{dJ as $,To as A,le as B,Ec as C,Pn as D,gn as E,Hoe as F,Zoe as G,Qoe as H,ma as I,Fie as J,Zie as K,Qae as L,bre as M,Goe as N,Zae as O,Bae as P,Fae as Q,Fa as R,qk as S,Sn as T,Xae as U,Qie as V,Yae as W,ga as X,XQ as Y,Ire as Z,Ore as _,yre as a,Rie as a$,iZ as a0,Lae as a1,bse as a2,kse as a3,vie as a4,gse as a5,Soe as a6,Aoe as a7,joe as a8,_ie as a9,zoe as aA,o4 as aB,Fi as aC,Doe as aD,r0 as aE,_9 as aF,T9 as aG,jae as aH,kae as aI,ise as aJ,use as aK,dse as aL,yn as aM,mse as aN,uie as aO,JQ as aP,uX as aQ,Gg as aR,pse as aS,Wd as aT,Xoe as aU,a0 as aV,So as aW,tZ as aX,$Q as aY,Pse as aZ,mW as a_,Cie as aa,Mie as ab,vn as ac,_oe as ad,Toe as ae,zie as af,Eoe as ag,Iie as ah,Eie as ai,Die as aj,Noe as ak,Coe as al,koe as am,Tie as an,e4 as ao,Oe as ap,Nt as aq,F0 as ar,Roe as as,Moe as at,Ioe as au,Poe as av,Ooe as aw,qoe as ax,tse as ay,ry as az,Sse as b,fie as b$,$ae as b0,Uae as b1,Li as b2,Tre as b3,Hae as b4,rie as b5,BB as b6,iie as b7,Gae as b8,wse as b9,Yoe as bA,Wse as bB,toe as bC,coe as bD,voe as bE,boe as bF,roe as bG,goe as bH,woe as bI,aoe as bJ,doe as bK,moe as bL,poe as bM,noe as bN,uoe as bO,ioe as bP,hoe as bQ,soe as bR,foe as bS,loe as bT,yoe as bU,xoe as bV,Wee as bW,ooe as bX,sie as bY,yie as bZ,gie as b_,Kae as ba,hZ as bb,MZ as bc,Vse as bd,Fse as be,$se as bf,eie as bg,nie as bh,XK as bi,aie as bj,NZ as bk,Use as bl,WK as bm,$g as bn,tie as bo,GF as bp,Kse as bq,Lse as br,_Z as bs,Gse as bt,hse as bu,Hse as bv,nre as bw,are as bx,Oie as by,t4 as bz,Sae as c,sQ as c$,Hie as c0,KF as c1,i3 as c2,su as c3,s3 as c4,Es as c5,Yse as c6,Aae as c7,UZ as c8,eoe as c9,GZ as cA,ute as cB,Pre as cC,kre as cD,cW as cE,Sre as cF,ate as cG,Qse as cH,Ese as cI,wre as cJ,Ose as cK,Rse as cL,nP as cM,iB as cN,Zse as cO,xre as cP,zse as cQ,hre as cR,bW as cS,nQ as cT,rZ as cU,vW as cV,mie as cW,Uq as cX,qae as cY,pie as cZ,die as c_,Nse as ca,Vae as cb,WS as cc,wie as cd,Sie as ce,jse as cf,Ase as cg,kie as ch,jie as ci,Nie as cj,Aie as ck,yu as cl,Fo as cm,UC as cn,Tse as co,_se as cp,YJ as cq,Wg as cr,Nm as cs,e0 as ct,Cm as cu,_m as cv,dW as cw,bZ as cx,jo as cy,Em as cz,aZ as d,Pae as d$,jre as d0,Are as d1,Nre as d2,_re as d3,hie as d4,pZ as d5,bie as d6,oJ as d7,Boe as d8,gQ as d9,dy as dA,cte as dB,Gie as dC,Jr as dD,tk as dE,nse as dF,sse as dG,rse as dH,lse as dI,ase as dJ,ose as dK,cse as dL,eg as dM,ese as dN,ere as dO,Zee as dP,Wae as dQ,L1 as dR,Cse as dS,Joe as dT,tre as dU,Wie as dV,Jae as dW,Xie as dX,Jie as dY,Yie as dZ,Woe as d_,$ie as da,Uoe as db,Voe as dc,$oe as dd,Loe as de,vse as df,Bie as dg,Lie as dh,Uie as di,Kie as dj,Vie as dk,uy as dl,Fc as dm,zre as dn,gu as dp,Xse as dq,Jse as dr,ZF as ds,lie as dt,cie as du,xie as dv,Pie as dw,qie as dx,fy as dy,mp as dz,nZ as e,dre as e$,m9 as e0,za as e1,p9 as e2,Bq as e3,Dse as e4,yse as e5,jP as e6,qse as e7,Ise as e8,Bse as e9,Iae as eA,Tae as eB,u2 as eC,Zi as eD,Oa as eE,_ae as eF,Sm as eG,oie as eH,MY as eI,sre as eJ,ire as eK,ite as eL,lre as eM,fW as eN,Nae as eO,fre as eP,gre as eQ,ore as eR,rre as eS,Cae as eT,ure as eU,pre as eV,cre as eW,mre as eX,Po as eY,Oae as eZ,Rae as e_,Mse as ea,mk as eb,ye as ec,wae as ed,xae as ee,vae as ef,bae as eg,fae as eh,hae as ei,yae as ej,gae as ek,pae as el,mae as em,sae as en,oae as eo,dae as ep,uae as eq,cae as er,rae as es,lae as et,iae as eu,aae as ev,nae as ew,oT as ex,sT as ey,Tq as ez,um as f,Eae as f0,mq as f1,zae as f2,Dae as f3,Ere as g,Cre as h,Rre as i,Dre as j,t0 as k,Wc as l,vre as m,cK as n,mJ as o,wF as p,fse as q,Koe as r,xse as s,eZ as t,my as u,Foe as v,Ta as w,Mae as x,J as y,rp as z};