@canonry/canonry 4.176.0 → 4.177.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/agent-workspace/skills/canonry/references/server-side-traffic.md +15 -0
- package/assets/assets/{AuditHistoryPanel-aEUCJheK.js → AuditHistoryPanel-YZvGU1la.js} +1 -1
- package/assets/assets/{BacklinksPage-BcWequGL.js → BacklinksPage-CB2uJWWy.js} +1 -1
- package/assets/assets/{HistoryPage-D0BWQK0c.js → HistoryPage-D9IxxbQ9.js} +1 -1
- package/assets/assets/{MeasurementPropertyPage-D96eQnYJ.js → MeasurementPropertyPage-CxgnnPdp.js} +1 -1
- package/assets/assets/{ProjectPage-CoRkwGec.js → ProjectPage-CPmaXzhL.js} +8 -8
- package/assets/assets/{RunRow--3y-0dSr.js → RunRow-2KxOta8F.js} +1 -1
- package/assets/assets/{RunsPage-7wdCl_J3.js → RunsPage-ya8vTkyd.js} +1 -1
- package/assets/assets/{SettingsPage-D37dV5-m.js → SettingsPage-lTy3o2bo.js} +1 -1
- package/assets/assets/{SiteHealthSection-B9WF97sJ.js → SiteHealthSection-Cyu7MIv2.js} +3 -3
- package/assets/assets/TrafficPage-DjhKfw57.js +1 -0
- package/assets/assets/TrafficSourceDetailPage-Pwi-Dl9Q.js +1 -0
- package/assets/assets/{extract-error-message-DlPqK0mV.js → extract-error-message-I1FVWHLH.js} +1 -1
- package/assets/assets/{index-CiQNKNMG.js → index-BeLVKN3H.js} +3 -3
- package/assets/assets/{react-sigma_core.esm.min-Dc7_SFjo.js → react-sigma_core.esm.min-BX6mOEq5.js} +1 -1
- package/assets/index.html +1 -1
- package/dist/{chunk-TIEHKR6K.js → chunk-F4ZZKGAC.js} +1 -1
- package/dist/{chunk-OSMUOPBR.js → chunk-UXXXKDW4.js} +70 -6
- package/dist/{chunk-HYKZOCBT.js → chunk-WW7TDVLV.js} +2 -2
- package/dist/{chunk-J3RVQCCQ.js → chunk-X776E66Z.js} +680 -634
- package/dist/{chunk-DSGX2IAI.js → chunk-YWFNRDLK.js} +4 -4
- package/dist/cli.js +7 -7
- package/dist/index.js +4 -4
- package/dist/{intelligence-service-RSZTVVX2.js → intelligence-service-QLLGPZOC.js} +2 -2
- package/dist/mcp.js +3 -3
- package/package.json +9 -9
- package/assets/assets/TrafficPage-Bn1yDSRr.js +0 -1
- package/assets/assets/TrafficSourceDetailPage-CURlB_yO.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SiteHealthSection-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SiteHealthSection-Cyu7MIv2.js","./vendor-tanstack-Dock0eH1.js","./vendor-lucide-nYKv-BB7.js","./ChartPrimitives-BoYe2M-i.js","./vendor-recharts-D8rt5lKn.js","./ProjectPage-CPmaXzhL.js","./RunRow-2KxOta8F.js","./extract-error-message-I1FVWHLH.js","./AuditHistoryPanel-YZvGU1la.js","./v2-overview-adapter-COMP5UGt.js","./vendor-radix-4UOaVWza.js","./vendor-markdown-Bn7fRwrx.js","./vendor-yaml-GWJz5H2G.js","./RunsPage-ya8vTkyd.js","./HistoryPage-D9IxxbQ9.js","./SettingsPage-lTy3o2bo.js","./BacklinksPage-CB2uJWWy.js","./TrafficPage-DjhKfw57.js","./TrafficSourceDetailPage-Pwi-Dl9Q.js","./MeasurementPropertyPage-CxgnnPdp.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{c as ij,d as sj,r as D,j as c,Q as oj,M as rj,q as pe,e as uu,L as et,a as lj,t as ro,u as Ft,f as cj,h as ms,k as Tv,l as uj,m as Rv,O as zp,n as Vn,o as ps,p as dj,s as xt,v as Ov,x as Ci,y as mj,z as pj,A as hj}from"./vendor-tanstack-Dock0eH1.js";import{S as fj,O as r0,P as Bv,C as l0,a as qv,T as c0,D as Mv,R as Pv}from"./vendor-radix-4UOaVWza.js";import{c as Iv}from"./vendor-recharts-D8rt5lKn.js";import{A as gj,X as zo,S as yj,L as bo,C as u0,R as yy,a as Vv,M as bj,b as vj,c as xj,d as d0,T as Lv,W as kj,e as m0,f as Uv,g as wj,G as Sj,P as jj,H as Aj,h as Cj,i as Nj,j as _j,k as zj,l as Dj,B as Ej,F as Tj,m as Rj,n as Oj,o as Bj,p as by,E as qj}from"./vendor-lucide-nYKv-BB7.js";import{M as Mj}from"./vendor-markdown-Bn7fRwrx.js";import{p as Pj}from"./vendor-yaml-GWJz5H2G.js";(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const u of document.querySelectorAll('link[rel="modulepreload"]'))r(u);new MutationObserver(u=>{for(const f of u)if(f.type==="childList")for(const g of f.addedNodes)g.tagName==="LINK"&&g.rel==="modulepreload"&&r(g)}).observe(document,{childList:!0,subtree:!0});function s(u){const f={};return u.integrity&&(f.integrity=u.integrity),u.referrerPolicy&&(f.referrerPolicy=u.referrerPolicy),u.crossOrigin==="use-credentials"?f.credentials="include":u.crossOrigin==="anonymous"?f.credentials="omit":f.credentials="same-origin",f}function r(u){if(u.ep)return;u.ep=!0;const f=s(u);fetch(u.href,f)}})();var Jm={exports:{}},Or={},Wm={exports:{}},ep={};var vy;function Ij(){return vy||(vy=1,(function(e){function n(V,ne){var fe=V.length;V.push(ne);e:for(;0<fe;){var De=fe-1>>>1,le=V[De];if(0<u(le,ne))V[De]=ne,V[fe]=le,fe=De;else break e}}function s(V){return V.length===0?null:V[0]}function r(V){if(V.length===0)return null;var ne=V[0],fe=V.pop();if(fe!==ne){V[0]=fe;e:for(var De=0,le=V.length,at=le>>>1;De<at;){var H=2*(De+1)-1,ue=V[H],ie=H+1,re=V[ie];if(0>u(ue,fe))ie<le&&0>u(re,ue)?(V[De]=re,V[ie]=fe,De=ie):(V[De]=ue,V[H]=fe,De=H);else if(ie<le&&0>u(re,fe))V[De]=re,V[ie]=fe,De=ie;else break e}}return ne}function u(V,ne){var fe=V.sortIndex-ne.sortIndex;return fe!==0?fe:V.id-ne.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var f=performance;e.unstable_now=function(){return f.now()}}else{var g=Date,b=g.now();e.unstable_now=function(){return g.now()-b}}var x=[],k=[],S=1,C=null,j=3,E=!1,B=!1,q=!1,U=!1,G=typeof setTimeout=="function"?setTimeout:null,te=typeof clearTimeout=="function"?clearTimeout:null,X=typeof setImmediate<"u"?setImmediate:null;function ae(V){for(var ne=s(k);ne!==null;){if(ne.callback===null)r(k);else if(ne.startTime<=V)r(k),ne.sortIndex=ne.expirationTime,n(x,ne);else break;ne=s(k)}}function oe(V){if(q=!1,ae(V),!B)if(s(x)!==null)B=!0,ge||(ge=!0,Oe());else{var ne=s(k);ne!==null&&ye(oe,ne.startTime-V)}}var ge=!1,M=-1,J=5,_e=-1;function he(){return U?!0:!(e.unstable_now()-_e<J)}function we(){if(U=!1,ge){var V=e.unstable_now();_e=V;var ne=!0;try{e:{B=!1,q&&(q=!1,te(M),M=-1),E=!0;var fe=j;try{t:{for(ae(V),C=s(x);C!==null&&!(C.expirationTime>V&&he());){var De=C.callback;if(typeof De=="function"){C.callback=null,j=C.priorityLevel;var le=De(C.expirationTime<=V);if(V=e.unstable_now(),typeof le=="function"){C.callback=le,ae(V),ne=!0;break t}C===s(x)&&r(x),ae(V)}else r(x);C=s(x)}if(C!==null)ne=!0;else{var at=s(k);at!==null&&ye(oe,at.startTime-V),ne=!1}}break e}finally{C=null,j=fe,E=!1}ne=void 0}}finally{ne?Oe():ge=!1}}}var Oe;if(typeof X=="function")Oe=function(){X(we)};else if(typeof MessageChannel<"u"){var je=new MessageChannel,Fe=je.port2;je.port1.onmessage=we,Oe=function(){Fe.postMessage(null)}}else Oe=function(){G(we,0)};function ye(V,ne){M=G(function(){V(e.unstable_now())},ne)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(V){V.callback=null},e.unstable_forceFrameRate=function(V){0>V||125<V?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):J=0<V?Math.floor(1e3/V):5},e.unstable_getCurrentPriorityLevel=function(){return j},e.unstable_next=function(V){switch(j){case 1:case 2:case 3:var ne=3;break;default:ne=j}var fe=j;j=ne;try{return V()}finally{j=fe}},e.unstable_requestPaint=function(){U=!0},e.unstable_runWithPriority=function(V,ne){switch(V){case 1:case 2:case 3:case 4:case 5:break;default:V=3}var fe=j;j=V;try{return ne()}finally{j=fe}},e.unstable_scheduleCallback=function(V,ne,fe){var De=e.unstable_now();switch(typeof fe=="object"&&fe!==null?(fe=fe.delay,fe=typeof fe=="number"&&0<fe?De+fe:De):fe=De,V){case 1:var le=-1;break;case 2:le=250;break;case 5:le=1073741823;break;case 4:le=1e4;break;default:le=5e3}return le=fe+le,V={id:S++,callback:ne,priorityLevel:V,startTime:fe,expirationTime:le,sortIndex:-1},fe>De?(V.sortIndex=fe,n(k,V),s(x)===null&&V===s(k)&&(q?(te(M),M=-1):q=!0,ye(oe,fe-De))):(V.sortIndex=le,n(x,V),B||E||(B=!0,ge||(ge=!0,Oe()))),V},e.unstable_shouldYield=he,e.unstable_wrapCallback=function(V){var ne=j;return function(){var fe=j;j=ne;try{return V.apply(this,arguments)}finally{j=fe}}}})(ep)),ep}var xy;function Vj(){return xy||(xy=1,Wm.exports=Ij()),Wm.exports}var ky;function Lj(){if(ky)return Or;ky=1;var e=Vj(),n=ij(),s=sj();function r(t){var a="https://react.dev/errors/"+t;if(1<arguments.length){a+="?args[]="+encodeURIComponent(arguments[1]);for(var i=2;i<arguments.length;i++)a+="&args[]="+encodeURIComponent(arguments[i])}return"Minified React error #"+t+"; visit "+a+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function u(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)}function f(t){var a=t,i=t;if(t.alternate)for(;a.return;)a=a.return;else{t=a;do a=t,(a.flags&4098)!==0&&(i=a.return),t=a.return;while(t)}return a.tag===3?i:null}function g(t){if(t.tag===13){var a=t.memoizedState;if(a===null&&(t=t.alternate,t!==null&&(a=t.memoizedState)),a!==null)return a.dehydrated}return null}function b(t){if(t.tag===31){var a=t.memoizedState;if(a===null&&(t=t.alternate,t!==null&&(a=t.memoizedState)),a!==null)return a.dehydrated}return null}function x(t){if(f(t)!==t)throw Error(r(188))}function k(t){var a=t.alternate;if(!a){if(a=f(t),a===null)throw Error(r(188));return a!==t?null:t}for(var i=t,l=a;;){var d=i.return;if(d===null)break;var h=d.alternate;if(h===null){if(l=d.return,l!==null){i=l;continue}break}if(d.child===h.child){for(h=d.child;h;){if(h===i)return x(d),t;if(h===l)return x(d),a;h=h.sibling}throw Error(r(188))}if(i.return!==l.return)i=d,l=h;else{for(var v=!1,w=d.child;w;){if(w===i){v=!0,i=d,l=h;break}if(w===l){v=!0,l=d,i=h;break}w=w.sibling}if(!v){for(w=h.child;w;){if(w===i){v=!0,i=h,l=d;break}if(w===l){v=!0,l=h,i=d;break}w=w.sibling}if(!v)throw Error(r(189))}}if(i.alternate!==l)throw Error(r(190))}if(i.tag!==3)throw Error(r(188));return i.stateNode.current===i?t:a}function S(t){var a=t.tag;if(a===5||a===26||a===27||a===6)return t;for(t=t.child;t!==null;){if(a=S(t),a!==null)return a;t=t.sibling}return null}var C=Object.assign,j=Symbol.for("react.element"),E=Symbol.for("react.transitional.element"),B=Symbol.for("react.portal"),q=Symbol.for("react.fragment"),U=Symbol.for("react.strict_mode"),G=Symbol.for("react.profiler"),te=Symbol.for("react.consumer"),X=Symbol.for("react.context"),ae=Symbol.for("react.forward_ref"),oe=Symbol.for("react.suspense"),ge=Symbol.for("react.suspense_list"),M=Symbol.for("react.memo"),J=Symbol.for("react.lazy"),_e=Symbol.for("react.activity"),he=Symbol.for("react.memo_cache_sentinel"),we=Symbol.iterator;function Oe(t){return t===null||typeof t!="object"?null:(t=we&&t[we]||t["@@iterator"],typeof t=="function"?t:null)}var je=Symbol.for("react.client.reference");function Fe(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===je?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case q:return"Fragment";case G:return"Profiler";case U:return"StrictMode";case oe:return"Suspense";case ge:return"SuspenseList";case _e:return"Activity"}if(typeof t=="object")switch(t.$$typeof){case B:return"Portal";case X:return t.displayName||"Context";case te:return(t._context.displayName||"Context")+".Consumer";case ae:var a=t.render;return t=t.displayName,t||(t=a.displayName||a.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case M:return a=t.displayName||null,a!==null?a:Fe(t.type)||"Memo";case J:a=t._payload,t=t._init;try{return Fe(t(a))}catch{}}return null}var ye=Array.isArray,V=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ne=s.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,fe={pending:!1,data:null,method:null,action:null},De=[],le=-1;function at(t){return{current:t}}function H(t){0>le||(t.current=De[le],De[le]=null,le--)}function ue(t,a){le++,De[le]=t.current,t.current=a}var ie=at(null),re=at(null),W=at(null),Z=at(null);function Ne(t,a){switch(ue(W,a),ue(re,t),ue(ie,null),a.nodeType){case 9:case 11:t=(t=a.documentElement)&&(t=t.namespaceURI)?V1(t):0;break;default:if(t=a.tagName,a=a.namespaceURI)a=V1(a),t=L1(a,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}H(ie),ue(ie,t)}function Ae(){H(ie),H(re),H(W)}function st(t){t.memoizedState!==null&&ue(Z,t);var a=ie.current,i=L1(a,t.type);a!==i&&(ue(re,t),ue(ie,i))}function Qe(t){re.current===t&&(H(ie),H(re)),Z.current===t&&(H(Z),Dr._currentValue=fe)}var Pt,jt;function Ct(t){if(Pt===void 0)try{throw Error()}catch(i){var a=i.stack.trim().match(/\n( *(at )?)/);Pt=a&&a[1]||"",jt=-1<i.stack.indexOf(`
|
|
3
3
|
at`)?" (<anonymous>)":-1<i.stack.indexOf("@")?"@unknown:0:0":""}return`
|
|
4
4
|
`+Pt+t+jt}var Gn=!1;function Ri(t,a){if(!t||Gn)return"";Gn=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var l={DetermineComponentFrameRoot:function(){try{if(a){var ee=function(){throw Error()};if(Object.defineProperty(ee.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(ee,[])}catch($){var L=$}Reflect.construct(t,[],ee)}else{try{ee.call()}catch($){L=$}t.call(ee.prototype)}}else{try{throw Error()}catch($){L=$}(ee=t())&&typeof ee.catch=="function"&&ee.catch(function(){})}}catch($){if($&&L&&typeof $.stack=="string")return[$.stack,L.stack]}return[null,null]}};l.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var d=Object.getOwnPropertyDescriptor(l.DetermineComponentFrameRoot,"name");d&&d.configurable&&Object.defineProperty(l.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var h=l.DetermineComponentFrameRoot(),v=h[0],w=h[1];if(v&&w){var N=v.split(`
|
|
@@ -49,7 +49,7 @@ Error generating stack: `+l.message+`
|
|
|
49
49
|
|
|
50
50
|
`)}E.write("payload.value = newResult;"),E.write("return payload;");const te=E.compile();return(X,ae)=>te(j,X,ae)};let f;const g=Fr,b=!yx.jitless,k=b&&WA.value,S=n.catchall;let C;e._zod.parse=(j,E)=>{C??(C=r.value);const B=j.value;return g(B)?b&&k&&E?.async===!1&&E.jitless!==!0?(f||(f=u(n.shape)),j=f(j,E),S?Ox([],B,j,E,C,e):j):s(j,E):(j.issues.push({expected:"object",code:"invalid_type",input:B,inst:e}),j)}});function qy(e,n,s,r){for(const f of e)if(f.issues.length===0)return n.value=f.value,n;const u=e.filter(f=>!mo(f));return u.length===1?(n.value=u[0].value,u[0]):(n.issues.push({code:"invalid_union",input:n.value,inst:s,errors:e.map(f=>f.issues.map(g=>ji(g,r,Si())))}),n)}const Bx=Q("$ZodUnion",(e,n)=>{kt.init(e,n),it(e._zod,"optin",()=>n.options.some(u=>u._zod.optin==="optional")?"optional":void 0),it(e._zod,"optout",()=>n.options.some(u=>u._zod.optout==="optional")?"optional":void 0),it(e._zod,"values",()=>{if(n.options.every(u=>u._zod.values))return new Set(n.options.flatMap(u=>Array.from(u._zod.values)))}),it(e._zod,"pattern",()=>{if(n.options.every(u=>u._zod.pattern)){const u=n.options.map(f=>f._zod.pattern);return new RegExp(`^(${u.map(f=>v0(f.source)).join("|")})$`)}});const s=n.options.length===1,r=n.options[0]._zod.run;e._zod.parse=(u,f)=>{if(s)return r(u,f);let g=!1;const b=[];for(const x of n.options){const k=x._zod.run({value:u.value,issues:[]},f);if(k instanceof Promise)b.push(k),g=!0;else{if(k.issues.length===0)return k;b.push(k)}}return g?Promise.all(b).then(x=>qy(x,u,e,f)):qy(b,u,e,f)}}),LN=Q("$ZodDiscriminatedUnion",(e,n)=>{n.inclusive=!1,Bx.init(e,n);const s=e._zod.parse;it(e._zod,"propValues",()=>{const u={};for(const f of n.options){const g=f._zod.propValues;if(!g||Object.keys(g).length===0)throw new Error(`Invalid discriminated union option at index "${n.options.indexOf(f)}"`);for(const[b,x]of Object.entries(g)){u[b]||(u[b]=new Set);for(const k of x)u[b].add(k)}}return u});const r=mu(()=>{const u=n.options,f=new Map;for(const g of u){const b=g._zod.propValues?.[n.discriminator];if(!b||b.size===0)throw new Error(`Invalid discriminated union option at index "${n.options.indexOf(g)}"`);for(const x of b){if(f.has(x))throw new Error(`Duplicate discriminator value "${String(x)}"`);f.set(x,g)}}return f});e._zod.parse=(u,f)=>{const g=u.value;if(!Fr(g))return u.issues.push({code:"invalid_type",expected:"object",input:g,inst:e}),u;const b=r.value.get(g?.[n.discriminator]);return b?b._zod.run(u,f):n.unionFallback?s(u,f):(u.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:n.discriminator,input:g,path:[n.discriminator],inst:e}),u)}}),UN=Q("$ZodIntersection",(e,n)=>{kt.init(e,n),e._zod.parse=(s,r)=>{const u=s.value,f=n.left._zod.run({value:u,issues:[]},r),g=n.right._zod.run({value:u,issues:[]},r);return f instanceof Promise||g instanceof Promise?Promise.all([f,g]).then(([x,k])=>My(s,x,k)):My(s,f,g)}});function qp(e,n){if(e===n)return{valid:!0,data:e};if(e instanceof Date&&n instanceof Date&&+e==+n)return{valid:!0,data:e};if(xo(e)&&xo(n)){const s=Object.keys(n),r=Object.keys(e).filter(f=>s.indexOf(f)!==-1),u={...e,...n};for(const f of r){const g=qp(e[f],n[f]);if(!g.valid)return{valid:!1,mergeErrorPath:[f,...g.mergeErrorPath]};u[f]=g.data}return{valid:!0,data:u}}if(Array.isArray(e)&&Array.isArray(n)){if(e.length!==n.length)return{valid:!1,mergeErrorPath:[]};const s=[];for(let r=0;r<e.length;r++){const u=e[r],f=n[r],g=qp(u,f);if(!g.valid)return{valid:!1,mergeErrorPath:[r,...g.mergeErrorPath]};s.push(g.data)}return{valid:!0,data:s}}return{valid:!1,mergeErrorPath:[]}}function My(e,n,s){const r=new Map;let u;for(const b of n.issues)if(b.code==="unrecognized_keys"){u??(u=b);for(const x of b.keys)r.has(x)||r.set(x,{}),r.get(x).l=!0}else e.issues.push(b);for(const b of s.issues)if(b.code==="unrecognized_keys")for(const x of b.keys)r.has(x)||r.set(x,{}),r.get(x).r=!0;else e.issues.push(b);const f=[...r].filter(([,b])=>b.l&&b.r).map(([b])=>b);if(f.length&&u&&e.issues.push({...u,keys:f}),mo(e))return e;const g=qp(n.value,s.value);if(!g.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(g.mergeErrorPath)}`);return e.value=g.data,e}const GN=Q("$ZodRecord",(e,n)=>{kt.init(e,n),e._zod.parse=(s,r)=>{const u=s.value;if(!xo(u))return s.issues.push({expected:"record",code:"invalid_type",input:u,inst:e}),s;const f=[],g=n.keyType._zod.values;if(g){s.value={};const b=new Set;for(const k of g)if(typeof k=="string"||typeof k=="number"||typeof k=="symbol"){b.add(typeof k=="number"?k.toString():k);const S=n.valueType._zod.run({value:u[k],issues:[]},r);S instanceof Promise?f.push(S.then(C=>{C.issues.length&&s.issues.push(...po(k,C.issues)),s.value[k]=C.value})):(S.issues.length&&s.issues.push(...po(k,S.issues)),s.value[k]=S.value)}let x;for(const k in u)b.has(k)||(x=x??[],x.push(k));x&&x.length>0&&s.issues.push({code:"unrecognized_keys",input:u,inst:e,keys:x})}else{s.value={};for(const b of Reflect.ownKeys(u)){if(b==="__proto__")continue;let x=n.keyType._zod.run({value:b,issues:[]},r);if(x instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof b=="string"&&Nx.test(b)&&x.issues.length){const C=n.keyType._zod.run({value:Number(b),issues:[]},r);if(C instanceof Promise)throw new Error("Async schemas not supported in object keys currently");C.issues.length===0&&(x=C)}if(x.issues.length){n.mode==="loose"?s.value[b]=u[b]:s.issues.push({code:"invalid_key",origin:"record",issues:x.issues.map(C=>ji(C,r,Si())),input:b,path:[b],inst:e});continue}const S=n.valueType._zod.run({value:u[b],issues:[]},r);S instanceof Promise?f.push(S.then(C=>{C.issues.length&&s.issues.push(...po(b,C.issues)),s.value[x.value]=C.value})):(S.issues.length&&s.issues.push(...po(b,S.issues)),s.value[x.value]=S.value)}}return f.length?Promise.all(f).then(()=>s):s}}),$N=Q("$ZodEnum",(e,n)=>{kt.init(e,n);const s=bx(n.entries),r=new Set(s);e._zod.values=r,e._zod.pattern=new RegExp(`^(${s.filter(u=>eC.has(typeof u)).map(u=>typeof u=="string"?ko(u):u.toString()).join("|")})$`),e._zod.parse=(u,f)=>{const g=u.value;return r.has(g)||u.issues.push({code:"invalid_value",values:s,input:g,inst:e}),u}}),HN=Q("$ZodLiteral",(e,n)=>{if(kt.init(e,n),n.values.length===0)throw new Error("Cannot create literal schema with no valid values");const s=new Set(n.values);e._zod.values=s,e._zod.pattern=new RegExp(`^(${n.values.map(r=>typeof r=="string"?ko(r):r?ko(r.toString()):String(r)).join("|")})$`),e._zod.parse=(r,u)=>{const f=r.value;return s.has(f)||r.issues.push({code:"invalid_value",values:n.values,input:f,inst:e}),r}}),KN=Q("$ZodTransform",(e,n)=>{kt.init(e,n),e._zod.parse=(s,r)=>{if(r.direction==="backward")throw new gx(e.constructor.name);const u=n.transform(s.value,s);if(r.async)return(u instanceof Promise?u:Promise.resolve(u)).then(g=>(s.value=g,s));if(u instanceof Promise)throw new fo;return s.value=u,s}});function Py(e,n){return e.issues.length&&n===void 0?{issues:[],value:void 0}:e}const qx=Q("$ZodOptional",(e,n)=>{kt.init(e,n),e._zod.optin="optional",e._zod.optout="optional",it(e._zod,"values",()=>n.innerType._zod.values?new Set([...n.innerType._zod.values,void 0]):void 0),it(e._zod,"pattern",()=>{const s=n.innerType._zod.pattern;return s?new RegExp(`^(${v0(s.source)})?$`):void 0}),e._zod.parse=(s,r)=>{if(n.innerType._zod.optin==="optional"){const u=n.innerType._zod.run(s,r);return u instanceof Promise?u.then(f=>Py(f,s.value)):Py(u,s.value)}return s.value===void 0?s:n.innerType._zod.run(s,r)}}),QN=Q("$ZodExactOptional",(e,n)=>{qx.init(e,n),it(e._zod,"values",()=>n.innerType._zod.values),it(e._zod,"pattern",()=>n.innerType._zod.pattern),e._zod.parse=(s,r)=>n.innerType._zod.run(s,r)}),ZN=Q("$ZodNullable",(e,n)=>{kt.init(e,n),it(e._zod,"optin",()=>n.innerType._zod.optin),it(e._zod,"optout",()=>n.innerType._zod.optout),it(e._zod,"pattern",()=>{const s=n.innerType._zod.pattern;return s?new RegExp(`^(${v0(s.source)}|null)$`):void 0}),it(e._zod,"values",()=>n.innerType._zod.values?new Set([...n.innerType._zod.values,null]):void 0),e._zod.parse=(s,r)=>s.value===null?s:n.innerType._zod.run(s,r)}),FN=Q("$ZodDefault",(e,n)=>{kt.init(e,n),e._zod.optin="optional",it(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(s,r)=>{if(r.direction==="backward")return n.innerType._zod.run(s,r);if(s.value===void 0)return s.value=n.defaultValue,s;const u=n.innerType._zod.run(s,r);return u instanceof Promise?u.then(f=>Iy(f,n)):Iy(u,n)}});function Iy(e,n){return e.value===void 0&&(e.value=n.defaultValue),e}const YN=Q("$ZodPrefault",(e,n)=>{kt.init(e,n),e._zod.optin="optional",it(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(s,r)=>(r.direction==="backward"||s.value===void 0&&(s.value=n.defaultValue),n.innerType._zod.run(s,r))}),XN=Q("$ZodNonOptional",(e,n)=>{kt.init(e,n),it(e._zod,"values",()=>{const s=n.innerType._zod.values;return s?new Set([...s].filter(r=>r!==void 0)):void 0}),e._zod.parse=(s,r)=>{const u=n.innerType._zod.run(s,r);return u instanceof Promise?u.then(f=>Vy(f,e)):Vy(u,e)}});function Vy(e,n){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:n}),e}const JN=Q("$ZodCatch",(e,n)=>{kt.init(e,n),it(e._zod,"optin",()=>n.innerType._zod.optin),it(e._zod,"optout",()=>n.innerType._zod.optout),it(e._zod,"values",()=>n.innerType._zod.values),e._zod.parse=(s,r)=>{if(r.direction==="backward")return n.innerType._zod.run(s,r);const u=n.innerType._zod.run(s,r);return u instanceof Promise?u.then(f=>(s.value=f.value,f.issues.length&&(s.value=n.catchValue({...s,error:{issues:f.issues.map(g=>ji(g,r,Si()))},input:s.value}),s.issues=[]),s)):(s.value=u.value,u.issues.length&&(s.value=n.catchValue({...s,error:{issues:u.issues.map(f=>ji(f,r,Si()))},input:s.value}),s.issues=[]),s)}}),WN=Q("$ZodPipe",(e,n)=>{kt.init(e,n),it(e._zod,"values",()=>n.in._zod.values),it(e._zod,"optin",()=>n.in._zod.optin),it(e._zod,"optout",()=>n.out._zod.optout),it(e._zod,"propValues",()=>n.in._zod.propValues),e._zod.parse=(s,r)=>{if(r.direction==="backward"){const f=n.out._zod.run(s,r);return f instanceof Promise?f.then(g=>Ec(g,n.in,r)):Ec(f,n.in,r)}const u=n.in._zod.run(s,r);return u instanceof Promise?u.then(f=>Ec(f,n.out,r)):Ec(u,n.out,r)}});function Ec(e,n,s){return e.issues.length?(e.aborted=!0,e):n._zod.run({value:e.value,issues:e.issues},s)}const e8=Q("$ZodReadonly",(e,n)=>{kt.init(e,n),it(e._zod,"propValues",()=>n.innerType._zod.propValues),it(e._zod,"values",()=>n.innerType._zod.values),it(e._zod,"optin",()=>n.innerType?._zod?.optin),it(e._zod,"optout",()=>n.innerType?._zod?.optout),e._zod.parse=(s,r)=>{if(r.direction==="backward")return n.innerType._zod.run(s,r);const u=n.innerType._zod.run(s,r);return u instanceof Promise?u.then(Ly):Ly(u)}});function Ly(e){return e.value=Object.freeze(e.value),e}const t8=Q("$ZodCustom",(e,n)=>{ba.init(e,n),kt.init(e,n),e._zod.parse=(s,r)=>s,e._zod.check=s=>{const r=s.value,u=n.fn(r);if(u instanceof Promise)return u.then(f=>Uy(f,s,r,e));Uy(u,s,r,e)}});function Uy(e,n,s,r){if(!e){const u={code:"custom",input:s,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(u.params=r._zod.def.params),n.issues.push(Yr(u))}}var Gy;class a8{constructor(){this._map=new WeakMap,this._idmap=new Map}add(n,...s){const r=s[0];return this._map.set(n,r),r&&typeof r=="object"&&"id"in r&&this._idmap.set(r.id,n),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(n){const s=this._map.get(n);return s&&typeof s=="object"&&"id"in s&&this._idmap.delete(s.id),this._map.delete(n),this}get(n){const s=n._zod.parent;if(s){const r={...this.get(s)??{}};delete r.id;const u={...r,...this._map.get(n)};return Object.keys(u).length?u:void 0}return this._map.get(n)}has(n){return this._map.has(n)}}function n8(){return new a8}(Gy=globalThis).__zod_globalRegistry??(Gy.__zod_globalRegistry=n8());const Ur=globalThis.__zod_globalRegistry;function i8(e,n){return new e({type:"string",...ze(n)})}function s8(e,n){return new e({type:"string",format:"email",check:"string_format",abort:!1,...ze(n)})}function $y(e,n){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...ze(n)})}function o8(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...ze(n)})}function r8(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...ze(n)})}function l8(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...ze(n)})}function c8(e,n){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...ze(n)})}function u8(e,n){return new e({type:"string",format:"url",check:"string_format",abort:!1,...ze(n)})}function d8(e,n){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...ze(n)})}function m8(e,n){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...ze(n)})}function p8(e,n){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...ze(n)})}function h8(e,n){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...ze(n)})}function f8(e,n){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...ze(n)})}function g8(e,n){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...ze(n)})}function y8(e,n){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...ze(n)})}function b8(e,n){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...ze(n)})}function v8(e,n){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...ze(n)})}function x8(e,n){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...ze(n)})}function k8(e,n){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...ze(n)})}function w8(e,n){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...ze(n)})}function S8(e,n){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...ze(n)})}function j8(e,n){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...ze(n)})}function A8(e,n){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...ze(n)})}function C8(e,n){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...ze(n)})}function N8(e,n){return new e({type:"string",format:"date",check:"string_format",...ze(n)})}function _8(e,n){return new e({type:"string",format:"time",check:"string_format",precision:null,...ze(n)})}function z8(e,n){return new e({type:"string",format:"duration",check:"string_format",...ze(n)})}function D8(e,n){return new e({type:"number",checks:[],...ze(n)})}function E8(e,n){return new e({type:"number",coerce:!0,checks:[],...ze(n)})}function T8(e,n){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...ze(n)})}function R8(e,n){return new e({type:"boolean",...ze(n)})}function O8(e,n){return new e({type:"null",...ze(n)})}function B8(e){return new e({type:"unknown"})}function q8(e,n){return new e({type:"never",...ze(n)})}function Hy(e,n){return new zx({check:"less_than",...ze(n),value:e,inclusive:!1})}function np(e,n){return new zx({check:"less_than",...ze(n),value:e,inclusive:!0})}function Ky(e,n){return new Dx({check:"greater_than",...ze(n),value:e,inclusive:!1})}function ip(e,n){return new Dx({check:"greater_than",...ze(n),value:e,inclusive:!0})}function Qy(e,n){return new ZC({check:"multiple_of",...ze(n),value:e})}function Mx(e,n){return new YC({check:"max_length",...ze(n),maximum:e})}function Xc(e,n){return new XC({check:"min_length",...ze(n),minimum:e})}function Px(e,n){return new JC({check:"length_equals",...ze(n),length:e})}function M8(e,n){return new WC({check:"string_format",format:"regex",...ze(n),pattern:e})}function P8(e){return new eN({check:"string_format",format:"lowercase",...ze(e)})}function I8(e){return new tN({check:"string_format",format:"uppercase",...ze(e)})}function V8(e,n){return new aN({check:"string_format",format:"includes",...ze(n),includes:e})}function L8(e,n){return new nN({check:"string_format",format:"starts_with",...ze(n),prefix:e})}function U8(e,n){return new iN({check:"string_format",format:"ends_with",...ze(n),suffix:e})}function Eo(e){return new sN({check:"overwrite",tx:e})}function G8(e){return Eo(n=>n.normalize(e))}function $8(){return Eo(e=>e.trim())}function H8(){return Eo(e=>e.toLowerCase())}function K8(){return Eo(e=>e.toUpperCase())}function Q8(){return Eo(e=>JA(e))}function Z8(e,n,s){return new e({type:"array",element:n,...ze(s)})}function F8(e,n,s){return new e({type:"custom",check:"custom",fn:n,...ze(s)})}function Y8(e){const n=X8(s=>(s.addIssue=r=>{if(typeof r=="string")s.issues.push(Yr(r,s.value,n._zod.def));else{const u=r;u.fatal&&(u.continue=!1),u.code??(u.code="custom"),u.input??(u.input=s.value),u.inst??(u.inst=n),u.continue??(u.continue=!n._zod.def.abort),s.issues.push(Yr(u))}},e(s.value,s)));return n}function X8(e,n){const s=new ba({check:"custom",...ze(n)});return s._zod.check=e,s}function Ix(e){let n=e?.target??"draft-2020-12";return n==="draft-4"&&(n="draft-04"),n==="draft-7"&&(n="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??Ur,target:n,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function Mt(e,n,s={path:[],schemaPath:[]}){var r;const u=e._zod.def,f=n.seen.get(e);if(f)return f.count++,s.schemaPath.includes(e)&&(f.cycle=s.path),f.schema;const g={schema:{},count:1,cycle:void 0,path:s.path};n.seen.set(e,g);const b=e._zod.toJSONSchema?.();if(b)g.schema=b;else{const S={...s,schemaPath:[...s.schemaPath,e],path:s.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(n,g.schema,S);else{const j=g.schema,E=n.processors[u.type];if(!E)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${u.type}`);E(e,n,j,S)}const C=e._zod.parent;C&&(g.ref||(g.ref=C),Mt(C,n,S),n.seen.get(C).isParent=!0)}const x=n.metadataRegistry.get(e);return x&&Object.assign(g.schema,x),n.io==="input"&&ia(e)&&(delete g.schema.examples,delete g.schema.default),n.io==="input"&&g.schema._prefault&&((r=g.schema).default??(r.default=g.schema._prefault)),delete g.schema._prefault,n.seen.get(e).schema}function Vx(e,n){const s=e.seen.get(n);if(!s)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=new Map;for(const g of e.seen.entries()){const b=e.metadataRegistry.get(g[0])?.id;if(b){const x=r.get(b);if(x&&x!==g[0])throw new Error(`Duplicate schema id "${b}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(b,g[0])}}const u=g=>{const b=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){const C=e.external.registry.get(g[0])?.id,j=e.external.uri??(B=>B);if(C)return{ref:j(C)};const E=g[1].defId??g[1].schema.id??`schema${e.counter++}`;return g[1].defId=E,{defId:E,ref:`${j("__shared")}#/${b}/${E}`}}if(g[1]===s)return{ref:"#"};const k=`#/${b}/`,S=g[1].schema.id??`__schema${e.counter++}`;return{defId:S,ref:k+S}},f=g=>{if(g[1].schema.$ref)return;const b=g[1],{ref:x,defId:k}=u(g);b.def={...b.schema},k&&(b.defId=k);const S=b.schema;for(const C in S)delete S[C];S.$ref=x};if(e.cycles==="throw")for(const g of e.seen.entries()){const b=g[1];if(b.cycle)throw new Error(`Cycle detected: #/${b.cycle?.join("/")}/<root>
|
|
51
51
|
|
|
52
|
-
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const g of e.seen.entries()){const b=g[1];if(n===g[0]){f(g);continue}if(e.external){const k=e.external.registry.get(g[0])?.id;if(n!==g[0]&&k){f(g);continue}}if(e.metadataRegistry.get(g[0])?.id){f(g);continue}if(b.cycle){f(g);continue}if(b.count>1&&e.reused==="ref"){f(g);continue}}}function Lx(e,n){const s=e.seen.get(n);if(!s)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=g=>{const b=e.seen.get(g);if(b.ref===null)return;const x=b.def??b.schema,k={...x},S=b.ref;if(b.ref=null,S){r(S);const j=e.seen.get(S),E=j.schema;if(E.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(x.allOf=x.allOf??[],x.allOf.push(E)):Object.assign(x,E),Object.assign(x,k),g._zod.parent===S)for(const q in x)q==="$ref"||q==="allOf"||q in k||delete x[q];if(E.$ref&&j.def)for(const q in x)q==="$ref"||q==="allOf"||q in j.def&&JSON.stringify(x[q])===JSON.stringify(j.def[q])&&delete x[q]}const C=g._zod.parent;if(C&&C!==S){r(C);const j=e.seen.get(C);if(j?.schema.$ref&&(x.$ref=j.schema.$ref,j.def))for(const E in x)E==="$ref"||E==="allOf"||E in j.def&&JSON.stringify(x[E])===JSON.stringify(j.def[E])&&delete x[E]}e.override({zodSchema:g,jsonSchema:x,path:b.path??[]})};for(const g of[...e.seen.entries()].reverse())r(g[0]);const u={};if(e.target==="draft-2020-12"?u.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?u.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?u.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const g=e.external.registry.get(n)?.id;if(!g)throw new Error("Schema is missing an `id` property");u.$id=e.external.uri(g)}Object.assign(u,s.def??s.schema);const f=e.external?.defs??{};for(const g of e.seen.entries()){const b=g[1];b.def&&b.defId&&(f[b.defId]=b.def)}e.external||Object.keys(f).length>0&&(e.target==="draft-2020-12"?u.$defs=f:u.definitions=f);try{const g=JSON.parse(JSON.stringify(u));return Object.defineProperty(g,"~standard",{value:{...n["~standard"],jsonSchema:{input:Jc(n,"input",e.processors),output:Jc(n,"output",e.processors)}},enumerable:!1,writable:!1}),g}catch{throw new Error("Error converting schema to JSON.")}}function ia(e,n){const s=n??{seen:new Set};if(s.seen.has(e))return!1;s.seen.add(e);const r=e._zod.def;if(r.type==="transform")return!0;if(r.type==="array")return ia(r.element,s);if(r.type==="set")return ia(r.valueType,s);if(r.type==="lazy")return ia(r.getter(),s);if(r.type==="promise"||r.type==="optional"||r.type==="nonoptional"||r.type==="nullable"||r.type==="readonly"||r.type==="default"||r.type==="prefault")return ia(r.innerType,s);if(r.type==="intersection")return ia(r.left,s)||ia(r.right,s);if(r.type==="record"||r.type==="map")return ia(r.keyType,s)||ia(r.valueType,s);if(r.type==="pipe")return ia(r.in,s)||ia(r.out,s);if(r.type==="object"){for(const u in r.shape)if(ia(r.shape[u],s))return!0;return!1}if(r.type==="union"){for(const u of r.options)if(ia(u,s))return!0;return!1}if(r.type==="tuple"){for(const u of r.items)if(ia(u,s))return!0;return!!(r.rest&&ia(r.rest,s))}return!1}const J8=(e,n={})=>s=>{const r=Ix({...s,processors:n});return Mt(e,r),Vx(r,e),Lx(r,e)},Jc=(e,n,s={})=>r=>{const{libraryOptions:u,target:f}=r??{},g=Ix({...u??{},target:f,io:n,processors:s});return Mt(e,g),Vx(g,e),Lx(g,e)},W8={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},e7=(e,n,s,r)=>{const u=s;u.type="string";const{minimum:f,maximum:g,format:b,patterns:x,contentEncoding:k}=e._zod.bag;if(typeof f=="number"&&(u.minLength=f),typeof g=="number"&&(u.maxLength=g),b&&(u.format=W8[b]??b,u.format===""&&delete u.format,b==="time"&&delete u.format),k&&(u.contentEncoding=k),x&&x.size>0){const S=[...x];S.length===1?u.pattern=S[0].source:S.length>1&&(u.allOf=[...S.map(C=>({...n.target==="draft-07"||n.target==="draft-04"||n.target==="openapi-3.0"?{type:"string"}:{},pattern:C.source}))])}},t7=(e,n,s,r)=>{const u=s,{minimum:f,maximum:g,format:b,multipleOf:x,exclusiveMaximum:k,exclusiveMinimum:S}=e._zod.bag;typeof b=="string"&&b.includes("int")?u.type="integer":u.type="number",typeof S=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(u.minimum=S,u.exclusiveMinimum=!0):u.exclusiveMinimum=S),typeof f=="number"&&(u.minimum=f,typeof S=="number"&&n.target!=="draft-04"&&(S>=f?delete u.minimum:delete u.exclusiveMinimum)),typeof k=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(u.maximum=k,u.exclusiveMaximum=!0):u.exclusiveMaximum=k),typeof g=="number"&&(u.maximum=g,typeof k=="number"&&n.target!=="draft-04"&&(k<=g?delete u.maximum:delete u.exclusiveMaximum)),typeof x=="number"&&(u.multipleOf=x)},a7=(e,n,s,r)=>{s.type="boolean"},n7=(e,n,s,r)=>{n.target==="openapi-3.0"?(s.type="string",s.nullable=!0,s.enum=[null]):s.type="null"},i7=(e,n,s,r)=>{s.not={}},s7=(e,n,s,r)=>{},o7=(e,n,s,r)=>{const u=e._zod.def,f=bx(u.entries);f.every(g=>typeof g=="number")&&(s.type="number"),f.every(g=>typeof g=="string")&&(s.type="string"),s.enum=f},r7=(e,n,s,r)=>{const u=e._zod.def,f=[];for(const g of u.values)if(g===void 0){if(n.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof g=="bigint"){if(n.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");f.push(Number(g))}else f.push(g);if(f.length!==0)if(f.length===1){const g=f[0];s.type=g===null?"null":typeof g,n.target==="draft-04"||n.target==="openapi-3.0"?s.enum=[g]:s.const=g}else f.every(g=>typeof g=="number")&&(s.type="number"),f.every(g=>typeof g=="string")&&(s.type="string"),f.every(g=>typeof g=="boolean")&&(s.type="boolean"),f.every(g=>g===null)&&(s.type="null"),s.enum=f},l7=(e,n,s,r)=>{if(n.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},c7=(e,n,s,r)=>{if(n.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},u7=(e,n,s,r)=>{const u=s,f=e._zod.def,{minimum:g,maximum:b}=e._zod.bag;typeof g=="number"&&(u.minItems=g),typeof b=="number"&&(u.maxItems=b),u.type="array",u.items=Mt(f.element,n,{...r,path:[...r.path,"items"]})},d7=(e,n,s,r)=>{const u=s,f=e._zod.def;u.type="object",u.properties={};const g=f.shape;for(const k in g)u.properties[k]=Mt(g[k],n,{...r,path:[...r.path,"properties",k]});const b=new Set(Object.keys(g)),x=new Set([...b].filter(k=>{const S=f.shape[k]._zod;return n.io==="input"?S.optin===void 0:S.optout===void 0}));x.size>0&&(u.required=Array.from(x)),f.catchall?._zod.def.type==="never"?u.additionalProperties=!1:f.catchall?f.catchall&&(u.additionalProperties=Mt(f.catchall,n,{...r,path:[...r.path,"additionalProperties"]})):n.io==="output"&&(u.additionalProperties=!1)},m7=(e,n,s,r)=>{const u=e._zod.def,f=u.inclusive===!1,g=u.options.map((b,x)=>Mt(b,n,{...r,path:[...r.path,f?"oneOf":"anyOf",x]}));f?s.oneOf=g:s.anyOf=g},p7=(e,n,s,r)=>{const u=e._zod.def,f=Mt(u.left,n,{...r,path:[...r.path,"allOf",0]}),g=Mt(u.right,n,{...r,path:[...r.path,"allOf",1]}),b=k=>"allOf"in k&&Object.keys(k).length===1,x=[...b(f)?f.allOf:[f],...b(g)?g.allOf:[g]];s.allOf=x},h7=(e,n,s,r)=>{const u=s,f=e._zod.def;u.type="object";const g=f.keyType,x=g._zod.bag?.patterns;if(f.mode==="loose"&&x&&x.size>0){const S=Mt(f.valueType,n,{...r,path:[...r.path,"patternProperties","*"]});u.patternProperties={};for(const C of x)u.patternProperties[C.source]=S}else(n.target==="draft-07"||n.target==="draft-2020-12")&&(u.propertyNames=Mt(f.keyType,n,{...r,path:[...r.path,"propertyNames"]})),u.additionalProperties=Mt(f.valueType,n,{...r,path:[...r.path,"additionalProperties"]});const k=g._zod.values;if(k){const S=[...k].filter(C=>typeof C=="string"||typeof C=="number");S.length>0&&(u.required=S)}},f7=(e,n,s,r)=>{const u=e._zod.def,f=Mt(u.innerType,n,r),g=n.seen.get(e);n.target==="openapi-3.0"?(g.ref=u.innerType,s.nullable=!0):s.anyOf=[f,{type:"null"}]},g7=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType},y7=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType,s.default=JSON.parse(JSON.stringify(u.defaultValue))},b7=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType,n.io==="input"&&(s._prefault=JSON.parse(JSON.stringify(u.defaultValue)))},v7=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType;let g;try{g=u.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}s.default=g},x7=(e,n,s,r)=>{const u=e._zod.def,f=n.io==="input"?u.in._zod.def.type==="transform"?u.out:u.in:u.out;Mt(f,n,r);const g=n.seen.get(e);g.ref=f},k7=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType,s.readOnly=!0},Ux=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType},w7=Q("ZodISODateTime",(e,n)=>{vN.init(e,n),At.init(e,n)});function Gx(e){return C8(w7,e)}const S7=Q("ZodISODate",(e,n)=>{xN.init(e,n),At.init(e,n)});function $x(e){return N8(S7,e)}const j7=Q("ZodISOTime",(e,n)=>{kN.init(e,n),At.init(e,n)});function A7(e){return _8(j7,e)}const C7=Q("ZodISODuration",(e,n)=>{wN.init(e,n),At.init(e,n)});function N7(e){return z8(C7,e)}const _7=(e,n)=>{wx.init(e,n),e.name="ZodError",Object.defineProperties(e,{format:{value:s=>dC(e,s)},flatten:{value:s=>uC(e,s)},addIssue:{value:s=>{e.issues.push(s),e.message=JSON.stringify(e.issues,Bp,2)}},addIssues:{value:s=>{e.issues.push(...s),e.message=JSON.stringify(e.issues,Bp,2)}},isEmpty:{get(){return e.issues.length===0}}})},La=Q("ZodError",_7,{Parent:Error}),z7=k0(La),D7=w0(La),E7=pu(La),T7=hu(La),R7=hC(La),O7=fC(La),B7=gC(La),q7=yC(La),M7=bC(La),P7=vC(La),I7=xC(La),V7=kC(La),St=Q("ZodType",(e,n)=>(kt.init(e,n),Object.assign(e["~standard"],{jsonSchema:{input:Jc(e,"input"),output:Jc(e,"output")}}),e.toJSONSchema=J8(e,{}),e.def=n,e.type=n.type,Object.defineProperty(e,"_def",{value:n}),e.check=(...s)=>e.clone(Ni(n,{checks:[...n.checks??[],...s.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0}),e.with=e.check,e.clone=(s,r)=>_i(e,s,r),e.brand=()=>e,e.register=((s,r)=>(s.add(e,r),e)),e.parse=(s,r)=>z7(e,s,r,{callee:e.parse}),e.safeParse=(s,r)=>E7(e,s,r),e.parseAsync=async(s,r)=>D7(e,s,r,{callee:e.parseAsync}),e.safeParseAsync=async(s,r)=>T7(e,s,r),e.spa=e.safeParseAsync,e.encode=(s,r)=>R7(e,s,r),e.decode=(s,r)=>O7(e,s,r),e.encodeAsync=async(s,r)=>B7(e,s,r),e.decodeAsync=async(s,r)=>q7(e,s,r),e.safeEncode=(s,r)=>M7(e,s,r),e.safeDecode=(s,r)=>P7(e,s,r),e.safeEncodeAsync=async(s,r)=>I7(e,s,r),e.safeDecodeAsync=async(s,r)=>V7(e,s,r),e.refine=(s,r)=>e.check(R_(s,r)),e.superRefine=s=>e.check(O_(s)),e.overwrite=s=>e.check(Eo(s)),e.optional=()=>Yy(e),e.exactOptional=()=>x_(e),e.nullable=()=>Xy(e),e.nullish=()=>Yy(Xy(e)),e.nonoptional=s=>C_(e,s),e.array=()=>y(e),e.or=s=>Ve([e,s]),e.and=s=>f_(e,s),e.transform=s=>Pp(e,Qx(s)),e.default=s=>S_(e,s),e.prefault=s=>A_(e,s),e.catch=s=>__(e,s),e.pipe=s=>Pp(e,s),e.readonly=()=>E_(e),e.describe=s=>{const r=e.clone();return Ur.add(r,{description:s}),r},Object.defineProperty(e,"description",{get(){return Ur.get(e)?.description},configurable:!0}),e.meta=(...s)=>{if(s.length===0)return Ur.get(e);const r=e.clone();return Ur.add(r,s[0]),r},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=s=>s(e),e)),Hx=Q("_ZodString",(e,n)=>{S0.init(e,n),St.init(e,n),e._zod.processJSONSchema=(r,u,f)=>e7(e,r,u);const s=e._zod.bag;e.format=s.format??null,e.minLength=s.minimum??null,e.maxLength=s.maximum??null,e.regex=(...r)=>e.check(M8(...r)),e.includes=(...r)=>e.check(V8(...r)),e.startsWith=(...r)=>e.check(L8(...r)),e.endsWith=(...r)=>e.check(U8(...r)),e.min=(...r)=>e.check(Xc(...r)),e.max=(...r)=>e.check(Mx(...r)),e.length=(...r)=>e.check(Px(...r)),e.nonempty=(...r)=>e.check(Xc(1,...r)),e.lowercase=r=>e.check(P8(r)),e.uppercase=r=>e.check(I8(r)),e.trim=()=>e.check($8()),e.normalize=(...r)=>e.check(G8(...r)),e.toLowerCase=()=>e.check(H8()),e.toUpperCase=()=>e.check(K8()),e.slugify=()=>e.check(Q8())}),L7=Q("ZodString",(e,n)=>{S0.init(e,n),Hx.init(e,n),e.email=s=>e.check(s8(U7,s)),e.url=s=>e.check(u8(G7,s)),e.jwt=s=>e.check(A8(i_,s)),e.emoji=s=>e.check(d8($7,s)),e.guid=s=>e.check($y(Zy,s)),e.uuid=s=>e.check(o8(Tc,s)),e.uuidv4=s=>e.check(r8(Tc,s)),e.uuidv6=s=>e.check(l8(Tc,s)),e.uuidv7=s=>e.check(c8(Tc,s)),e.nanoid=s=>e.check(m8(H7,s)),e.guid=s=>e.check($y(Zy,s)),e.cuid=s=>e.check(p8(K7,s)),e.cuid2=s=>e.check(h8(Q7,s)),e.ulid=s=>e.check(f8(Z7,s)),e.base64=s=>e.check(w8(t_,s)),e.base64url=s=>e.check(S8(a_,s)),e.xid=s=>e.check(g8(F7,s)),e.ksuid=s=>e.check(y8(Y7,s)),e.ipv4=s=>e.check(b8(X7,s)),e.ipv6=s=>e.check(v8(J7,s)),e.cidrv4=s=>e.check(x8(W7,s)),e.cidrv6=s=>e.check(k8(e_,s)),e.e164=s=>e.check(j8(n_,s)),e.datetime=s=>e.check(Gx(s)),e.date=s=>e.check($x(s)),e.time=s=>e.check(A7(s)),e.duration=s=>e.check(N7(s))});function o(e){return i8(L7,e)}const At=Q("ZodStringFormat",(e,n)=>{wt.init(e,n),Hx.init(e,n)}),U7=Q("ZodEmail",(e,n)=>{uN.init(e,n),At.init(e,n)}),Zy=Q("ZodGUID",(e,n)=>{lN.init(e,n),At.init(e,n)}),Tc=Q("ZodUUID",(e,n)=>{cN.init(e,n),At.init(e,n)}),G7=Q("ZodURL",(e,n)=>{dN.init(e,n),At.init(e,n)}),$7=Q("ZodEmoji",(e,n)=>{mN.init(e,n),At.init(e,n)}),H7=Q("ZodNanoID",(e,n)=>{pN.init(e,n),At.init(e,n)}),K7=Q("ZodCUID",(e,n)=>{hN.init(e,n),At.init(e,n)}),Q7=Q("ZodCUID2",(e,n)=>{fN.init(e,n),At.init(e,n)}),Z7=Q("ZodULID",(e,n)=>{gN.init(e,n),At.init(e,n)}),F7=Q("ZodXID",(e,n)=>{yN.init(e,n),At.init(e,n)}),Y7=Q("ZodKSUID",(e,n)=>{bN.init(e,n),At.init(e,n)}),X7=Q("ZodIPv4",(e,n)=>{SN.init(e,n),At.init(e,n)}),J7=Q("ZodIPv6",(e,n)=>{jN.init(e,n),At.init(e,n)}),W7=Q("ZodCIDRv4",(e,n)=>{AN.init(e,n),At.init(e,n)}),e_=Q("ZodCIDRv6",(e,n)=>{CN.init(e,n),At.init(e,n)}),t_=Q("ZodBase64",(e,n)=>{NN.init(e,n),At.init(e,n)}),a_=Q("ZodBase64URL",(e,n)=>{zN.init(e,n),At.init(e,n)}),n_=Q("ZodE164",(e,n)=>{DN.init(e,n),At.init(e,n)}),i_=Q("ZodJWT",(e,n)=>{TN.init(e,n),At.init(e,n)}),j0=Q("ZodNumber",(e,n)=>{Tx.init(e,n),St.init(e,n),e._zod.processJSONSchema=(r,u,f)=>t7(e,r,u),e.gt=(r,u)=>e.check(Ky(r,u)),e.gte=(r,u)=>e.check(ip(r,u)),e.min=(r,u)=>e.check(ip(r,u)),e.lt=(r,u)=>e.check(Hy(r,u)),e.lte=(r,u)=>e.check(np(r,u)),e.max=(r,u)=>e.check(np(r,u)),e.int=r=>e.check(Fy(r)),e.safe=r=>e.check(Fy(r)),e.positive=r=>e.check(Ky(0,r)),e.nonnegative=r=>e.check(ip(0,r)),e.negative=r=>e.check(Hy(0,r)),e.nonpositive=r=>e.check(np(0,r)),e.multipleOf=(r,u)=>e.check(Qy(r,u)),e.step=(r,u)=>e.check(Qy(r,u)),e.finite=()=>e;const s=e._zod.bag;e.minValue=Math.max(s.minimum??Number.NEGATIVE_INFINITY,s.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(s.maximum??Number.POSITIVE_INFINITY,s.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(s.format??"").includes("int")||Number.isSafeInteger(s.multipleOf??.5),e.isFinite=!0,e.format=s.format??null});function m(e){return D8(j0,e)}const s_=Q("ZodNumberFormat",(e,n)=>{RN.init(e,n),j0.init(e,n)});function Fy(e){return T8(s_,e)}const o_=Q("ZodBoolean",(e,n)=>{ON.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>a7(e,s,r)});function _(e){return R8(o_,e)}const r_=Q("ZodNull",(e,n)=>{BN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>n7(e,s,r)});function ce(e){return O8(r_,e)}const l_=Q("ZodUnknown",(e,n)=>{qN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>s7()});function ya(){return B8(l_)}const c_=Q("ZodNever",(e,n)=>{MN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>i7(e,s,r)});function u_(e){return q8(c_,e)}const d_=Q("ZodArray",(e,n)=>{PN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>u7(e,s,r,u),e.element=n.element,e.min=(s,r)=>e.check(Xc(s,r)),e.nonempty=s=>e.check(Xc(1,s)),e.max=(s,r)=>e.check(Mx(s,r)),e.length=(s,r)=>e.check(Px(s,r)),e.unwrap=()=>e.element});function y(e,n){return Z8(d_,e,n)}const m_=Q("ZodObject",(e,n)=>{VN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>d7(e,s,r,u),it(e,"shape",()=>n.shape),e.keyof=()=>A(Object.keys(e._zod.def.shape)),e.catchall=s=>e.clone({...e._zod.def,catchall:s}),e.passthrough=()=>e.clone({...e._zod.def,catchall:ya()}),e.loose=()=>e.clone({...e._zod.def,catchall:ya()}),e.strict=()=>e.clone({...e._zod.def,catchall:u_()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=s=>sC(e,s),e.safeExtend=s=>oC(e,s),e.merge=s=>rC(e,s),e.pick=s=>nC(e,s),e.omit=s=>iC(e,s),e.partial=(...s)=>lC(Zx,e,s[0]),e.required=(...s)=>cC(Fx,e,s[0])});function p(e,n){const s={type:"object",shape:e??{},...ze(n)};return new m_(s)}const Kx=Q("ZodUnion",(e,n)=>{Bx.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>m7(e,s,r,u),e.options=n.options});function Ve(e,n){return new Kx({type:"union",options:e,...ze(n)})}const p_=Q("ZodDiscriminatedUnion",(e,n)=>{Kx.init(e,n),LN.init(e,n)});function Be(e,n,s){return new p_({type:"union",options:n,discriminator:e,...ze(s)})}const h_=Q("ZodIntersection",(e,n)=>{UN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>p7(e,s,r,u)});function f_(e,n){return new h_({type:"intersection",left:e,right:n})}const g_=Q("ZodRecord",(e,n)=>{GN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>h7(e,s,r,u),e.keyType=n.keyType,e.valueType=n.valueType});function Ie(e,n,s){return new g_({type:"record",keyType:e,valueType:n,...ze(s)})}const Mp=Q("ZodEnum",(e,n)=>{$N.init(e,n),St.init(e,n),e._zod.processJSONSchema=(r,u,f)=>o7(e,r,u),e.enum=n.entries,e.options=Object.values(n.entries);const s=new Set(Object.keys(n.entries));e.extract=(r,u)=>{const f={};for(const g of r)if(s.has(g))f[g]=n.entries[g];else throw new Error(`Key ${g} not found in enum`);return new Mp({...n,checks:[],...ze(u),entries:f})},e.exclude=(r,u)=>{const f={...n.entries};for(const g of r)if(s.has(g))delete f[g];else throw new Error(`Key ${g} not found in enum`);return new Mp({...n,checks:[],...ze(u),entries:f})}});function A(e,n){const s=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new Mp({type:"enum",entries:s,...ze(n)})}const y_=Q("ZodLiteral",(e,n)=>{HN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>r7(e,s,r),e.values=new Set(n.values),Object.defineProperty(e,"value",{get(){if(n.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return n.values[0]}})});function O(e,n){return new y_({type:"literal",values:Array.isArray(e)?e:[e],...ze(n)})}const b_=Q("ZodTransform",(e,n)=>{KN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>c7(e,s),e._zod.parse=(s,r)=>{if(r.direction==="backward")throw new gx(e.constructor.name);s.addIssue=f=>{if(typeof f=="string")s.issues.push(Yr(f,s.value,n));else{const g=f;g.fatal&&(g.continue=!1),g.code??(g.code="custom"),g.input??(g.input=s.value),g.inst??(g.inst=e),s.issues.push(Yr(g))}};const u=n.transform(s.value,s);return u instanceof Promise?u.then(f=>(s.value=f,s)):(s.value=u,s)}});function Qx(e){return new b_({type:"transform",transform:e})}const Zx=Q("ZodOptional",(e,n)=>{qx.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>Ux(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function Yy(e){return new Zx({type:"optional",innerType:e})}const v_=Q("ZodExactOptional",(e,n)=>{QN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>Ux(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function x_(e){return new v_({type:"optional",innerType:e})}const k_=Q("ZodNullable",(e,n)=>{ZN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>f7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function Xy(e){return new k_({type:"nullable",innerType:e})}const w_=Q("ZodDefault",(e,n)=>{FN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>y7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function S_(e,n){return new w_({type:"default",innerType:e,get defaultValue(){return typeof n=="function"?n():xx(n)}})}const j_=Q("ZodPrefault",(e,n)=>{YN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>b7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function A_(e,n){return new j_({type:"prefault",innerType:e,get defaultValue(){return typeof n=="function"?n():xx(n)}})}const Fx=Q("ZodNonOptional",(e,n)=>{XN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>g7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function C_(e,n){return new Fx({type:"nonoptional",innerType:e,...ze(n)})}const N_=Q("ZodCatch",(e,n)=>{JN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>v7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function __(e,n){return new N_({type:"catch",innerType:e,catchValue:typeof n=="function"?n:()=>n})}const z_=Q("ZodPipe",(e,n)=>{WN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>x7(e,s,r,u),e.in=n.in,e.out=n.out});function Pp(e,n){return new z_({type:"pipe",in:e,out:n})}const D_=Q("ZodReadonly",(e,n)=>{e8.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>k7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function E_(e){return new D_({type:"readonly",innerType:e})}const T_=Q("ZodCustom",(e,n)=>{t8.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>l7(e,s)});function R_(e,n={}){return F8(T_,e,n)}function O_(e){return Y8(e)}function A0(e,n){return Pp(Qx(e),n)}const Ye={custom:"custom"};function Yx(e){return E8(j0,e)}const Xx=p({id:o(),name:o(),keyPrefix:o(),scopes:y(o()),projectId:o().nullable(),projectName:o().nullable(),readOnly:_(),createdAt:o(),lastUsedAt:o().nullable(),revokedAt:o().nullable()});p({keys:y(Xx)});p({name:o().min(1).max(100),scopes:y(o()).min(1).optional(),projectId:o().optional()});Xx.extend({key:o()});const B_=p({maxConcurrency:m().int().positive(),maxRequestsPerMinute:m().int().positive(),maxRequestsPerDay:m().int().positive()}),ft=o().min(1),C0=Ie(o(),o().trim().min(1));o().min(1);const la=p({label:o().min(1),city:o().min(1),region:o().min(1),country:o().length(2),timezone:o().optional()}),N0=A(["citation.lost","citation.gained","run.completed","run.failed","insight.critical","insight.high","health.degraded","health.recovered"]);p({id:o(),projectId:o(),channel:O("webhook"),url:o().url(),urlDisplay:o(),urlHost:o(),events:y(N0),enabled:_().default(!0),source:o().optional(),webhookSecret:o().optional(),createdAt:o(),updatedAt:o()});p({channel:O("webhook"),url:o().url(),events:y(N0).min(1),source:o().optional()});function q_(e){if(e instanceof Error)return e.message;if(typeof e=="string")return e;if(e==null)return"unknown error";try{const n=JSON.stringify(e);if(n!==void 0)return n}catch{}try{return String(e)}catch{return"unknown error"}}function sp(e,n=!1){const s=new Set,r=[];for(const u of e){const f=n?u.toLowerCase():u;s.has(f)||(s.add(f),r.push(u))}return r}function Jy(e){try{const n=e.includes("://"),s=new URL(n?e:`https://${e}`);if(!n&&(s.pathname!=="/"||s.search||s.hash)||s.username||s.password||s.port)return null;const r=s.hostname.trim().toLowerCase().replace(/^www\./,"");return!r||r.includes("/")||r.includes("?")||r.includes("#")?null:r}catch{return null}}const M_=o().trim().min(1).refine(e=>Jy(e)!==null,{message:"Marketing hosts must be valid hostnames without credentials or ports"}).overwrite(e=>Jy(e)??e),P_=o().trim().min(1),I_=o().trim().regex(/^[a-z]\w{0,39}$/i,{message:"GA4 event names must start with a letter and contain only letters, numbers, or underscores"}),_0=p({marketingHosts:y(M_).overwrite(e=>sp(e,!0)),brandTerms:y(P_).overwrite(e=>sp(e,!0)),leadEventNames:y(I_).overwrite(e=>sp(e))});function V_(){return{marketingHosts:[],brandTerms:[],leadEventNames:["generate_lead"]}}const op=Object.freeze({marketingHosts:Object.freeze([]),brandTerms:Object.freeze([]),leadEventNames:Object.freeze(["generate_lead"])}),Jx=()=>V_(),Wy=A(["never-synced","ready","error"]),L_=A(["landing-page","channel"]),U_=A(["30d","60d","90d"]),G_=A(["marketing","all"]),Gr=$x(),nl=p({label:A(["earliest","middle","previous","latest"]),startDate:Gr,endDate:Gr}),rp=nl.extend({sessions:m().int().nonnegative()}),eb=nl.extend({eventCount:m().int().nonnegative()}),tb=nl.extend({clicks:m().int().nonnegative(),impressions:m().int().nonnegative()}),$_=nl.extend({propertyClicks:m().int().nonnegative(),propertyImpressions:m().int().nonnegative(),reportedQueryClicks:m().int().nonnegative(),reportedQueryImpressions:m().int().nonnegative(),brandedClicks:m().int().nonnegative(),brandedImpressions:m().int().nonnegative(),nonBrandedClicks:m().int().nonnegative(),nonBrandedImpressions:m().int().nonnegative(),unreportedClicks:m().int().nonnegative(),unreportedImpressions:m().int().nonnegative()}),H_=nl.extend({sessions:m().int().nonnegative(),engagementRate:m().min(0).max(1).nullable(),dailyTotalUsers:m().int().nonnegative().nullable(),dailyNewUsers:m().int().nonnegative().nullable(),metricsAvailable:_(),daysInPeriod:m().int().nonnegative(),daysWithEngagementRate:m().int().nonnegative(),daysWithUserSplit:m().int().nonnegative()}),K_=p({window:U_,bucketDays:O(30),filters:p({hostScope:G_,marketingHosts:y(o()),pathPrefix:o().nullable(),brandTerms:y(o()),queryMixScope:O("property")}),acquisition:p({status:Wy,error:o().nullable(),syncedAt:o().datetime().nullable(),periods:y(rp),channels:y(p({channelGroup:o(),periods:y(rp)})),pages:y(p({hostName:o(),landingPage:o(),periods:y(rp)}))}),leads:p({status:Wy,error:o().nullable(),syncedAt:o().datetime().nullable(),attributionScope:L_.nullable(),hostAndPathFiltersApplied:_(),periods:y(eb),channels:y(p({channelGroup:o(),periods:y(eb)}))}),engagement:p({status:A(["ready","unavailable"]),availableFromDate:Gr.nullable(),latestDate:Gr.nullable(),periods:y(H_)}),searchDemand:p({status:A(["ready","unavailable"]),periods:y($_),queries:y(p({query:o(),classification:A(["branded","non-branded"]),periods:y(tb)})),pages:y(p({hostName:o(),landingPage:o(),periods:y(tb)})),latestDate:Gr.nullable()})}),Q_=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Z_=/[\0-\x1F\x7F-\x9F]/,F_=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B4E\u1B4F\u1B5A-\u1B60\u1B7D-\u1B7F\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDD6E\uDEAD\uDED0\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9\uDFD4\uDFD5\uDFD7\uDFD8]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09\uDFE1]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDD6D-\uDD6F\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD839\uDDFF|\uD83A[\uDD5E\uDD5F]/,Y_=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;var X_=class{src_Any=Q_.source;src_Cc=Z_.source;src_Z=Y_.source;src_P=F_.source;src_ZPCc=[this.src_Z,this.src_P,this.src_Cc].join("|");src_ZCc=[this.src_Z,this.src_Cc].join("|");cache={};opts={maxLength:1e4,urlAuth:!1,schema_names:[]};constructor(e={}){this.opts={...this.opts,...e}}set(e={}){return this.opts={...this.opts,...e},this.cache={},this}escapeRE(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}nestedPairRE(e,n,s=4){const r=this.escapeRE(e),u=this.escapeRE(n),f=`(?:(?!${this.src_ZCc}|${r}|${u}).)`;let g=`${r}${f}{0,1000}${u}`;for(let b=2;b<=s;b++)g=`${r}(?:${f}|${g}){0,1000}${u}`;return g}get_text_separators(){return this.cache.text_separators??=/[><\uff5c]/}get_pseudo_letter(){return this.cache.src_pseudo_letter??=new RegExp(`(?:(?!${this.get_text_separators().source}|${this.src_ZPCc})${this.src_Any})`)}get_ipv4_addr(){return this.cache.src_ip4??=new RegExp("(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])[.]){3}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])")}get_ipv6_addr(){const e="[0-9A-Fa-f]{1,4}",n=`(?:(?:${e}:${e})|${this.get_ipv4_addr().source})`;return this.cache.src_ip6_addr??=new RegExp(`(?:(?:${e}:){6}${n}|::(?:${e}:){5}${n}|(?:${e})?::(?:${e}:){4}${n}|(?:(?:${e}:){0,1}${e})?::(?:${e}:){3}${n}|(?:(?:${e}:){0,2}${e})?::(?:${e}:){2}${n}|(?:(?:${e}:){0,3}${e})?::${e}:${n}|(?:(?:${e}:){0,4}${e})?::${n}|(?:(?:${e}:){0,5}${e})?::${e}|(?:(?:${e}:){0,6}${e})?::)`)}get_ipv6_url_host(){return this.cache.src_ip6_host??=new RegExp(`\\[${this.get_ipv6_addr().source}\\]`)}get_ipv6_mail_host(){return this.cache.src_ipv6_mail_host??=new RegExp(`\\[IPv6:${this.get_ipv6_addr().source}\\]`)}get_auth(){return this.cache.src_auth??=new RegExp(`(?:(?:(?!${this.src_ZCc}|[@/\\[\\]()]).){1,50}@)?`)}get_port(){return this.cache.src_port??=new RegExp("(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?")}get_host_terminator(){return this.cache.src_host_terminator??=new RegExp(`(?=$|${this.get_text_separators().source}|${this.src_ZPCc})(?!${this.opts["---"]?"-(?!--)|":"-|"}_|:\\d|\\.-|\\.(?!$|${this.src_ZPCc}))`)}get_path_terminator(){return this.cache.src_path_terminator??=new RegExp(`${this.src_ZPCc}|${this.get_text_separators().source}`)}get_path(){return this.cache.src_path??=new RegExp(`(?:[/?#](?:${this.nestedPairRE("[","]")}|${this.nestedPairRE("(",")")}|${this.nestedPairRE("{","}")}|\\"(?:(?!${this.src_ZCc}|["]).){1,100}\\"|\\'(?:(?!${this.src_ZCc}|[']).){1,100}\\'|\\'(?=${this.get_pseudo_letter().source}|[-])|\\.{2,20}[:]?[a-zA-Z0-9%/&]|\\.(?!${this.src_ZCc}|[.]|$)|`+(this.opts["---"]?"\\-(?!--(?:[^-]|$))(?:-{0,19})|":"\\-{1,20}|")+`,(?!${this.src_ZCc}|$)|;(?!${this.src_ZCc}|$)|\\!{1,20}(?!${this.src_ZCc}|[!]|$)|\\?(?!${this.src_ZCc}|[?]|$)|`+this.get_path_extra().source+`[\\\\/:%@#&=_~*]|(?!${this.get_path_terminator().source}).){1,${this.opts.maxLength}}|\\/)?`)}get_mail_name(){return this.cache.src_mail_name??=new RegExp("[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9](?:[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9]|[.](?=[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9])){0,63}")}get_xn(){return this.cache.src_xn??=new RegExp("xn--[a-z0-9\\-]{1,59}")}get_tld(){if(this.cache.tld)return this.cache.tld;const e=[...new Set(this.opts.tlds||[])].sort().reverse().join("|");return this.cache.tld=new RegExp(`${e||"$#none#$"}|${this.get_xn().source}`),this.cache.tld}get_domain_root(){return this.cache.src_domain_root??=new RegExp("(?:"+this.get_xn().source+`|${this.get_pseudo_letter().source}{1,63})`)}get_domain(){return this.cache.src_domain??=new RegExp("(?:"+this.get_xn().source+`|(?:${this.get_pseudo_letter().source})|(?:${this.get_pseudo_letter().source}(?:-|${this.get_pseudo_letter().source}){0,61}${this.get_pseudo_letter().source}))`)}get_url_host_port(){return this.cache.url_host_port??=new RegExp("(?:"+this.get_ipv6_url_host().source+`|(?:(?:(?:${this.get_domain().source})\\.){0,10}${this.get_domain().source}))`+this.get_port().source+this.get_host_terminator().source)}get_fuzzy_url_host_port(){return this.cache.fuzzy_url_host_port??=new RegExp("(?:"+(this.opts.fuzzyIP?this.get_ipv4_addr().source+"|":"")+`(?:(?:(?:${this.get_domain().source})\\.){1,10}(?:${this.get_tld().source})))`+this.get_host_terminator().source)}get_mail_host(){return this.cache.src_mail_host??=new RegExp("(?:"+this.get_ipv6_mail_host().source+`|(?:(?:(?:${this.get_domain().source})\\.){0,4}${this.get_domain().source}))`+this.get_host_terminator().source)}get_fuzzy_mail_host(){return this.cache.src_fuzzy_mail_host??=new RegExp("(?:"+this.get_ipv6_mail_host().source+`|(?:(?:(?:${this.get_domain().source})[.]){1,4}${this.get_domain_root().source}))`+this.get_host_terminator().source)}get_path_extra(){return this.cache.src_path_extra??=new RegExp("")}get_fuzzy_mail_host_search(){return this.cache.mail_fuzzy_host_search??=new RegExp(`@${this.get_fuzzy_mail_host().source}`,"ig")}get_fuzzy_link_search(){return this.cache.link_fuzzy_search??=new RegExp(`(^|(?![.:/\\-_@])(?:[$+<=>^\`||]|${this.src_ZPCc}))(?:(?![$+<=>^\`||])${this.get_fuzzy_url_host_port().source}${this.get_path().source})`,"ig")}get_http_validator(){return this.cache.http_validator??=new RegExp("\\/\\/"+(this.opts.urlAuth?this.get_auth().source:"")+this.get_url_host_port().source+this.get_path().source,"iy")}get_relative_proto_validator(){return this.cache.relative_proto_validator??=new RegExp((this.opts.urlAuth?this.get_auth().source:"")+`(?:localhost|${this.get_ipv6_url_host().source}|(?:(?:${this.get_domain().source})[.]){1,10}${this.get_domain_root().source})`+this.get_port().source+this.get_host_terminator().source+this.get_path().source,"iy")}get_mail_name_validator(){return this.cache.mail_name_validator??=new RegExp(`(?:^|${this.get_text_separators().source}|"|\\(|${this.src_ZCc})(${this.get_mail_name().source})$`)}get_mailto_validator(){return this.cache.mailto_validator??=new RegExp(`${this.get_mail_name().source}@${this.get_mail_host().source}`,"iy")}get_schema_names(){return this.cache.schema_names??=new RegExp((this.opts.schema_names||[]).map(e=>this.escapeRE(e)).join("|"))}get_schema_search(){return this.cache.schema_search??=new RegExp(`(^|(?!_)(?:[><|]|${this.src_ZPCc}))(${this.get_schema_names().source})`,"ig")}get_schema_at_start(){return this.cache.schema_at_start??=new RegExp(`^${this.get_schema_search().source}`,"i")}},lp={validate:(e,n,s)=>{const r=s.re.get_http_validator();r.lastIndex=n;const u=r.exec(e);return u?u[0].length:0},normalize:(e,n)=>n.normalize(e)},J_={"http:":lp,"https:":lp,"ftp:":lp,"//":{validate:function(e,n,s){const r=s.re.get_relative_proto_validator();r.lastIndex=n;const u=r.exec(e);return u?n>=3&&e[n-3]===":"||n>=3&&e[n-3]==="/"?0:u[0].length:0},normalize:(e,n)=>n.normalize(e)},"mailto:":{validate:function(e,n,s){const r=s.re.get_mailto_validator();r.lastIndex=n;const u=r.exec(e);return u?u[0].length:0},normalize:(e,n)=>n.normalize(e)}},W_="a:cdefgilmnoqrstuwxz|b:abdefghijmnorstvwyz|c:acdfghiklmnoruvwxyz|d:ejkmoz|e:cegrstu|f:ijkmor|g:abdefghilmnpqrstuwy|h:kmnrtu|i:delmnoqrst|j:emop|k:eghimnprwyz|l:abcikrstuvy|m:acdeghklmnopqrstuvwxyz|n:acefgilopruz|o:m|p:aefghklmnrstwy|q:a|r:eosuw|s:abcdeghijklmnortuvxyz|t:cdfghjklmnortvwz|u:agksyz|v:aceginu|w:fs|y:et|z:amw",ez="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";function tz(){const e=ez.split("|");return W_.split("|").forEach(n=>{const s=n.indexOf(":"),r=n.slice(0,s);for(const u of n.slice(s+1))e.push(r+u)}),e}var az={fuzzyLink:!1,fuzzyEmail:!0,fuzzyIP:!1,"---":!1,tlds:tz(),urlAuth:!1,maxLength:1e4},ab=class{schema;index;lastIndex;raw;text;url;constructor(e,n,s,r){const u=e.slice(s,r);this.schema=n.toLowerCase(),this.index=s,this.lastIndex=r,this.raw=u,this.text=u,this.url=u}},nz=class{__opts__;__schemas__;re;constructor(e={}){const{rebuilder:n,...s}=e;this.__opts__={...az,...s},this.__schemas__={...J_},this.re=n||new X_,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)})}add(e,n=null){if(!n)delete this.__schemas__[e];else{const s={normalize:(r,u)=>u.normalize(r),...n};this.__schemas__[e]=s}return this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}set(e={}){return this.__opts__={...this.__opts__,...e},this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}test(e){if(!e.length)return!1;let n,s;for(s=this.re.get_schema_search(),s.lastIndex=0;(n=s.exec(e))!==null;)if(this.testSchemaAt(e,n[2],s.lastIndex))return!0;if(this.__opts__.fuzzyLink&&this.__schemas__["http:"]&&(s=this.re.get_fuzzy_link_search(),s.lastIndex=0,s.exec(e)!==null))return!0;if(this.__opts__.fuzzyEmail&&this.__schemas__["mailto:"]&&e.indexOf("@")>=0){const r=this.re.get_fuzzy_mail_host_search(),u=this.re.get_mail_name_validator();for(r.lastIndex=0;(n=r.exec(e))!==null;){const f=e.slice(Math.max(0,n.index-65),n.index);if(u.test(f))return!0}}return!1}testSchemaAt(e,n,s){return this.__schemas__[n.toLowerCase()]?this.__schemas__[n.toLowerCase()].validate(e.slice(0,s+this.__opts__.maxLength),s,this):0}match(e){const n=[],s=this.re.get_schema_search();let r,u,f,g,b,x,k=!1,S=!1,C=!1,j=0;if(!e.length)return null;for(s.lastIndex=0,this.__opts__.fuzzyLink&&this.__schemas__["http:"]&&(r=this.re.get_fuzzy_link_search(),r.lastIndex=0),this.__opts__.fuzzyEmail&&this.__schemas__["mailto:"]&&(u=this.re.get_fuzzy_mail_host_search(),u.lastIndex=0,f=this.re.get_mail_name_validator());;){const E=Math.max(j-1,0);if(u&&f&&!C&&(!b||b.index<j))for(u.lastIndex<E&&(u.lastIndex=E);;){const te=u.exec(e);if(!te){C=!0,b=void 0;break}const X=f.exec(e.slice(Math.max(0,te.index-65),te.index));if(X){if(b={schema:"mailto:",index:te.index-X[1].length,lastIndex:te.index+te[0].length},b.index>=j)break;u.lastIndex<E&&(u.lastIndex=E)}}if(r&&!S&&(!g||g.index<j))for(r.lastIndex<E&&(r.lastIndex=E);;){const te=r.exec(e);if(!te){S=!0,g=void 0;break}if(g={schema:"",index:te.index+te[1].length,lastIndex:te.index+te[0].length},g.index>=j)break;r.lastIndex<E&&(r.lastIndex=E)}let B=b;(!B||g&&(g.index<B.index||g.index===B.index&&g.lastIndex>B.lastIndex))&&(B=g);let q;if(!k)for(;;){if(!x){s.lastIndex<E&&(s.lastIndex=E);const ae=s.exec(e);if(!ae){k=!0;break}x={schema:ae[2],index:ae.index+ae[1].length,lastIndex:ae.index+ae[0].length}}if(x.index<j){x=void 0;continue}if(B&&x.index>B.index)break;const te=x;x=void 0;const X=this.testSchemaAt(e,te.schema,te.lastIndex);if(X){q={schema:te.schema,index:te.index,lastIndex:te.lastIndex+X};break}}let U=q;if((!U||b&&(b.index<U.index||b.index===U.index&&b.lastIndex>U.lastIndex))&&(U=b),(!U||g&&(g.index<U.index||g.index===U.index&&g.lastIndex>U.lastIndex))&&(U=g),!U)break;U===b?b=void 0:U===g&&(g=void 0);const G=new ab(e,U.schema,U.index,U.lastIndex);G.schema?this.__schemas__[G.schema].normalize(G,this):this.normalize(G),n.push(G),j=U.lastIndex}return n.length?n:null}matchAtStart(e){if(!e.length)return null;const n=this.re.get_schema_at_start().exec(e);if(!n)return null;const s=this.testSchemaAt(e,n[2],n[0].length);if(!s)return null;const r=new ab(e,n[2],n.index+n[1].length,n.index+n[0].length+s);return this.__schemas__[r.schema].normalize(r,this),r}tlds(e,n=!1){return e=Array.isArray(e)?e:[e],n?this.__opts__.tlds=this.__opts__.tlds.concat(e):this.__opts__.tlds=e,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}normalize(e){e.schema||(e.url=`http://${e.url}`),e.schema==="mailto:"&&!/^mailto:/i.test(e.url)&&(e.url=`mailto:${e.url}`)}};const iz=JSON.parse('["aaa","aarp","abb","abbott","abbvie","abc","able","abogado","abudhabi","ac","academy","accenture","accountant","accountants","aco","actor","ad","ads","adult","ae","aeg","aero","aetna","af","afl","africa","ag","agakhan","agency","ai","aig","airbus","airforce","airtel","akdn","al","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","am","amazon","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","ao","aol","apartments","app","apple","aq","aquarelle","ar","arab","aramco","archi","army","arpa","art","arte","as","asda","asia","associates","at","athleta","attorney","au","auction","audi","audible","audio","auspost","author","auto","autos","aw","aws","ax","axa","az","azure","ba","baby","baidu","banamex","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bb","bbc","bbt","bbva","bcg","bcn","bd","be","beats","beauty","beer","berlin","best","bestbuy","bet","bf","bg","bh","bharti","bi","bible","bid","bike","bing","bingo","bio","biz","bj","black","blackfriday","blockbuster","blog","bloomberg","blue","bm","bms","bmw","bn","bnpparibas","bo","boats","boehringer","bofa","bom","bond","boo","book","booking","bosch","bostik","boston","bot","boutique","box","br","bradesco","bridgestone","broadway","broker","brother","brussels","bs","bt","build","builders","business","buy","buzz","bv","bw","by","bz","bzh","ca","cab","cafe","cal","call","calvinklein","cam","camera","camp","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","casa","case","cash","casino","cat","catering","catholic","cba","cbn","cbre","cc","cd","center","ceo","cern","cf","cfa","cfd","cg","ch","chanel","channel","charity","chase","chat","cheap","chintai","christmas","chrome","church","ci","cipriani","circle","cisco","citadel","citi","citic","city","ck","cl","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","cm","cn","co","coach","codes","coffee","college","cologne","com","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cool","coop","corsica","country","coupon","coupons","courses","cpa","cr","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","cu","cuisinella","cv","cw","cx","cy","cymru","cyou","cz","dad","dance","data","date","dating","datsun","day","dclk","dds","de","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dj","dk","dm","dnp","do","docs","doctor","dog","domains","dot","download","drive","dtv","dubai","dupont","durban","dvag","dvr","dz","earth","eat","ec","eco","edeka","edu","education","ee","eg","email","emerck","energy","engineer","engineering","enterprises","epson","equipment","er","ericsson","erni","es","esq","estate","et","eu","eurovision","eus","events","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fi","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","fj","fk","flickr","flights","flir","florist","flowers","fly","fm","fo","foo","food","football","ford","forex","forsale","forum","foundation","fox","fr","free","fresenius","frl","frogans","frontier","ftr","fujitsu","fun","fund","furniture","futbol","fyi","ga","gal","gallery","gallo","gallup","game","games","gap","garden","gay","gb","gbiz","gd","gdn","ge","gea","gent","genting","george","gf","gg","ggee","gh","gi","gift","gifts","gives","giving","gl","glass","gle","global","globo","gm","gmail","gmbh","gmo","gmx","gn","godaddy","gold","goldpoint","golf","goo","goodyear","goog","google","gop","got","gov","gp","gq","gr","grainger","graphics","gratis","green","gripe","grocery","group","gs","gt","gu","gucci","guge","guide","guitars","guru","gw","gy","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hiphop","hisamitsu","hitachi","hiv","hk","hkt","hm","hn","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","horse","hospital","host","hosting","hot","hotels","hotmail","house","how","hr","hsbc","ht","hu","hughes","hyatt","hyundai","ibm","icbc","ice","icu","id","ie","ieee","ifm","ikano","il","im","imamat","imdb","immo","immobilien","in","inc","industries","infiniti","info","ing","ink","institute","insurance","insure","int","international","intuit","investments","io","ipiranga","iq","ir","irish","is","ismaili","ist","istanbul","it","itau","itv","jaguar","java","jcb","je","jeep","jetzt","jewelry","jio","jll","jm","jmp","jnj","jo","jobs","joburg","jot","joy","jp","jpmorgan","jprs","juegos","juniper","kaufen","kddi","ke","kerryhotels","kerryproperties","kfh","kg","kh","ki","kia","kids","kim","kindle","kitchen","kiwi","km","kn","koeln","komatsu","kosher","kp","kpmg","kpn","kr","krd","kred","kuokgroup","kw","ky","kyoto","kz","la","lacaixa","lamborghini","lamer","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lb","lc","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","li","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","link","live","living","lk","llc","llp","loan","loans","locker","locus","lol","london","lotte","lotto","love","lpl","lplfinancial","lr","ls","lt","ltd","ltda","lu","lundbeck","luxe","luxury","lv","ly","ma","madrid","maif","maison","makeup","man","management","mango","map","market","marketing","markets","marriott","marshalls","mattel","mba","mc","mckinsey","md","me","med","media","meet","melbourne","meme","memorial","men","menu","merckmsd","mg","mh","miami","microsoft","mil","mini","mint","mit","mitsubishi","mk","ml","mlb","mls","mm","mma","mn","mo","mobi","mobile","moda","moe","moi","mom","monash","money","monster","mormon","mortgage","moscow","moto","motorcycles","mov","movie","mp","mq","mr","ms","msd","mt","mtn","mtr","mu","museum","music","mv","mw","mx","my","mz","na","nab","nagoya","name","navy","nba","nc","ne","nec","net","netbank","netflix","network","neustar","new","news","next","nextdirect","nexus","nf","nfl","ng","ngo","nhk","ni","nico","nike","nikon","ninja","nissan","nissay","nl","no","nokia","norton","now","nowruz","nowtv","np","nr","nra","nrw","ntt","nu","nyc","nz","obi","observer","office","okinawa","olayan","olayangroup","ollo","om","omega","one","ong","onl","online","ooo","open","oracle","orange","org","organic","origins","osaka","otsuka","ott","ovh","pa","page","panasonic","paris","pars","partners","parts","party","pay","pccw","pe","pet","pf","pfizer","pg","ph","pharmacy","phd","philips","phone","photo","photography","photos","physio","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","pk","pl","place","play","playstation","plumbing","plus","pm","pn","pnc","pohl","poker","politie","porn","post","pr","praxi","press","prime","pro","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","ps","pt","pub","pw","pwc","py","qa","qpon","quebec","quest","racing","radio","re","read","realestate","realtor","realty","recipes","red","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","ril","rio","rip","ro","rocks","rodeo","rogers","room","rs","rsvp","ru","rugby","ruhr","run","rw","rwe","ryukyu","sa","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sarl","sas","save","saxo","sb","sbi","sbs","sc","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scot","sd","se","search","seat","secure","security","seek","select","sener","services","seven","sew","sex","sexy","sfr","sg","sh","shangrila","sharp","shell","shia","shiksha","shoes","shop","shopping","shouji","show","si","silk","sina","singles","site","sj","sk","ski","skin","sky","skype","sl","sling","sm","smart","smile","sn","sncf","so","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","spa","space","sport","spot","sr","srl","ss","st","stada","staples","star","statebank","statefarm","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","su","sucks","supplies","supply","support","surf","surgery","suzuki","sv","swatch","swiss","sx","sy","sydney","systems","sz","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tc","tci","td","tdk","team","tech","technology","tel","temasek","tennis","teva","tf","tg","th","thd","theater","theatre","tiaa","tickets","tienda","tips","tires","tirol","tj","tjmaxx","tjx","tk","tkmaxx","tl","tm","tmall","tn","to","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","tr","trade","trading","training","travel","travelers","travelersinsurance","trust","trv","tt","tube","tui","tunes","tushu","tv","tvs","tw","tz","ua","ubank","ubs","ug","uk","unicom","university","uno","uol","ups","us","uy","uz","va","vacations","vana","vanguard","vc","ve","vegas","ventures","verisign","vermögensberater","vermögensberatung","versicherung","vet","vg","vi","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","viva","vivo","vlaanderen","vn","vodka","volvo","vote","voting","voto","voyage","vu","wales","walmart","walter","wang","wanggou","watch","watches","weather","weatherchannel","webcam","weber","website","wed","wedding","weibo","weir","wf","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","ws","wtc","wtf","xbox","xerox","xihuan","xin","xxx","xyz","yachts","yahoo","yamaxun","yandex","ye","yodobashi","yoga","yokohama","you","youtube","yt","yun","za","zappos","zara","zero","zip","zm","zone","zuerich","zw","ελ","ευ","бг","бел","дети","ею","католик","ком","мкд","мон","москва","онлайн","орг","рус","рф","сайт","срб","укр","қаз","հայ","ישראל","קום","ابوظبي","ارامكو","الاردن","البحرين","الجزائر","السعودية","العليان","المغرب","امارات","ایران","بارت","بازار","بيتك","بھارت","تونس","سودان","سورية","شبكة","عراق","عرب","عمان","فلسطين","قطر","كاثوليك","كوم","مصر","مليسيا","موريتانيا","موقع","همراه","پاکستان","ڀارت","कॉम","नेट","भारत","भारतम्","भारोत","संगठन","বাংলা","ভারত","ভাৰত","ਭਾਰਤ","ભારત","ଭାରତ","இந்தியா","இலங்கை","சிங்கப்பூர்","భారత్","ಭಾರತ","ഭാരതം","ලංකා","คอม","ไทย","ລາວ","გე","みんな","アマゾン","クラウド","グーグル","コム","ストア","セール","ファッション","ポイント","世界","中信","中国","中國","中文网","亚马逊","企业","佛山","信息","健康","八卦","公司","公益","台湾","台灣","商城","商店","商标","嘉里","嘉里大酒店","在线","大拿","天主教","娱乐","家電","广东","微博","慈善","我爱你","手机","招聘","政务","政府","新加坡","新闻","时尚","書籍","机构","淡马锡","游戏","澳門","点看","移动","组织机构","网址","网店","网站","网络","联通","谷歌","购物","通販","集团","電訊盈科","飞利浦","食品","餐厅","香格里拉","香港","닷넷","닷컴","삼성","한국"]');function sz(e,n){return e.endsWith(n)?e.length===n.length||e[e.length-n.length-1]===".":!1}function oz(e,n){const s=e.length-n.length-2,r=e.lastIndexOf(".",s);return r===-1?e:e.slice(r+1)}function rz(e,n,s){if(s.validHosts!==null){const u=s.validHosts;for(const f of u)if(sz(n,f))return f}let r=0;if(n.startsWith("."))for(;r<n.length&&n[r]===".";)r+=1;return e.length===n.length-r?null:oz(n,e)}function lz(e,n){return e.slice(0,-n.length-1)}const cp=/[\t\n\r]/g;let Ip=!1;function nb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function ib(e,n,s){const r=s-n,u=e.charCodeAt(n)|32;if(r===2)return u===119&&(e.charCodeAt(n+1)|32)===115?1:0;if(r===3){const f=e.charCodeAt(n+1)|32,g=e.charCodeAt(n+2)|32;return u===119&&f===115&&g===115||u===102&&f===116&&g===112?1:0}else if(r===4){const f=e.charCodeAt(n+1)|32,g=e.charCodeAt(n+2)|32,b=e.charCodeAt(n+3)|32;return u===104&&f===116&&g===116&&b===112?1:u===102&&f===105&&g===108&&b===101?2:0}else if(r===5)return u===104&&(e.charCodeAt(n+1)|32)===116&&(e.charCodeAt(n+2)|32)===116&&(e.charCodeAt(n+3)|32)===112&&(e.charCodeAt(n+4)|32)===115?1:0;return 0}function $r(e,n,s=!1){let r=0,u=e.length,f=!1,g=!1;if(Ip=!1,!n){if(e.startsWith("data:"))return null;for(;r<e.length&&e.charCodeAt(r)<=32;)r+=1;for(;u>r+1&&e.charCodeAt(u-1)<=32;)u-=1;if(e.charCodeAt(r)===47&&e.charCodeAt(r+1)===47)r+=2;else{const U=e.indexOf(":/",r);if(U!==-1){const G=ib(e,r,U);if(G===1)for(g=!0,r=U+2;e.charCodeAt(r)===47||e.charCodeAt(r)===92;)r+=1;else if(G===2){g=!0,r=U+1;let te=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&te<2;)r+=1,te+=1;if(te<2)return null}else{for(let te=r;te<U;te+=1){const X=e.charCodeAt(te)|32;if(!(X>=97&&X<=122||X>=48&&X<=57||X===46||X===45||X===43)){const ae=e.charCodeAt(te);return ae===9||ae===10||ae===13?$r(e.replace(cp,""),n,s):null}}if(e.charCodeAt(U+2)===47)r=U+3;else return null}}else if(e.charCodeAt(r)!==91){let G=-1;for(let te=r;te<u;te+=1){const X=e.charCodeAt(te);if(X===9||X===10||X===13)return $r(e.replace(cp,""),n,s);if(X===58){G=te;break}if(X===47||X===92||X===63||X===35)break}if(G!==-1){let te=!1;for(let X=G+1;X<u;X+=1){const ae=e.charCodeAt(X);if(ae===47||ae===92||ae===63||ae===35)break;if(ae===64){te=!0;break}}if(!te){let X=!0,ae=G+1;for(;ae<u;ae+=1){const oe=e.charCodeAt(ae);if(oe===47||oe===92||oe===63||oe===35)break;if(oe<48||oe>57){X=!1;break}}if(ae===G+1&&(X=!1),!X){const oe=ib(e,r,G);if(oe===0){let ge=!1;for(let M=G+1;M<u;M+=1){const J=e.charCodeAt(M);if(J===47||J===92||J===63||J===35)break;if(J===58){ge=!0;break}}if(!ge)return null}else if(g=!0,r=G+1,oe===2){let ge=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&ge<2;)r+=1,ge+=1;if(ge<2)return null}else for(;e.charCodeAt(r)===47||e.charCodeAt(r)===92;)r+=1}}}}}let x=-1,k=-1,S=-1,C=-1,j=!1,E=s,B=r-1,q=-1;if(s&&r<u){const U=e.charCodeAt(r);(!(nb(U)||U===46||U===95)||U===45)&&(E=!1)}for(let U=r;U<u;U+=1){const G=e.charCodeAt(U);if(G<64)if(G===47||G===35||G===63){u=U;break}else G===58?(C===-1&&(C=U),S=U):G===9||G===10||G===13?j=!0:s&&(G===46?((U-B>64||q===46||q===45)&&(E=!1),B=U):(G<48||G>57)&&(G!==45||q===46)&&(E=!1));else if(g&&G===92){u=U;break}else G===64?(x=U,C=-1):G===93?k=U:G>=65&&G<=90?f=!0:s&&!nb(G)&&(E=!1);s&&(q=G)}if(j)return $r(e.replace(cp,""),n,s);if(x!==-1&&x>=r&&x<u&&(r=x+1),e.charCodeAt(r)===91)return k!==-1?e.slice(r+1,k).toLowerCase():null;if(S!==-1&&S>r&&S<u&&C===S&&(u=S),r>=u)return null;s&&E&&x===-1&&S===-1&&k===-1&&e.charCodeAt(u-1)!==46&&u-r<=255&&u-B-1<=63&&q!==45&&(Ip=!0)}for(;u>r+1&&e.charCodeAt(u-1)===46;)u-=1;const b=r!==0||u!==e.length?e.slice(r,u):e;return f?b.toLowerCase():b}function cz(e){if(e.length<7||e.length>15)return!1;let n=0;for(let s=0;s<e.length;s+=1){const r=e.charCodeAt(s);if(r===46)n+=1;else if(r<48||r>57)return!1}return n===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function uz(e){if(e.length<3)return!1;let n=e.startsWith("[")?1:0,s=e.length;if(e[s-1]==="]"&&(s-=1),s-n>39)return!1;let r=!1;for(;n<s;n+=1){const u=e.charCodeAt(n);if(u===58)r=!0;else if(!(u>=48&&u<=57||u>=97&&u<=102||u>=65&&u<=70))return!1}return r}function dz(e){return uz(e)||cz(e)}const mz=["test","localhost","invalid","example","example.com","example.net","example.org","local","onion","alt","home.arpa","ipv4only.arpa","resolver.arpa","service.arpa","6tisch.arpa","eap.arpa"];function pz(e){for(const n of mz)if(e.endsWith(n)&&(e.length===n.length||e.charCodeAt(e.length-n.length-1)===46))return!0;return!1}function sb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function ob(e){if(e.length>255||e.length===0||!sb(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let n=-1,s=-1;const r=e.length;for(let u=0;u<r;u+=1){const f=e.charCodeAt(u);if(f===46){if(u-n>64||s===46||s===45)return!1;n=u}else if(!(sb(f)||f===45||f===95)||f===45&&s===46)return!1;s=f}return r-n-1<=63&&s!==45}function Wx({allowIcannDomains:e=!0,allowPrivateDomains:n=!1,detectIp:s=!0,detectSpecialUse:r=!1,extractHostname:u=!0,mixedInputs:f=!0,validHosts:g=null,validateHostname:b=!0}){return{allowIcannDomains:e,allowPrivateDomains:n,detectIp:s,detectSpecialUse:r,extractHostname:u,mixedInputs:f,validHosts:g,validateHostname:b}}const hz=Wx({});function fz(e){return e===void 0?hz:Wx(e)}function gz(e,n){return n.length===e.length?"":e.slice(0,-n.length-1)}function yz(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function e2(e){e.domain=null,e.domainWithoutSuffix=null,e.hostname=null,e.isIcann=null,e.isIp=null,e.isPrivate=null,e.isSpecialUse=null,e.publicSuffix=null,e.subdomain=null}function t2(e,n,s,r,u){const f=fz(r);if(typeof e!="string")return u;let g=!1;return f.extractHostname?f.mixedInputs?(g=ob(e),u.hostname=$r(e,g,f.validateHostname)):u.hostname=$r(e,!1,f.validateHostname):u.hostname=e,f.detectIp&&u.hostname!==null&&(u.isIp=dz(u.hostname),u.isIp)?u:f.validateHostname&&f.extractHostname&&u.hostname!==null&&!(g&&u.hostname===e)&&!Ip&&!ob(u.hostname)?(u.hostname=null,u):(n===0||u.hostname===null||(n===5&&f.detectSpecialUse&&(u.isSpecialUse=pz(u.hostname)),s(u.hostname,f,u),n===2||u.publicSuffix===null)||(u.domain=rz(u.publicSuffix,u.hostname,f),n===3||u.domain===null)||(u.subdomain=gz(u.hostname,u.domain),n===4)||(u.domainWithoutSuffix=lz(u.domain,u.publicSuffix)),u)}function bz(e,n,s){if(!n.allowPrivateDomains&&e.length>3){const r=e.length-1,u=e.charCodeAt(r),f=e.charCodeAt(r-1),g=e.charCodeAt(r-2),b=e.charCodeAt(r-3);if(u===109&&f===111&&g===99&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="com",!0;if(u===103&&f===114&&g===111&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="org",!0;if(u===117&&f===100&&g===101&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="edu",!0;if(u===118&&f===111&&g===103&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="gov",!0;if(u===116&&f===101&&g===110&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="net",!0;if(u===101&&f===100&&g===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="de",!0}return!1}const ls=new Uint8Array([1,2,1,1,1,1,1,1,1,1,1,1,0,2,2,2,0,2,2,0,2,0,0,1,0,0,2,1,1,1,1,1,1,0,0,0,1,0,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,1,0,2,0,0,0,0,0,0,0,2,0,2,2,0,0,2,2,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,2,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,2,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,1,0,2,2,0,0,0,2,0,1,1,0,2,0,2,2,0,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,0,0,0,0,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,2,2,0,2,2,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,2,0,2,2,2,2,0,0,0,0,2,0,0,0,0,0,0,2,2,0,0,0,2,2,1,1,1,1,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,2,2,0,0,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,2,2,1,2,1,1,1,2,1,1,1,1,1,0,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0]),Wc=new Uint16Array([0,0,0,10,11,18,106,111,117,124,130,136,145,146,147,148,149,150,151,153,154,155,157,159,226,239,241,242,243,258,265,266,269,270,271,274,276,295,296,298,307,312,313,331,332,335,337,338,340,374,375,377,380,381,385,387,391,394,426,429,442,443,451,452,454,464,478,479,480,489,490,527,532,548,568,574,615,616,643,670,671,819,825,828,829,830,835,840,849,871,872,873,874,875,876,877,895,897,898,901,903,904,906,908,923,938,943,944,946,947,948,949,950,952,955,960,961,962,964,965,968,971,972,973,986,988,1e3,1011,1019,1021,1061,1064,1068,1069,1071,1074,1085,1087,1097,1099,1105,1107,1108,1110,1113,1114,1115,1167,1169,1171,1191,1192,1193,1194,1196,1207,1238,1249,1261,1270,1277,1282,1295,1306,1319,1320,1331,1365,1366,1367,1382,1397,1469,1470,1472,1473,1507,1508,1509,1512,1516,1518,1547,1548,1556,1557,1558,1560,1562,1563,1565,1566,1567,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1594,1595,1596,1598,2053,2056,2057,2059,2066,2073,2083,2087,2098,2099,2100,2112,2113,2115,2117,2118,2125,2126,2128,2129,2131,2132,2133,2134,2135,2209,2211,2232,2233,2234,2236,2262,2263,2314,2315,2317,2324,2330,2340,2350,2403,2404,2405,2415,2429,2430,2433,2440,2441,2449,2450,2451,2452,2453,2464,2465,2466,2468,2469,2470,2471,2473,2483,2495,2501,2533,2537,2539,2540,2542,2543,2554,2555,2557,2565,2572,2578,2583,2584,2590,2593,2599,2606,2607,2614,2622,2623,2624,2662,2668,2683,2684,2689,2707,2738,2756,2758,2761,2769,2771,2778,2830,2854,2855,2856,2857,2858,2859,2860,2861,2868,2869,2870,2871,2872,2873,2875,2876,2880,2964,2977,2978,3414,3418,3432,3484,3512,3534,3592,3614,3629,3692,3743,3781,3817,3842,3984,4030,4081,4100,4134,4149,4169,4199,4230,4253,4284,4314,4346,4373,4448,4470,4508,4518,4552,4571,4597,4639,4689,4715,4784,4785,4787,4810,4833,4869,4900,4917,4974,4987,5011,5040,5042,5076,5092,5120,5425,5434,5443,5450,5467,5471,5477,5516,5518,5525,5532,5541,5548,5549,5560,5563,5578,5579,5588,5589,5598,5607,5613,5615,5616,5617,5653,5654,5656,5664,5671,5684,5688,5690,5691,5697,5704,5718,5728,5733,5741,5749,5755,5756,5760,5762,5763,5775,5776,5777,5778,5780,5781,5784,5786,5789,5793,5794,5800,5801,5802,5804,5806,5808,5809,5810,5813,5815,5818,5819,5821,6019,6026,6027,6037,6042,6059,6073,6082,6083,6084,6088,6089,6091,6093,6099,6100,6103,6104,6106,6107,6108,7008,7009,7013,7031,7040,7043,7050,7051,7053,7054,7055,7057,7109,7110,7113,7114,7231,7232,7243,7254,7261,7264,7273,7274,7275,7290,7345,7536,7538,7539,7541,7546,7559,7574,7581,7590,7593,7596,7603,7611,7615,7616,7617,7631,7635,7644,7645,7646,7650,7685,7686,7703,7710,7718,7719,7724,7732,7776,7777,7783,7786,7797,7802,7803,7806,7839,7840,7846,7853,7854,7863,7872,7887,7891,7943,7944,7949,7951,7954,7956,7957,7958,7967,7981,7989,8003,8015,8016,8018,8020,8042,8053,8059,8060,8072,8084,8171,8183,8185,8194,8197,8203,8228,8231,8232,8233,8235,8238,8241,8252,8254,8256,8284,8358,8365,8369,8370,8379,8401,8402,8407,8408,8487,8489,8491,8500,8504,8510,8516,8522,8532,8537,8538,8556,8567,8572,8577,8587,8593,8597,8603,8609,10217,10218,10219,10226,10228]),eu=new Uint8Array([3,3,3,3,3,3,3,3,5,8,8,2,2,3,3,3,3,3,8,5,5,5,5,5,3,3,5,5,9,12,19,8,19,8,11,9,9,8,7,7,6,8,9,16,10,7,7,11,8,6,6,9,7,11,7,14,4,4,4,4,4,4,10,7,6,6,6,6,10,10,6,10,10,22,11,9,10,10,10,9,10,8,7,7,7,8,21,13,11,11,9,10,9,13,10,8,8,9,12,9,7,10,7,7,13,7,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,8,6,3,3,3,3,3,3,2,5,3,3,3,7,2,2,2,2,2,2,3,3,3,1,1,7,8,5,2,2,7,2,2,1,4,1,11,9,9,5,5,8,5,5,5,5,5,5,5,3,3,3,3,3,5,11,9,9,13,7,14,7,6,6,6,7,6,6,6,6,6,10,7,11,9,4,4,4,4,4,4,6,6,6,6,6,8,7,10,9,9,9,8,9,8,10,6,9,9,8,10,10,7,8,1,9,10,12,12,12,10,9,9,10,10,9,9,1,1,5,3,3,3,3,3,3,3,3,3,3,3,3,6,6,6,4,3,3,3,7,4,4,4,3,3,6,7,3,4,1,2,2,2,6,1,2,2,2,2,2,12,5,3,8,9,13,4,4,13,9,9,11,7,3,12,9,2,2,2,3,3,3,3,3,8,2,2,3,3,3,3,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,4,4,3,7,10,15,7,15,15,20,15,9,10,10,12,14,14,14,12,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,9,7,8,6,8,8,6,8,13,8,8,6,13,8,11,13,8,6,13,8,6,9,10,10,12,14,14,14,12,12,12,12,14,14,10,10,10,10,9,9,9,10,14,14,11,13,13,9,9,9,9,9,9,2,6,9,2,2,3,3,3,3,3,3,3,3,3,4,4,4,2,3,3,3,3,3,3,7,7,2,3,2,2,5,3,3,3,3,3,3,4,2,2,2,2,2,2,3,3,3,3,3,3,3,4,5,7,2,2,12,8,10,8,10,7,18,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,2,2,3,3,3,5,5,3,8,8,6,8,6,6,4,6,7,7,7,10,11,2,5,5,3,3,3,3,3,3,5,5,6,11,10,7,7,7,4,4,4,2,3,3,3,3,3,2,7,5,5,3,3,3,3,3,3,3,3,7,7,7,11,7,6,9,6,6,8,10,8,6,8,13,4,4,4,4,4,10,8,11,8,8,8,10,10,7,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,7,10,13,7,8,7,11,8,8,6,9,8,8,6,6,6,8,8,6,6,6,6,6,9,7,6,4,4,4,4,4,4,4,6,6,6,9,7,8,10,8,8,2,3,3,3,3,3,2,8,9,9,2,2,2,3,3,3,2,3,3,3,9,2,2,3,3,3,3,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,5,5,3,5,4,2,3,2,4,3,9,2,2,2,2,2,5,5,3,8,8,13,6,10,9,4,7,9,11,2,3,7,3,3,4,1,3,4,2,9,3,3,12,5,3,7,10,10,7,4,4,6,14,7,9,7,13,2,2,2,2,2,2,3,3,3,3,3,8,15,4,4,2,3,3,3,7,4,9,9,2,3,3,3,5,3,2,2,7,2,7,6,6,7,2,4,2,2,2,2,2,2,8,8,8,9,5,2,3,3,3,3,3,3,10,7,4,4,4,4,3,4,2,3,3,3,3,3,10,7,4,4,4,4,2,3,3,3,3,10,7,4,4,4,4,3,9,6,6,6,9,13,9,2,2,2,8,7,9,5,3,3,3,5,5,12,9,10,7,8,7,6,8,6,11,12,7,9,10,4,4,7,8,11,6,7,9,8,7,10,8,9,15,7,8,5,4,7,2,3,3,3,2,14,10,2,14,10,2,14,3,9,13,13,10,14,16,17,11,2,14,2,14,3,9,13,10,14,16,17,11,14,10,14,2,7,3,10,7,14,10,2,14,10,9,9,17,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,10,10,10,12,9,4,10,11,8,8,8,7,9,5,3,3,3,3,3,3,3,3,5,8,4,4,4,4,4,4,6,16,3,3,14,3,14,2,14,9,13,10,10,14,16,17,11,6,9,10,10,12,14,14,14,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,9,9,9,9,9,9,2,14,9,13,10,10,14,16,17,11,6,2,14,9,17,13,10,10,14,16,17,11,6,2,14,9,13,10,14,16,17,11,2,14,9,13,10,16,11,2,14,10,19,7,2,14,9,13,10,19,10,7,14,16,17,11,6,2,14,9,13,10,19,7,14,16,17,11,2,14,9,13,17,13,10,10,14,16,17,11,6,3,2,14,9,13,10,10,14,16,17,11,6,9,10,12,14,14,14,12,12,12,12,12,14,14,14,10,10,10,14,9,9,9,9,14,14,14,13,13,14,9,9,9,9,9,9,4,11,2,14,9,13,17,13,10,19,10,7,14,16,17,11,6,2,14,9,13,17,13,10,19,10,7,14,16,17,11,6,2,9,10,10,7,17,3,3,12,12,16,15,15,12,14,14,14,20,20,13,12,12,12,12,12,12,20,25,14,14,12,12,10,10,10,10,9,9,9,25,4,9,17,10,7,14,16,21,13,13,14,20,14,13,17,24,9,12,13,25,13,21,20,17,9,9,9,9,9,9,12,17,4,4,9,9,9,10,10,12,14,14,14,12,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,9,1,8,7,11,11,1,3,3,3,4,8,9,10,14,14,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,7,4,4,4,4,4,4,4,4,4,4,9,12,6,14,4,12,7,2,2,1,2,7,6,4,4,4,6,8,8,7,4,5,6,3,3,3,3,4,16,8,3,5,4,3,3,3,5,2,2,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,12,7,7,13,9,10,12,8,9,7,8,5,12,10,13,14,5,5,5,13,5,5,5,3,3,3,5,16,5,5,5,5,5,7,12,14,8,12,8,10,12,9,11,7,9,7,10,7,13,9,7,12,8,17,7,7,16,10,13,13,8,10,10,14,17,7,16,16,15,8,10,10,12,17,7,17,14,7,10,17,8,7,7,7,8,15,15,7,14,10,10,10,11,11,7,7,13,8,10,7,16,7,8,7,14,17,12,10,11,21,8,9,7,13,9,8,13,6,12,7,6,13,10,10,10,8,18,9,17,13,10,12,6,13,6,11,8,13,10,13,18,13,11,13,8,16,7,10,8,16,12,10,8,8,6,14,11,8,15,8,8,7,7,12,7,8,9,14,15,8,9,10,9,15,7,8,8,12,13,9,10,15,15,13,7,10,10,20,7,6,9,6,6,14,11,14,11,12,9,10,16,16,12,7,11,28,8,11,10,7,21,8,7,9,4,4,4,17,7,8,6,9,6,6,13,6,6,6,6,18,20,14,8,11,12,9,10,13,15,19,8,9,12,7,10,16,12,9,9,9,14,12,11,9,12,11,18,9,9,9,10,7,7,16,8,9,7,13,12,10,18,7,8,11,7,7,8,8,13,7,7,7,11,15,13,11,7,8,15,11,7,8,18,14,13,18,15,10,12,12,9,7,11,11,8,7,10,8,14,12,10,18,7,10,9,7,8,13,10,14,9,10,8,8,23,7,7,11,12,12,17,7,7,11,11,17,16,16,7,8,11,14,14,8,10,7,7,16,16,13,9,11,9,15,15,11,11,7,7,14,7,9,7,7,16,10,13,10,11,14,7,11,10,11,7,11,10,11,15,11,15,10,12,17,10,14,13,11,11,12,13,10,7,13,10,16,12,21,9,10,10,7,11,14,17,7,7,8,11,12,8,15,14,14,8,17,12,10,10,7,9,11,7,10,7,11,18,7,11,7,12,11,8,8,14,12,7,8,15,3,7,7,5,2,9,2,2,2,2,2,2,2,3,3,3,3,3,3,3,2,5,3,3,3,3,3,3,4,4,3,3,3,3,3,3,5,11,6,4,7,10,7,7,11,1,10,2,2,3,3,3,3,3,3,3,3,5,7,3,5,6,3,3,5,2,2,5,3,4,13,11,3,3,6,3,5,14,2,2,3,8,2,2,12,5,18,5,3,3,3,16,5,5,5,10,7,13,12,13,9,12,14,19,9,9,21,9,9,10,6,9,6,15,10,6,12,8,6,10,15,4,4,6,6,9,9,12,16,14,23,7,7,7,14,9,7,7,11,14,10,7,10,10,10,12,6,11,10,13,11,15,11,7,12,10,3,7,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,4,3,7,2,5,5,3,3,5,5,5,5,7,6,6,6,4,4,4,4,4,4,6,6,6,6,6,7,10,2,2,2,5,5,5,5,3,3,3,3,3,5,5,10,9,11,8,7,12,8,9,7,6,13,11,6,13,7,9,9,4,4,4,4,4,4,6,10,7,8,13,8,8,9,14,8,10,7,7,7,9,6,9,7,2,12,5,3,3,13,4,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,4,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,8,4,4,4,4,4,4,4,4,4,4,4,4,9,3,3,3,3,3,3,3,3,3,3,4,2,2,2,5,3,3,3,3,3,3,3,3,4,4,1,7,6,4,12,3,3,3,3,3,8,7,3,3,3,3,3,3,4,4,11,14,2,8,3,5,5,8,10,8,6,4,7,17,7,4,5,2,6,3,5,2,4,4,2,12,5,5,3,15,13,10,8,11,2,2,3,3,3,3,3,3,3,3,4,4,5,3,3,3,3,4,18,2,12,5,3,3,3,3,3,5,16,8,8,9,6,6,4,4,4,4,31,6,6,10,11,21,10,9,7,10,7,7,2,4,4,4,4,6,5,3,3,4,3,3,3,3,3,3,3,3,3,6,6,6,2,2,2,5,3,3,3,7,7,4,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,8,2,3,3,3,3,3,5,9,11,3,3,3,3,4,4,3,3,3,3,3,5,10,9,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,11,10,10,10,10,10,11,10,11,10,11,10,9,9,11,3,3,3,3,3,3,5,3,7,8,8,7,6,6,11,4,4,4,7,8,9,9,2,3,7,4,4,2,5,5,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,2,2,5,5,5,5,5,3,3,5,5,5,7,7,6,6,6,4,4,4,4,4,4,4,4,4,4,6,6,8,8,1,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4,6,9,12,3,7,10,7,2,2,3,3,3,3,3,4,3,3,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,8,8,6,6,8,6,7,4,4,4,4,4,4,6,7,5,5,20,19,8,10,9,7,10,6,8,11,6,6,6,6,13,12,8,6,7,14,11,9,2,5,3,3,6,2,3,2,2,2,2,2,2,2,5,4,3,7,6,4,7,4,3,6,4,7,2,7,7,7,5,5,5,5,3,3,3,3,3,3,3,3,3,3,5,9,10,10,8,11,7,8,20,7,8,9,8,12,6,6,6,8,9,8,12,6,6,8,13,10,12,6,6,7,7,8,9,6,4,4,4,4,4,4,4,10,6,6,6,7,14,11,10,7,8,10,8,11,14,11,11,9,7,9,8,11,9,17,10,9,2,2,2,9,3,3,3,3,15,14,9,5,5,2,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,15,12,22,19,17,18,18,19,21,7,16,16,5,5,5,5,5,5,5,5,5,5,5,7,5,5,5,5,5,5,5,5,5,5,5,9,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,7,16,11,11,7,7,7,7,17,7,8,12,15,9,19,7,19,8,16,21,11,12,19,14,22,7,7,7,7,7,7,7,7,7,7,7,16,16,19,24,12,7,14,7,12,7,8,10,10,13,7,12,12,7,7,10,18,15,12,16,7,14,12,17,10,16,17,12,17,25,7,7,7,13,6,9,6,9,18,6,6,11,20,10,6,6,6,6,6,6,6,17,6,6,6,15,6,6,6,6,6,8,14,11,12,15,13,19,17,21,7,18,8,13,13,8,12,8,6,6,13,6,15,15,16,6,6,16,6,6,6,14,6,18,6,6,6,17,18,9,13,15,8,19,8,15,15,18,14,16,4,4,4,4,4,4,4,4,4,4,4,4,6,11,10,11,6,21,23,12,17,12,11,14,13,22,15,15,11,12,14,12,7,12,8,14,12,18,10,8,16,19,17,12,14,15,8,9,19,17,12,13,13,15,18,13,23,24,23,21,17,24,8,21,8,14,14,16,14,8,8,15,20,8,19,21,9,8,13,12,13,15,11,8,11,9,9,8,11,8,21,14,21,15,15,13,7,19,7,7,7,7,7,7,16,12,17,18,7,7,11,11,7,9,9,2,2,3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,4,5,5,5,5,5,5,5,5,3,3,10,10,7,9,7,7,7,6,8,6,6,6,6,6,6,6,7,6,8,6,6,9,7,7,7,4,4,4,4,4,4,4,4,8,9,8,7,8,7,8,10,7,5,5,5,5,5,5,3,9,7,7,8,6,6,6,6,6,6,6,6,9,6,6,9,11,13,7,8,9,9,5,5,5,7,8,6,6,6,6,6,6,6,7,8,9,7,10,9,10,7,8,5,5,5,5,5,5,7,7,9,8,7,7,6,6,6,6,6,6,10,6,6,6,6,6,6,6,6,6,6,6,9,10,4,4,4,4,8,7,7,10,10,9,8,8,15,9,8,8,8,8,8,9,10,9,10,7,8,13,5,5,5,5,5,3,3,7,7,8,6,6,6,4,4,11,9,7,8,9,10,7,5,5,5,5,5,3,3,7,6,6,13,7,9,8,7,5,5,5,5,5,5,5,5,3,3,3,3,7,8,7,8,13,6,6,6,6,6,6,6,6,6,6,6,6,6,6,8,8,6,6,6,6,7,6,7,6,6,9,7,4,4,4,4,4,4,4,7,8,7,8,9,8,8,8,7,10,7,8,5,5,5,5,5,5,5,5,3,7,7,7,7,9,7,10,9,6,6,6,6,6,8,8,6,6,6,7,6,6,6,9,9,4,4,13,7,10,9,9,12,7,8,8,10,8,8,8,8,8,8,5,5,5,5,3,7,7,11,7,9,8,8,6,6,10,6,8,8,8,6,7,6,6,12,4,4,4,4,4,4,4,4,4,9,8,8,16,8,9,8,7,5,5,5,5,5,3,3,7,7,7,10,15,8,9,8,9,9,6,6,6,6,6,6,7,4,8,7,8,8,7,8,11,8,5,5,5,5,5,3,7,7,6,11,16,7,6,4,4,4,4,9,9,8,8,8,13,12,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,7,8,8,9,13,7,7,7,9,8,8,9,12,7,12,7,12,8,7,10,12,9,9,6,6,8,8,6,6,6,6,6,6,6,9,8,9,11,8,6,6,6,6,6,12,7,6,6,6,9,7,7,6,6,6,6,6,11,9,6,6,6,6,6,7,9,4,4,4,4,4,4,4,4,9,9,9,9,7,7,7,7,7,11,7,7,8,8,8,8,8,8,9,8,9,9,7,7,11,11,7,12,8,8,8,8,8,7,8,8,8,8,8,13,12,8,8,8,8,7,7,7,9,5,5,5,5,5,5,5,3,3,7,7,11,7,8,8,8,6,6,6,6,6,6,6,6,6,6,6,10,11,6,7,9,4,4,4,4,4,4,9,9,8,9,8,8,8,7,7,5,5,5,5,5,5,5,5,5,5,3,3,11,7,7,7,9,6,6,11,8,10,6,6,6,12,8,8,7,6,6,8,7,4,4,4,4,4,4,4,4,9,10,9,9,8,10,9,11,8,5,5,5,7,6,6,8,7,4,4,4,4,8,7,7,8,7,8,8,5,5,5,5,7,7,8,8,8,6,6,6,6,6,10,8,9,13,6,7,6,6,8,7,8,4,4,4,4,11,8,8,8,10,5,5,8,7,8,13,8,7,6,8,6,9,7,8,7,5,5,5,5,5,5,3,3,7,8,9,6,4,8,10,10,8,12,9,13,2,7,5,5,5,5,5,7,7,10,6,6,6,6,6,6,6,8,4,4,9,8,8,8,14,8,8,8,9,8,5,5,5,5,5,3,3,9,6,6,6,6,10,12,6,6,6,6,6,6,6,4,4,4,4,11,8,7,8,8,8,5,5,3,3,3,3,7,7,6,8,6,8,11,7,6,6,6,7,4,8,11,9,10,5,5,5,3,3,3,7,7,8,9,8,15,9,6,6,6,6,6,6,11,11,4,4,4,4,4,7,9,9,10,8,7,5,5,5,5,5,5,3,3,8,6,6,6,6,6,6,6,6,6,9,7,4,4,4,4,4,9,9,8,8,10,13,5,5,5,3,17,7,7,7,7,7,8,6,8,13,6,6,6,6,6,6,6,6,4,4,4,9,10,8,8,8,5,5,5,5,3,7,7,7,8,8,6,6,6,8,8,8,9,10,8,4,8,10,9,8,8,8,9,13,10,5,5,5,5,5,5,5,5,5,5,3,3,7,8,9,9,7,7,7,10,9,9,8,9,8,8,8,6,6,6,6,6,6,6,6,6,6,6,6,6,8,12,6,6,6,6,6,6,6,6,6,12,4,4,4,4,4,4,4,4,4,4,4,11,8,8,9,9,10,8,9,7,7,5,5,5,5,5,5,3,7,8,7,6,6,8,6,6,10,4,7,8,9,12,8,7,7,5,5,5,5,5,5,3,3,7,14,7,9,8,8,6,6,8,12,12,6,6,7,7,10,4,4,4,4,4,9,9,14,9,13,8,7,5,5,5,6,6,6,7,4,8,7,5,5,5,5,5,5,5,5,3,3,7,7,7,8,6,6,6,6,6,6,12,6,6,6,6,4,4,9,9,8,8,11,7,7,7,5,5,5,3,9,8,6,6,7,4,4,4,4,4,4,8,8,11,5,5,5,7,7,7,9,6,6,6,6,6,6,9,8,4,4,4,4,7,12,9,8,8,8,7,10,10,5,5,5,5,5,5,5,3,11,14,8,7,8,8,6,6,6,6,6,8,7,6,6,6,7,6,8,9,4,4,4,7,8,9,7,9,7,7,9,8,5,5,5,5,5,5,5,5,5,11,3,9,7,7,12,14,8,6,6,12,11,8,6,6,6,6,6,6,6,6,6,15,7,4,4,4,16,9,9,9,8,9,9,9,9,9,8,8,8,13,11,8,5,5,5,5,3,7,6,6,8,8,8,6,6,7,10,7,4,4,4,4,9,7,8,7,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,7,7,7,9,6,6,6,6,6,8,8,7,7,9,6,6,6,7,6,6,6,6,6,15,4,4,4,4,4,8,8,7,8,12,9,8,8,8,8,8,9,8,8,10,8,8,8,8,16,9,10,2,5,5,5,5,5,5,5,9,7,6,8,9,4,4,4,4,4,7,8,8,8,9,8,11,10,5,5,5,5,3,7,8,6,6,6,6,6,8,6,6,6,6,4,12,10,12,7,7,7,7,7,7,7,5,5,5,5,3,3,7,7,10,8,9,7,6,10,7,6,6,4,4,8,9,7,9,9,9,9,8,8,8,8,10,5,5,5,5,5,5,8,7,6,6,6,10,6,7,10,7,4,4,4,4,4,4,4,12,9,10,7,7,10,8,10,5,12,9,6,6,6,6,6,7,6,4,4,4,10,9,9,8,7,7,5,5,5,5,5,5,3,3,13,7,7,9,7,7,7,8,9,9,7,8,6,6,6,6,6,6,6,6,6,6,6,6,6,7,13,9,15,15,4,4,4,4,4,10,10,9,8,9,8,8,9,7,8,7,8,5,5,7,6,6,6,4,4,4,7,8,11,8,5,5,5,5,5,5,5,7,6,6,6,6,6,6,9,11,10,7,4,4,4,9,8,8,5,5,5,5,5,9,9,6,6,6,6,6,6,6,9,9,4,4,4,4,8,8,8,9,9,8,8,8,13,2,4,2,7,5,5,5,5,5,5,9,9,6,6,6,6,10,8,8,8,6,6,6,4,4,9,8,10,8,9,8,8,8,9,8,8,5,3,3,3,11,6,6,6,7,6,6,6,4,4,9,8,5,5,5,5,5,3,11,8,6,6,6,6,6,9,7,4,4,14,10,9,8,12,8,8,8,11,15,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,11,11,10,10,7,7,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,5,5,5,3,3,3,7,11,7,7,11,11,7,8,9,10,7,7,9,9,9,9,7,7,10,8,13,8,8,8,8,11,10,6,6,8,10,11,14,14,6,6,6,6,6,6,9,11,7,7,6,8,12,11,11,6,6,10,6,6,6,6,6,10,7,7,6,6,11,6,6,6,11,8,9,7,6,10,11,9,10,11,7,11,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,6,6,8,9,10,9,6,6,6,10,6,6,6,6,11,10,11,10,9,8,7,7,7,7,11,14,8,10,9,9,8,8,7,11,8,8,8,11,11,10,10,9,10,8,11,10,8,11,9,12,8,10,8,11,8,9,9,11,11,10,11,13,8,7,8,8,9,7,8,8,8,8,7,8,2,2,2,2,2,2,2,4,4,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,4,2,3,3,3,3,3,3,3,3,8,6,4,4,4,11,7,11,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,5,3,3,3,3,8,7,7,8,8,4,8,7,7,7,9,7,8,9,8,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,6,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,4,5,5,3,8,8,6,9,4,4,10,7,3,3,3,2,5,3,3,3,3,3,3,3,3,3,3,3,3,4,3,2,2,2,3,3,3,3,3,4,10,2,3,3,3,3,3,3,3,4,2,3,3,3,3,3,3,3,3,2,2,3,3,3,5,2,4,2,6,2,2,9,5,5,3,3,3,3,3,3,3,5,5,5,9,8,7,6,6,11,4,4,4,4,4,4,4,4,6,6,7,7,11,8,8,6,5,11,2,3,3,3,3,3,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,3,6,4,4,4,4,3,3,3,3,5,7,2,3,3,3,3,3,8,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,6,4,4,4,4,2,2,3,3,3,3,3,3,3,4,3,3,3,3,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,3,2,3,3,3,3,3,6,3,3,8,10,3,4,4,1,1,1,1,1,1,1,8,9,10,7,7,1,1,3,8,7,7,8,8,8,1,6,1,1,6,3,3,4,7,3,5,5,4,4,4,4,4,2,7,7,8,12,3,4,5,1,3,4,4,10,4,3,3,3,8,7,7,2,2,2,2,2,2,2,2,2,12,9,20,7,5,5,5,9,13,5,5,5,5,5,3,3,3,16,5,5,5,13,7,8,8,11,8,7,9,7,11,12,9,9,8,8,11,10,14,7,12,10,11,13,7,9,11,17,17,14,13,7,8,7,10,10,7,16,13,7,8,17,12,9,8,6,7,10,6,6,12,6,8,10,8,8,8,6,8,6,14,6,6,6,13,6,10,6,6,7,14,8,6,6,10,11,10,9,9,7,7,6,6,6,9,9,7,9,10,9,13,12,4,4,4,4,4,4,4,4,4,6,6,6,8,8,6,8,9,10,9,7,10,10,8,7,8,7,10,12,9,8,15,8,7,8,8,7,7,15,13,7,10,9,14,18,16,7,24,7,8,10,11,16,8,14,7,9,9,9,11,13,19,14,15,14,11,7,13,9,10,7,13,9,10,11,12,8,9,2,3,5,8,7,4,4,10,5,3,3,3,3,3,5,4,4,4,2,2,2,2,2,1,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,2,2,2,3,3,3,3,3,3,3,3,3,3,4,2,12,5,3,8,10,15,6,7,2,3,2,5,5,12,2,5,5,5,5,2,2,5,5,12,9,5,2,2,9,5,5,12,12,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,12,5,8,8,9,5,5,5,8,19,7,16,15,14,9,9,9,9,7,11,11,11,7,14,10,10,5,5,5,5,5,5,5,5,5,15,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,14,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,15,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,12,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,9,12,9,9,12,12,12,15,7,11,7,14,11,18,13,8,18,15,18,12,14,12,8,8,8,8,9,9,9,12,7,10,10,8,8,12,12,12,7,12,12,9,7,7,7,7,7,8,15,12,9,10,10,7,10,10,13,11,10,9,22,11,9,8,8,8,8,8,13,18,13,9,15,19,9,7,7,10,7,7,7,11,8,13,17,7,7,10,10,10,7,20,16,7,7,7,7,7,7,11,21,12,12,13,11,14,16,8,8,13,11,7,7,13,7,7,14,15,15,6,6,6,6,6,6,6,6,6,6,13,10,18,6,6,6,6,6,6,6,6,6,11,8,8,12,12,11,11,8,12,9,9,9,13,13,9,9,9,9,9,9,6,10,12,6,6,6,6,17,11,7,7,7,7,14,14,12,6,7,7,6,6,15,10,13,10,6,8,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,13,9,9,15,13,6,12,12,6,19,11,10,7,7,16,8,19,17,9,9,9,9,9,6,6,6,10,8,16,8,6,6,9,6,6,6,6,6,6,6,6,8,8,8,6,7,6,6,6,6,6,6,6,6,6,6,6,14,6,6,6,6,20,6,9,6,14,9,9,9,6,9,8,8,12,9,8,8,8,8,7,8,12,7,8,8,8,6,8,6,6,6,6,6,6,6,9,8,8,6,6,13,9,12,13,12,14,13,12,11,11,6,8,8,8,6,13,12,11,11,12,6,11,12,11,13,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,15,6,6,6,6,6,6,6,13,6,6,6,6,6,6,6,6,6,6,6,6,6,8,8,8,8,6,18,6,12,13,13,13,9,10,15,9,12,6,6,6,6,6,6,6,6,9,15,10,9,10,13,9,19,8,18,17,10,10,8,8,6,6,6,6,6,6,10,14,8,16,16,9,8,15,8,8,10,12,14,7,7,8,8,7,7,7,7,8,13,13,11,9,9,9,12,10,17,8,11,9,7,7,14,8,14,14,7,7,7,7,7,7,14,7,7,7,7,7,10,10,8,14,7,7,7,7,8,8,8,8,8,17,9,7,15,7,8,12,7,9,14,7,7,7,9,13,8,14,7,16,18,13,15,14,12,13,10,15,9,7,7,7,10,13,15,15,9,9,9,9,19,11,7,11,11,13,8,8,8,8,7,12,19,17,9,9,13,7,7,7,9,7,7,7,12,13,15,10,8,8,14,15,12,13,13,8,12,14,7,11,7,14,15,13,12,8,8,8,8,11,13,15,15,8,13,12,8,8,8,13,10,16,14,11,8,8,12,12,9,15,15,12,12,13,8,8,9,12,13,9,8,8,8,8,8,8,8,8,8,8,8,11,12,11,7,14,7,13,13,13,12,18,16,7,12,11,10,10,15,9,9,9,21,7,7,7,11,16,8,8,11,11,7,7,7,7,7,19,7,7,7,7,7,7,7,7,7,12,8,9,12,14,11,9,9,9,22,12,3,8,8,15,4,2,2,5,5,3,3,3,3,3,3,6,6,4,4,4,12,7,10,2,3,3,3,3,3,3,3,6,7,3,7,5,14,4,4,7,8,10,4,1,3,3,6,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,4,2,2,5,3,4,2,2,2,2,2,2,11,5,5,5,11,5,5,3,5,5,5,5,11,14,13,9,11,9,12,8,11,11,8,11,16,9,9,7,10,9,12,8,15,6,7,6,6,13,10,8,11,8,6,6,6,12,16,6,11,7,8,9,18,6,6,9,4,4,6,13,6,6,6,6,8,8,9,16,7,7,14,7,8,8,8,7,7,7,7,7,7,15,13,7,10,7,7,10,12,16,15,7,9,9,14,11,11,10,9,10,8,12,7,8,7,7,10,12,7,12,8,7,2,3,3,3,3,3,3,3,3,3,3,5,3,3,5,5,5,10,4,8,7,10,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,7,4,5,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,9,8,2,2,2,8,12,7,7,5,5,5,5,5,5,5,5,5,5,5,5,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,7,11,9,8,8,8,7,8,9,7,7,9,7,7,7,10,7,7,10,9,10,6,6,6,6,6,6,15,7,8,9,9,8,6,6,10,9,6,8,13,9,7,6,6,6,6,6,6,12,6,6,7,6,7,6,6,6,10,10,7,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,14,6,6,7,7,9,6,6,6,6,9,9,8,9,10,9,8,9,12,7,7,7,8,7,10,12,11,9,10,7,7,7,9,10,10,8,12,9,7,7,9,8,8,8,10,7,7,8,9,9,7,7,7,8,2,4,6,3,4,2,3,3,3,3,2,3,3,3,3,3,3,3,3,4,4,4,4,5,5,3,3,3,3,3,3,3,3,5,8,6,4,7,3,3,3,3,3,3,3,12,3,3,3,3,3,3,4,4,2,3,5,3,4,7,3,3,3,3,3,3,4,3,3,3,3,3,3,3,4,3,3,6,4,3,4,2,2,2,5,3,3,3,3,3,5,4,4,4,4,7,6,8,9,2,2,2,2,3,3,3,5,7,2,3,3,8,7,7,2,2,8,5,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,8,8,7,7,6,10,6,9,7,11,4,6,8,8,7,8,4,5,5,5,3,3,11,8,9,6,6,8,7,4,4,7,8,7,2,2,3,3,3,3,4,3,3,3,3,3,3,3,3,7,2,2,5,3,3,2,3,3,3,3,3,3,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,12,5,5,3,3,3,5,10,12,6,15,4,6,6,7,14,9,3,3,3,3,3,8,2,2,3,5,3,3,3,3,3,3,8,8,8,7,5,8,4,6,11,2,2,6,7,2,9,8,5,5,3,3,5,5,7,7,6,6,10,6,6,8,9,7,4,4,4,4,7,6,6,7,7,10,9,8,11,8,3,3,3,3,3,4,4,2,3,3,3,3,3,7,6,2,5,6,7,6,4,8,9,11,2,2,3,3,3,3,3,3,3,2,2,5,3,3,3,3,3,9,9,6,4,8,7,7,5,9,8,6,8,7,8,5,5,5,5,5,3,3,3,16,8,7,7,7,8,7,7,7,7,9,6,9,6,10,7,7,7,6,10,8,9,11,11,8,4,4,10,8,8,6,9,6,11,8,8,8,15,7,8,9,5,3,3,3,3,3,5,11,2,2,3,8,9,10,3,2,2,2,2,2,2,3,6,4,2,2,3,3,3,3,3,3,3,3,3,3,4,4,2,3,3,3,3,3,3,3,11,5,3,3,3,3,3,3,3,3,6,7,4,4,2,3,3,3,3,3,3,3,3,12,7,4,12,4,6,5,4,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,2,3,3,3,3,3,3,3,3,4,4,11,10,6,4,6,10,8,3,3,3,3,3,3,3,3,5,4,4,4,2,2,2,2,2,2,2,2,5,3,4,4,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,5,5,5,5,5,5,3,3,3,3,3,3,3,3,7,8,8,7,13,12,10,10,8,8,7,7,9,12,11,6,6,8,8,9,7,7,7,10,15,10,4,4,4,4,4,11,8,8,9,7,9,14,14,12,2,2,2,2,2,2,2,3,3,3,3,3,2,2,12,5,5,5,8,11,10,7,9,3,8,7,3,15,13,11,4,4,2,2,2,19,7,5,5,3,3,3,3,3,3,3,5,22,18,6,14,17,4,4,19,16,18,2,3,3,2,3,2,3,3,6,4,2,3,3,2,5,3,3,3,3,3,3,3,9,9,2,3,2,2,2,3,3,3,5,7,14,7,7,12,9,13,6,11,6,10,9,7,7,8,12,12,8,8,8,10,7,7,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,5,8,10,7,8,11,8,12,9,4,7,7,9,13,2,3,3,3,3,3,3,2,3,3,3,1,2,2,3,3,3,3,3,3,5,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,8,4,4,4,3,2,3,3,3,3,5,2,2,2,2,5,5,5,5,3,3,3,3,3,3,3,3,3,7,7,7,7,7,8,8,8,8,8,12,9,8,8,9,8,6,17,6,6,6,8,8,6,6,6,6,6,6,6,6,6,6,6,7,4,4,8,8,9,9,9,7,7,7,7,7,7,7,9,9,9,7,8,8,8,10,7,13,10,8,9,3,3,5,13,3,3,3,3,3,7,7,6,6,10,13,11,11,8,8,9,8,9,9,10,10,10,11,10,10,13,13,16,15,11,12,9,9,10,9,11,10,9,9,14,7,8,3,10,7,7,3,2,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,6,7,2,2,3,3,3,3,3,3,3,3,4,11,6,7,4,6,2,2,3,3,3,1,3,3,3,3,3,3,6,4,4,2,2,2,3,3,3,3,4,4,6,6,6,6,5,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,11,6,10,9,12,7,7,11,14,9,7,12,3,3,7,12,11,12,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,5,5,5,5,5,5,5,5,11,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,3,3,3,5,5,5,5,5,5,5,5,5,5,5,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,5,5,5,5,5,5,5,5,5,5,5,5,5,3,10,3,3,3,11,3,5,9,11,8,12,14,9,7,8,7,7,11,11,7,7,10,9,8,10,9,7,7,7,7,7,7,8,8,7,11,8,8,8,7,7,10,8,7,13,12,7,17,10,8,8,11,7,11,11,14,7,11,7,8,6,9,20,8,7,9,16,7,10,6,11,10,8,9,7,16,11,11,9,8,9,8,8,8,11,8,15,8,8,9,7,8,8,11,10,7,5,7,10,10,15,7,7,7,8,7,8,8,10,11,10,10,10,11,11,7,8,6,8,8,8,10,6,8,6,6,7,8,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,16,6,15,6,7,11,11,7,9,10,11,13,10,6,16,8,10,12,11,6,6,6,6,6,6,6,10,6,10,7,7,7,7,11,7,11,6,6,6,6,6,6,17,7,7,6,6,12,22,6,6,6,6,6,8,6,6,6,6,7,6,6,5,6,6,8,11,6,9,14,11,9,11,7,7,8,6,6,6,8,10,9,6,6,6,6,9,7,6,6,6,6,6,15,6,4,4,4,6,4,17,8,11,6,6,9,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,6,6,6,6,10,6,10,6,6,6,6,12,8,6,6,6,6,6,6,6,6,6,9,6,6,6,6,18,6,6,6,8,9,10,7,8,9,10,11,7,13,6,8,8,6,6,14,7,7,7,7,10,7,14,9,6,6,9,15,9,7,14,6,11,14,13,7,12,8,7,7,7,7,7,12,7,10,9,16,6,8,6,5,17,6,8,10,4,6,4,10,15,17,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,4,4,11,7,4,4,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,19,17,6,10,11,6,6,6,6,18,6,6,11,4,4,4,5,6,6,6,9,5,6,4,6,6,4,6,6,6,6,10,6,6,4,6,6,10,6,10,6,6,6,6,11,6,6,10,6,6,8,6,6,6,8,6,11,4,11,9,10,9,11,4,8,4,11,12,7,9,8,6,7,7,8,12,12,11,13,10,11,7,7,7,9,7,11,10,7,7,7,16,11,10,11,17,9,9,8,8,7,7,7,9,7,7,7,14,7,13,9,11,10,14,10,10,12,11,10,7,10,5,14,8,8,8,9,7,8,7,7,9,8,7,8,7,7,7,7,7,7,7,11,8,10,8,7,8,14,11,8,9,9,9,8,24,10,10,12,7,7,15,11,8,8,12,11,8,9,9,7,8,9,10,11,10,11,7,12,7,7,11,9,8,14,13,12,8,11,10,8,8,7,7,14,9,10,8,9,11,7,14,8,8,13,8,8,12,7,10,14,14,11,9,10,9,9,7,7,11,11,13,9,13,5,5,5,7,9,5,11,12,14,8,7,7,11,10,9,7,8,8,7,10,11,11,5,5,7,5,5,5,7,7,15,7,7,8,7,15,12,12,10,7,8,7,11,7,7,7,23,11,8,8,11,10,7,8,11,7,19,7,7,6,9,9,9,11,3,4,7,8,6,6,4,10,8,2,2]),rb=new Uint16Array([0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,1,1,1,1,1,17,1,1,1,12,1,12,1,12,13,1,1,1,1,12,1,12,1,1,1,1,1,14,21,1,1,1,1,1,1,1,19,12,1,1,1,1,1,1,1,20,1,1,1,16,1,18,1,1,15,1,1,1,1,12,1,1,1,1,1,1,22,1,1,1,12,1,1,1,1,1,1,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,1,24,25,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,12,12,12,12,1,32,0,0,0,1,1,1,1,35,34,1,1,1,1,1,33,1,1,1,1,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,38,0,0,0,0,39,40,0,0,0,41,0,12,1,1,12,1,1,1,1,44,45,45,45,44,45,44,44,46,45,44,45,44,44,44,44,44,44,46,44,44,44,44,44,44,45,47,47,45,44,44,44,44,44,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,50,52,50,50,50,52,50,51,50,53,50,51,51,50,50,50,51,53,51,53,50,51,51,12,55,55,54,56,51,53,50,50,48,49,57,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,60,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,67,1,12,1,1,66,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0,0,0,0,0,76,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,12,1,1,1,1,89,1,91,1,1,1,1,1,1,1,1,94,1,1,1,1,1,1,1,1,1,1,1,1,0,1,97,97,1,1,12,1,100,1,1,1,1,1,1,1,98,1,99,1,101,1,1,1,1,1,102,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,110,111,1,1,1,1,1,1,113,113,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,121,122,1,1,1,1,1,1,1,1,1,1,1,1,1,122,1,1,1,1,1,1,1,1,1,1,122,1,1,1,1,1,1,1,1,1,126,123,125,120,1,124,1,1,114,1,1,1,1,117,1,127,1,1,1,1,1,119,1,108,1,109,1,12,128,106,1,112,1,1,1,1,1,107,115,1,12,12,12,118,116,1,1,1,1,1,1,0,0,0,0,1,12,12,1,1,1,1,1,12,134,1,1,1,1,1,1,1,1,1,1,1,12,136,1,1,1,1,1,1,1,1,137,138,12,12,135,133,45,45,140,50,50,139,142,141,1,1,0,0,0,0,0,0,0,0,0,0,0,0,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,0,0,0,0,1,0,144,132,1,0,1,12,12,1,1,1,1,1,0,0,0,0,0,0,0,1,148,147,20,1,1,12,12,1,20,12,12,1,1,1,1,1,134,1,1,152,1,1,1,1,153,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,1,136,1,1,152,1,1,1,1,153,1,1,134,1,1,1,152,1,1,1,1,153,1,1,134,1,1,1,1,1,1,1,1,134,1,1,1,1,1,1,1,1,1,1,1,160,1,1,1,152,1,1,1,1,1,153,1,1,160,1,1,1,1,1,1,1,1,1,1,134,1,1,1,1,152,1,1,1,1,153,1,1,1,134,1,1,152,1,1,1,1,164,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,167,1,1,160,1,1,1,1,1,152,1,1,1,1,1,153,1,1,160,1,1,1,1,1,152,1,1,1,1,1,153,1,154,158,158,12,1,12,166,1,1,1,1,1,158,158,158,154,1,1,1,157,158,161,165,1,1,1,1,157,157,1,1,156,154,154,157,170,156,170,1,1,168,1,156,155,157,1,1,1,1,157,1,159,1,1,1,12,1,162,1,162,1,1,1,162,161,163,169,156,154,1,1,1,1,1,1,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,173,172,173,172,172,172,172,174,174,172,173,172,173,172,172,12,12,12,12,12,1,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,193,1,1,1,1,12,199,200,201,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,151,1,1,1,1,1,1,1,1,1,1,1,196,1,1,1,184,1,210,1,1,1,208,1,1,205,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,12,1,1,1,1,1,1,1,1,190,1,1,1,186,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,182,1,1,1,1,1,1,1,191,1,1,1,1,195,1,1,1,1,171,1,1,189,1,1,1,192,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,180,1,12,1,1,12,1,1,1,1,183,1,1,1,188,1,203,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,209,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,194,1,1,1,1,1,12,1,1,1,1,1,1,1,1,176,12,1,1,1,178,12,1,1,1,1,1,1,1,198,1,1,1,1,1,1,1,1,1,1,177,1,1,1,1,1,1,204,1,1,1,181,1,1,1,187,1,12,1,1,12,1,1,1,1,1,1,1,1,1,1,191,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,175,1,1,1,1,1,1,1,1,1,1,185,1,1,1,1,1,1,1,1,1,1,1,206,1,1,1,1,1,1,1,1,1,1,1,1,1,207,1,1,12,1,1,1,1,179,1,1,1,185,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,197,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,12,1,1,1,1,1,1,1,1,1,202,1,1,12,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,220,0,0,0,0,0,221,0,0,0,0,0,0,1,12,1,1,1,225,1,1,1,0,226,223,224,1,1,1,1,1,1,231,1,233,1,1,1,1,1,1,1,1,1,1,1,229,1,1,1,1,1,235,1,1,12,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,234,1,1,1,12,1,1,1,1,230,1,1,1,228,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,232,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,241,13,1,1,1,12,12,238,239,1,1,1,1,240,1,1,12,1,1,1,1,1,1,1,242,1,1,12,16,1,1,1,1,1,1,1,243,1,1,1,12,12,1,1,1,1,1,243,12,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,256,256,1,0,0,0,0,0,1,12,0,0,0,0,0,0,0,0,172,261,262,1,12,1,1,1,1,12,264,1,1,263,1,1,266,1,1,1,1,1,1,1,1,1,0,1,1,1,271,272,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,12,1,0,1,0,0,0,0,1,0,1,0,1,1,1,1,1,0,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,12,0,283,0,0,284,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,12,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,60,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,0,308,0,0,0,0,0,0,0,0,0,310,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,327,327,328,327,0,185,1,1,13,323,1,321,0,0,0,0,1,0,0,0,324,1,1,329,1,205,1,1,1,1,1,322,1,319,1,325,1,317,1,326,1,318,1,1,1,1,1,1,1,12,1,1,1,12,1,12,320,320,1,1,1,316,184,1,1,12,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,12,1,1,1,1,315,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,332,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,266,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,372,372,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,364,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,1,340,351,1,1,339,374,1,345,1,1,337,369,1,1,355,336,341,1,1,1,348,379,357,1,1,1,1,1,1,358,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,367,371,0,0,79,1,1,0,365,342,378,343,346,353,1,368,0,1,0,79,362,360,1,0,0,1,1,1,0,0,0,0,381,1,1,352,1,79,1,0,1,1,1,384,1,0,0,79,359,0,1,338,1,1,1,0,1,1,361,1,0,1,1,1,0,1,386,349,1,1,0,1,0,0,377,0,1,1,1,79,370,1,1,366,363,1,1,1,1,1,1,1,1,1,1,1,344,1,1,1,1,1,1,1,1,1,1,1,376,0,79,1,1,1,1,0,1,1,1,1,1,1,0,0,1,1,380,1,1,1,0,0,383,0,0,0,1,356,1,0,79,382,1,0,0,0,0,385,1,1,0,0,1,0,1,0,354,0,350,0,1,1,1,0,1,1,0,373,347,375,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,1,400,400,1,1,12,12,1,400,1,1,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,412,1,1,0,1,1,1,1,205,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,430,430,1,1,0,0,317,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,442,1,441,1,1,1,1,1,1,1,1,445,1,12,12,1,1,1,1,1,12,1,1,1,1,453,1,1,1,455,1,1,1,1,1,1,1,1,1,1,452,1,447,1,1,1,1,435,1,1,1,1,1,1,1,1,448,12,1,1,1,1,454,1,1,1,449,444,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,317,1,433,1,1,12,451,1,1,317,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,437,1,1,1,1,1,1,1,1,1,1,1,454,1,1,1,1,317,1,450,1,1,1,439,1,1,1,1,1,440,1,456,443,1,1,1,1,1,438,1,1,1,1,1,1,1,1,1,434,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,446,1,1,1,1,1,1,1,12,1,1,1,1,1,436,1,1,1,1,1,1,1,220,457,1,1,1,1,1,12,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,0,1,0,1,0,1,1,0,0,0,462,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,12,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,466,466,466,466,466,466,466,0,466,466,466,466,466,1,466,466,466,0,466,466,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,471,470,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,475,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,469,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,477,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,474,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,467,0,0,478,473,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,472,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,467,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,476,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,12,1,1,1,1,1,1,1,1,1,1,1,1,488,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,198,198,1,492,1,1,1,491,1,1,1,1,487,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,489,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,493,1,1,490,1,1,1,1,1,1,1,1,372,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,494,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,505,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,1,0,1,0,0,12,1,507,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,12,12,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,1,0,0,0,1,60,1,1,12,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,526,1,1,1,1,1,1,1,527,1,1,1,1,1,1,1,525,1,1,12,1,529,239,1,1,12,12,1,1,12,1,12,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,533,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,539,1,1,1,1,1,1,1,1,1,1,1,1,1,1,132,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,107,1,1,12,1,1,1,12,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,548,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,144,1,1,1,228,1,1,12,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,572,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,577,1,220,1,328,1,1,1,1,1,1,1,1,1,0,0,578,1,1,1,1,0,580,0,79,0,579,0,1,1,1,0,1,1,1,1,1,1,12,0,0,0,0,1,0,0,0,0,0,0,586,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,582,582,0,585,583,582,582,582,582,582,587,582,582,591,582,582,582,582,582,582,582,582,582,582,588,585,582,582,585,582,582,582,582,582,582,582,582,582,582,582,582,582,583,582,582,582,582,582,589,582,582,582,582,582,582,0,0,0,1,590,1,1,1,1,584,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,12,595,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,12,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,1,1,12,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,65,280,306,411,535,0,4,68,236,254,282,307,334,388,413,0,499,519,536,597,9,0,61,88,398,409,429,575,0,497,518,532,612,0,30,6,0,461,500,602,560,70,0,7,285,255,389,463,416,538,79,598,0,576,309,418,465,9,105,288,506,6,30,0,311,79,391,79,483,10,6,131,248,275,0,613,509,0,563,0,64,6,6,251,95,2,432,399,410,596,0,6,0,6,286,103,6,561,501,540,0,464,390,273,287,8,71,104,599,543,392,312,300,419,146,74,290,546,510,601,564,335,330,479,6,75,149,11,0,249,522,547,565,514,551,570,611,36,6,260,295,333,304,218,30,528,553,218,42,216,265,296,305,406,423,481,274,0,73,562,0,403,417,299,79,247,79,0,581,545,504,292,421,79,393,387,0,0,0,9,555,571,217,0,424,407,531,516,573,615,85,218,43,297,396,425,569,0,511,293,276,79,215,80,28,390,30,6,394,331,303,604,592,524,550,513,0,258,81,30,405,422,0,30,426,0,219,593,517,9,408,427,218,248,86,222,594,574,557,482,428,397,250,227,87,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,620,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,0,0,0,0,82,0,129,0,0,84,549,0,0,0,0,0,0,0,27,0,552,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,503,0,257,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,294,0,0,0,0,0,0,0,617,0,0,0,0,0,616,0,0,0,0,0,0,0,0,0,0,0,0,0,0,395,0,0,0,484,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,0,0,0,0,0,0,495,0,0,0,0,0,0,404,0,0,0,0,0,0,0,0,0,0,0,0,0,211,0,0,0,0,0,0,0,0,0,0,515,0,0,0,0,0,0,0,0,0,0,0,0,496,0,0,0,0,0,0,0,0,0,0,0,0,0,0,269,281,0,0,0,0,0,530,277,0,0,0,0,0,0,0,0,0,0,0,0,0,512,0,0,0,0,0,0,0,0,0,0,0,458,0,0,0,314,0,0,0,0,0,0,253,0,0,0,0,0,0,23,0,0,0,0,568,0,0,0,0,600,521,0,0,0,0,244,0,0,0,0,0,0,0,0,0,480,0,0,0,0,0,62,0,0,0,267,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,0,0,0,0,0,279,610,0,72,0,0,0,0,0,0,0,0,0,619,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,0,278,0,0,0,0,0,0,567,0,0,0,0,0,0,523,0,0,0,0,0,0,0,0,0,566,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,502,0,0,0,0,0,554,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,83,0,0,0,0,0,0,0,0,0,0,0,0,486,0,485,0,0,0,0,0,0,0,0,0,0,259,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,459,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,537,0,0,0,0,0,0,0,0,298,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,237,0,0,0,0,0,0,0,0,0,0,84,0,606,0,0,0,0,0,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,609,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,520,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,498,0,614,0,0,431,0,0,0,0,0,0,0,0,0,0,0,0,402,0,0,0,544,0,93,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,29,92,0,0,0,0,0,0,0,0,0,0,0,0,291,0,0,0,214,0,0,0,0,0,0,558,0,270,0,0,130,0,0,0,0,0,559,0,0,0,0,0,0,0,414,420,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,313,0,0,0,0,0,5,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,534,0,0,0,415,0,0,401,0,0,0,0,0,0,603,0,0,0,541,0,0,90,0,542,0,0,0,0,0,0,0,0,0,0,508,460,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,608,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,607,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,618,0,0,0,0,0,556,0,0,0,0,0,0,0,0,0,0,302,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,605,0,0,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,623,623,623,623,623,623,623,622,624]),Vp="orgmilcomschnetedugovdrrformsfeedbackofficialaccoorgmilschnetgovmagazinemediaunioncargopilotgroupcaarespressworksaerodromeworkinggroupair-traffic-controlaircraftaccident-preventioneducatormarketplaceambulanceinsurancecateringairportrepbodyenginesoftwaremodellingair-surveillanceconsultingchartertrainermaintenanceservicesdesignflightskydivingfreightassociationstudentgroundhandlingdgcafuelclubtaxicrewshowballooningexpresstraderbrokerauthoragentsairtrafficjournalistsafetyconsultantmicrolightaccident-investigationparachutingequipmentproductionfederationrecreationscientistnavigationengineertradingglidingleasingresearchpassenger-associationentertainmentparaglidinghangglidingaerobaticrotorcraftemergencycertificationgovernmentaeroclubexchangelogisticschampionshiphomebuiltcouncilconferencecontrolairlinecivilaviationjournalorgcomnetedugovcoorgcomnomnetobjofforgcomnetuwukiloappsframerorgmilcomnetedugovcoradioorgcomnetcommuneedogpbcoitgvorgedugov*spreviewfrontendrelayononstagingupid*mtls*privatelinktypedreamdeveloperbravemochawindsurfaivenmirenupsunwnextbegetngrokclerkwale2bwebcsbrunputerflutterflowspawnbaseshiptodaymagicpatternsnetlifyondigitaloceanrailwayhostedclaudehasurabotdashvercelgithubluyanigadgetreplitcloudflaretelebitedgecomputeevervaultdetaexponyatnoopencrpplxzeaburwasmerframerzeropsconvexmedusajsspritesonherculeseasypanelstreamlitsnowflakemesserliloginlinehackclubnorthflankbase44corespeedadaptableleapcellngrok-freeclerkstagelovableon-fleek*us-west-3ap-south-2us-central-2us-central-1eu-central-1ap-south-1us-west-2us-east-2eu-north-1ap-north-1us-west-1us-east-1*rcloudintsegorgmilcomgobbetnetintedugovturmusicasenasamutualcoopip6uriurnin-addre164homeirisgovdixdaemoncloudnssthwien*inexexkunden4accogvormymyspreadshop4lima2ixortsinfofuturecmsfuturehosting12hpprivfuturemailinglima-cityfunkfeuer123webseitednshomemelmyspreadshopcloudletswasantqldvicactnswtascatholicwasaqldvictasvpsidwasantozqldorgcomvicasnactnetedugovnswtasconfhrsncomairflowlambda-urltransfer-webappairflowtransfer-webapptransfer-webapptransfer-webapp-fipstransfer-webappeu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1privatenotebookstudiolabelingnotebookstudionotebooknotebook-fipslabelingnotebookstudionotebook-fipsnotebookstudio-fipsnotebook-fipsnotebookstudionotebook-fipsnotebookstudioeu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2experimentsus-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1onrepostsagemakercopporgmilcompronetintedugovbiznameinfoshoprsorgmilcomnetedugovbrendlyresolvenzauscotvstoreorgcomnetedugovbizinfoidacaicoittvorgmilcomschnetedugovinfocloudezproxyacmymyspreadshopkuleuvenwebhostingtransurl123websitecloudnsinterhostsolutionsddns5476103298edgfacbmlonihkjutwvqpsryxzbarsycoororgcomedumyftpno-iporxcloud-ipfor-somemmafanfor-morewebhopselfipjozidyndnscloudnsdscloudfor-thefor-betteractivetrailcoeconorestooteorgcomeconeteduassurmoneyafricaarchitectesrestaurantloisirstourismavocatsinfoagrounivcoorgcomnetedugovtvdeportesaludtksatorgmilcomwebgobnetinteducienciaboliviarevistacooperativaempresanombreindustriamusicapatriamedicinademocraciapoliticapuebloindigenaplurinacionalarteblogwikiinfoagrotransportenoticiasprofesionalacademiaeconomiaecologiamovimientotecnologianaturalsimplesitecepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesmscepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesms*biaamfmtcmptvfeirasampajampanatalbelemananiradiog12medindfndbmdtrdthepoaggfjdfdefinfenflegsegongengcngorgzlgslglogppgmillelqslcimcomnomadmjabimbbibbsbabcrectecsjcetcpscpvhudieticriapipsiecnbiorioecogeoteoodoproatoartfstmatvetdetbetnetcntnotfotgrueduajuespappreptmpemparqsrvadvdevgovntrturagrjorfarjusmusdesvixxyzcozfozslzbhzmaringasantamariacampinagrandegoianiasorocabafloripasaobernardocuritibaboavistarecifeaparecidasaogoncasalvadorcuiabamorenamacapalondrinacontagemsocialfortalmaceioleilaoosascoriobranconiteroi9guacutcheblogflogvlogwikitaxicoopmanauspalmascaxiasjoinvillebaruericampinassantoandreribeiraoriopretoweorgcomnetedugovv0windsurfshiptodaycloudsitecoaccoorgnetgovofmilcomgovmediatechzacoorgcomnetedugsjgovmydnspenfnlabnbmbgcbcqconcontnuyksknsmyspreadshopno-ipawdevboxbarsyonidatemfuinabusavinstanceseceuguukussryzespawncsxcloud-ipmyphotosfantasyleaguetwmailcleverappsscrappingccwucloudnsftpaccessgame-serverccgovobjectsrmalpgcust*svcalp1aeappenginermalpgmyspreadshop4lima2ixsquare7cloudscale123websitefirenet12hpflowgotdnslinkyard-cloudcloudnslima-citydnskingobjectstorageedaccogoorusorgcomnetinteduaéroportxn--aroport-byaassogouvcomilgobgovcloudnses-1eu-west-1us-east-1euvipit1eurarubait1s3lbwebsites3websiteru-spbru-mskelasticcsrunstnukukcaukusnl-ams-1fr-par-1fr-par-2functionsnodess3ddlwhmrdbfnck8sifrs3-websitecockpitscblmgdbdtwhkafkpubprivs3ddlwhmrdbk8sifrs3-websitecockpitscblmgdbdtwhkafks3ddlrdbk8sifrs3-websitecockpitscblmgdbdtwhkafkk8sscalebookpl-wawfr-parnl-amsbaremetalsmartlabelinginstancesdechk2kuleuvenlaravelvoorloperurownoxazapscwhstgrvaporobservablehqelementorantagonistreclaimjoteluluencowaydiademjelasticmatlabmagentositetrendhostingaxarnetperspectajenv-arubajelejoteravendbemergenttrafficplexconvexkeliwebserveboltbegetcdnstaticson-rancherprimetelonstackitunison-servicesdnshomelinkyardbarsyjelecloudnscocomnetgovmycn-northwest-1cn-north-1s3s3-accesspoints3-websites3s3-accesspointrdsdualstacks3-deprecatedemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspoints3s3-accesspointrdsdualstackemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicn-northwest-1cn-north-1cn-northwest-1ebcomputeelbcn-north-1airflowcn-northwest-1cn-north-1oncn-northwest-1cn-north-1amazonawssagemakeramazonwebservicesdirectasgdsdhehahljlnmhbacscahqhshhihnlnynsnmofjbjzjxjtjhkcqtwgsjssxnxjxgxxzgz網絡网络公司orgmilcomnetedugovxn--55qx5dcanva-appsxn--io0a7iquickconnectcanvasitekhsjxn--od0algmyqnapcloudsrvrlessclustersrealtimestorageleadpagescarrdcrdorgmilcomnomnetedugovhidnssupabaserdpareplmypiumsoxmitotaplpagesfirewalledreplitowodevwebview-assetsvfswebview-assetss3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9eu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1s3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecateds3-websites3-object-lambdaexecute-apis3s3-accesspoints3-websites3-accesspoint-fipss3-fipss3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipss3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9vfss3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9eu-west-3ap-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1us-northeast-1ap-southeast-1me-south-1af-south-1ap-south-1ap-southeast-7us-west-2eu-west-2ap-east-2us-east-2ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ap-southeast-6ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1mrapaccesspoints3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3eu-west-3ap-south-2eu-south-2computes3-ap-northeast-2elbrdss3-ap-east-1s3-sa-east-1s3-us-gov-west-1s3-eu-central-1s3-ca-central-1eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3s3-website-us-west-2s3-website-eu-west-1s3-external-1eu-central-1me-central-1ca-central-1il-central-1s3-us-west-1s3-eu-west-1s3-website-sa-east-1s3-website-ap-southeast-2ap-northeast-1ap-southeast-1s3-us-west-2s3-eu-west-2me-south-1af-south-1eu-south-1ap-south-1us-west-2eu-west-2us-east-2s3-website-ap-southeast-1s3-1s3-globals3-ap-northeast-3eu-north-1airflowap-southeast-2s3-us-gov-east-1s3-fips-us-gov-east-1s3-me-south-1s3-ap-south-1ap-northeast-2s3-website-us-west-1ap-southeast-5s3-eu-north-1s3-ap-southeast-1s3-website-us-gov-west-1compute-1s3-eu-west-3us-gov-west-1s3-website-ap-northeast-1us-gov-east-1s3-fips-us-gov-west-1s3-website-us-east-1s3-ap-southeast-2ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1s3-us-east-2s3-ap-northeast-1authauthauth-fipsauth-fipseu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1rservicesbuilderstg-builderdev-builder*ociocpocsdemoinstanceeu-west-3eu-south-2ap-southeast-3ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1previeweu-4us-4us-1eu-1us-2eu-2us-3eu-3appspaasrag-cloudrag-cloud-chjcloudjcloud-ver-jpcdemonodebalancermembersipeuxvsoncillaocelotonzayalilynxsphinxfentigercustomercaracalo365cloudstaticxendevapp001testcode-builder-stgplatformapimediasiteprojedrydpagesjsu2u2-localx0desazacncoitrueu4uhkukgrbrushatenadiarymyspreadshopfrom-flfrom-wvwebspace-hosttheworkpchatenablogservesarcasmapplinzisakuratanwixsiteappchizigiizeis-into-carsdnsiskinkyadobeaemcloudis-a-therapistpgfogmyvncdojinis-an-actress1kappfldrvkozowqa2jpnmexprgmrfirewall-gatewaydynnscafjsfbsbxooguyxnbayfrom-gawoltlab-demois-a-anarchistwiardwebteaches-yogadattowebtb-hostinglive-websiteservegamegotpantheonfrom-nhsubsc-payfrom-ohvipsinaappfrom-cadyndns-officehomelinuxfrom-mahercules-appservebbsstreakusercontentfrom-okfrom-wyfastly-terrariumis-a-llamaqualyhqportalserveexchangeon-vaporvivenushopciscofreakgrayjayleaguesmetaaiusercontentfrom-iais-a-libertariansaves-the-whalestaveusercontentyolasiteoperaunitepoint2thisis-a-catererlinodeusercontentfrom-vagithubusercontentsells-for-lesshosteurcanva-appsplaystation-cloudddnsfreefrom-pafrom-prfrom-waddnskingoutsystemscloudhotelwithflightmydattois-a-nascarfanmydbserverminiserverdamnserverservehumouris-a-playerfrom-nvfrom-nmemergentagentgentappsamplifyappfrom-kyis-an-accountantnfshostserveircfrom-akpythonanywherestackhero-networkpostman-echolikescandydyndns-mailobservableusercontentserveftpfreeboxosfrom-utcdn77-storageamazonawsneat-urldyndns-serverlinodeis-a-teacherfrom-vtgleezemythic-beastsus1-pleniteu1-plenitla1-plenitpaywhirlservecounterstrikejdevcloudhealth-carereformis-into-animegoogleapisis-a-painterafricaisa-hockeynutatmetais-an-actora2hostedis-a-democratdatadetectest-le-patrondigitaloceanspacesis-a-designeris-a-hunterlinodeobjectstemp-dnsissmarterthanyoufrom-arsimplesiteevennodetownnews-stagingis-a-liberalgooglecodejelasticservemp3stdlibqualyhqpartnerdyndns-free1cooldnsest-a-la-masiondrayddnsdynuddnsfrom-orfrom-miis-a-bloggerfrom-himydobisscanvacodeis-an-engineerest-a-la-maisonupsunappdevinappswafflecellmyasustorwpenginepoweredfrom-ctservep2psame-appmyshopblocksthingdustdatalikes-piediscordsezis-with-thebanddev-myqnapcloudlpusercontentis-leetshopitsite3utilitiesis-a-personaltrainersinaappladeskis-a-cheflogoipselfipbase44-sandboxnospamproxyalibabacloudcsmesswithdnsauthgearappsiamallamawithgooglelutrausercontentmochausercontentframercanvasmytabitdyndns-homew-credentialless-staticblitzcpserverdiscordsaysis-a-nurseappspotatlassian-isolated-3premotewdfrom-mtwixstudiocode0emm180rmyactivedirectoryawsappsmytuleapdnsabrpolyspaceqbuserrenderbuiltwithdarkboutirgotdnsabrdnsdopaascanva-hosted-embedawsglobalacceleratorhomesecuritypcmyiphostditchyouripclever-clouddyndns-ipon-aptibleis-a-musiciansecuritytacticsappspaceusercontenthomeunixstrapiappsame-previewcf-ipfsmycloudnaselasticbeanstalkis-certifieddontexistkasserverik-serverdrive-platformatlassian-3pfirebaseappherokuappawsapprunnerbarsycenteris-a-cubicle-slaveservehttpmyshopifyis-a-guruquicksytessiiitesorsitesmagicpatternsappis-a-cpameteorappfrom-wiis-a-rockstarbumbleshrimpdattolocalreadthedocs-hostedfrom-rifamilydsdyndns-picsplesknsbplaceddnsaliasdynaliasdyndns-remotedoomdnsip-ddnsblogdnsis-a-doctorroutingthecloudamazoncognitobarsyonlinedsmynasddnsgurucloudflare-ipfsdeus-canvasfrom-idsmushcdnpagespeedmobilizerdyndns-at-homeunusualpersonhosted-by-previderis-a-republicandyn-o-saurstreamlitappworkisboringonthewificprapidqualifioappis-uberleetis-slickgetmyipwpdevcloudtypeformdyndns-at-workgentlentapismynascloudw-corp-staticblitzfrom-ingeekgalaxyservebeerfrom-mdonrenderspace-to-rentaivencloudappspacehostedonfabricawafaicloudcodespotblogspotatlassian-3p-us-gov-modfrom-ndfrom-msis-a-techieis-a-studentcustomer-ociis-a-photographerdurumisfrom-ksmassivegriddyndns-wikiis-an-entertaineris-a-hard-workermysecuritycamerafrom-mnrackmazedyndns-blogis-a-bulls-fanwritesthisblogfreemyipsimple-urlfrom-sdreservdauthgear-stagingest-mon-blogueuris-into-gamesrice-labsxtooldevicesakurawebis-an-anarchistoraclecloudappsdyndns-worksells-for-urhcloudfrom-dcfastvps-serverwpmucdnis-a-geekscrysecfrom-txis-into-cartoonsmodelscapetrycloudflarelocaltonetstreak-linkbalena-devicesfrom-njforgeblocksfreebox-oswebadorsitefrom-ncdoesntexisthobby-sitestreaklinkshomesecuritymacownprovidertuleap-partnersdattorelaywphostedmailalpha-myqnapcloudservequakeis-a-socialistservehalflifepivohostingdynuhostingquipelementsw-staticblitzdyndns-webfrom-deproject-studyaliases121is-not-certifiedhercules-devis-a-financialadvisorservepicsis-a-greenloseyouripfrom-ilwithyoutubemwcloudnonprodwiredbladehostingdnsdojofrom-tnpixolinomyqnapcloudis-an-artisthostedpiis-a-landscaperauiusercontentoaiusercontenton-forgeis-a-conservativedreamhostersnet-freaksapps-1and1is-goneencoreapifastly-edgefrom-nesalesforcefrom-scdeployagentoraclegovcloudappsfrom-alis-a-lawyercechirevultrobjectsstufftoreadisa-geekddnsgeeklovableprojecttry-snowplowfrom-moblogsyteis-a-bookkeepernogmyforumravendbmyboxdeelementoredsaacficogoorinforgcomgobnatneteduidstoreorgcomnetintedudevnomepublorgcomneteduathgovtestscalculatorspaynowinfoquizzesresearchedcloudnsfunnelsassessmentsjscaleforcetmacltdorgmilcompronetgovbizpresseklogesrsccloudcustomfltusrcloude4corealmgovmunicontentproxy9metacentrumdyndyndyndnsdynpagespages-researchitionoccustomercomymyspreadshopipv64diskussionsbereich4limacomrub2ixfirewall-gatewayddnssspdnsbarsykeymachinesquare7myhome-serverspeedpartnercommunity-proschuldockxenonconnectgünstigliefernbwcloud-os-instancedyndnssecmy-routerxn--gnstigliefern-wobin-butterl-o-g-i-nisteingeekin-dslin-berlinin-brbfuettertdasnetzleitungsenin-vpnlcube-serverdyn-ip24logoipdyn-berlinruhr-uni-bochum12hpgoipsrvdnsfruskygit-repossvn-reposinternet-dnsgünstigbestellenhome-webserverxn--gnstigbestellen-zvbbplacedheimdnscosidnswebspaceconfiglima-citydyndns1istmeinvirtualuserschulplattformmy-gatewayddnsseclebtimnetztest-iservmein-iservvirtual-userhome64iservschuletaifun-dnstraeumtgeradeschulserverdynamisches-dns123webseitednshomehs-heilbronndnsupdaterbssgraphicdwadpdwdaepeweaawapaafpfwfabwbpbacwcpcciwebuserapiobjectsidsiskospockkimodorikerbonesteamsparisjanewaypicardglobaltarpitreedpikekiraworfsulukirkarchertuckerhackercanarywesleystagingprereleaset3r2lpbravepanelngrokiservstglclcrmerpflypagesbarsyvivenushoplocalcertlocalplayerbearbloggatewaydeno-stagingis-not-ais-a-goodbotdashvercelmocha-sandboxplatter-appreplitgithubpreviewworkersinbrowserevervaultdetais-ahrsndenoxmitmodxmyaddrstorageapipayloadgrebedocruncontainersstgstagelclstageloginlineis-a-fullstackleapcellngrok-freeis-coolstoragewebharemediatechlibp2pdiscourseimaginecomyspreadshopstoreregbiz123hjemmesidefirmcoorgcomnetedugovsldorgmilcomwebgobartnetedugovtmorgpolcomsocartnetedugovassoagrondiscoodontk12medcuegyecpaabgengorgmilgalsaltulcomadmesmgobpubdocmonfindgnriouioproartlatvetnetfotedulojgovntrturibrbarxxxofficialbasechefprofmktgpsictechinfoarqtcontdentrrpppsiqgit-pagesritmedfieorgcomlibprieduaipgovriikmeactvsportorgmilcomscieunnetedugovnameinfopintouchtawktotawkmyspreadshoporgcomnomgobedu123miwebcomputeorgcomnetedugovbiznameinfocognito-idpeusc-de-east-1onjelasticnxaspdnsbarsydirectwpdeuxfleurstransurldogadoprvwcloudnsamazonwebservicesdnshomeuserpartycokoobinmkmstorjfidemopaasdymyspreadshopalandkapsiikixn--hkkinen-5wacloudplatformdatacenterhäkkinen123kotisivuidacorgmilcompronetedugovbiznameinforadioorgcomneteduuserexperts-comptablestmmyspreadshopgretaprdcomnomynhccifbxoshuissier-justicenotairesaeroportfreeboxoson-webavocatassoportgouvkdnschirurgiens-dentistes-en-franceavouesfbx-os123sitewebveterinairechirurgiens-dentistespharmacienchambagrimedecinfreebox-osdediboxgoupilemszicpyicpvicppleysheezypagesedugovcnpyorgcomcybllcpvtnetedugovtnxonlineschooldaemond6atcopanelorgnetplybotdashstackitkaasorgmilcomnetedugovbizmodltdorgcomedugovcoorgcomneteduappwriteacorgcomnetedugovcloudtranslateusercontentorgcomnetedumobiassoorgcomnetedugovbarsysimplesitediscourseindorgmilcomgobneteduorgcomwebnetedugovguaminfonxhra教育敎育網絡网絡组織組織网络網络组织組织公司政府個人个人箇人ltdorgcomincneteduidvgovxn--uc0ay4axn--55qx5dxn--mk0axixn--io0a7ixn--uc0atvxn--zf0avxxn--lcvr32dxn--od0algxn--wcvs22dxn--gmqw5axn--od0aq3bxn--mxtq1mxn--ciqpnxn--tn0agxn--gmq050iorgmilcomgobneteduiservwp2tempurlmircloudfreesitewpmudevmyfastgadgetcloudaccessjelehalfboltfastvpsemergenteasypanelopencraftizcombrendlynamefromrtpersoadultmedorgpolrelcomproartnetedufirminfoassoshopcoopgouvtmcomediahotelforumvideosportorgsexagrargameslakaseroticaerotikatozsdereklamcasino2000filmsuliinfoboltshopprivnewsszexcityutazasjogaszkonyveloingatlaneacaicogoormyᬩᬮᬶmilwebschnetkopbizzonedesaponpesxn--9tfkymyspreadshopgovmytabittabitorderravpageaccok12idforgnetgovmuniltdplcaccotttvorgcomnetmeca6g5gpgamubacaicniocoukuptverdruscsdelhiindorgmilcomwebnicfingenpronetintedugovresbizbiharbarsyinternetbusinessschooltravelsupabasealumnigujaratfirminfoaeropostbankcoopindevscloudnsno-ipbarsybarrell-of-knowledgebarrel-of-knowledgensupdategroks-thisdnsupdatefor-ourknowsitalldvrcammittwalddynamic-dnsv-infowebhopselfipdyndnshere-for-moreilovecollegemayfirstforumzcloudnsmittwaldservertypo3servergroks-theeusekd1uk0cdndyndnsidrawsainaueuapjpusstagemocksysdevicesclientcustreservdcustdevdisrecprodtestingcobeebyteutwenteboxfusebravepstmndedynngrokorgmilcomnomhzcnetedugovqcxqzzbarsythingdustmo-siemensrb-hostingprotonetfh-muenstergitbookbluebitecloudbeesusercontentnodeartkiloappsforgerockdarklangresinstagingapigeebubbleb-datascryptedhypernodedappnodepantheonsitegitlabgithubkeeneticvirtualservercleverappshostyhostingon-rioedugitticketstelebiton-acornwixstudioon-k3sicp0icp12038jeleqotobigvlairbubbleappsmyaddrstolosmyrdbxwebflowdrive-platformbeagleboardhasura-applolipopdefinimavaporcloudmusicianwebflowtestazurecontainerresindevicereadthedocsloginlineeditorxmoonscalesandcatsbasicserverwebthingsbrowsersafetymarkbeebyteappbitbucketidaccovistablogorgschnetgovxn--mgba3a4f16axn--mgba3a4fraarvanedgeايرانایرانjclaspeziapdudcefegelemeperetevebacanatavaparasabgagfgogrgpgalclblimfmrmcbmbvbfclcmcvcrcpcchlimifibicivipirisimncnbnanenrnpntnnolomobocoaogorosopotoptvtatctbtmtltotpulunutpspapaqsvpvvvtvavvrtrsrprgrfrcrbrarorkrvstsssbscsmsispzczbzbozen-suedtirolmyspreadshopxn--bulsan-sdtirol-nsbxn--valledaoste-ebbtrentinoaltoadigetrentin-sued-tirolxn--forlcesena-c8axn--forl-cesena-fcbxn--bozen-sdtirol-2obtriestetrentinsuedtiroltrentino-s-tirollecceudineaostesienaparmaluccapaviagenoapaduaaostamonzaabruzzoternirietiturinmilanbozenlaziofermoleccocuneonuoropratola-speziavdataaligfvgpugmolcalcamlomumbsicpmnvenvaoedugovabrsarmaremrbastoslazibxosfirenzetrentinosüdtirolval-d-aostavalle-aostamessinacremonaravennatoscanatrentin-suedtirolbolognacalabriaurbinopesarofriuli-v-giuliaogliastraxn--valle-aoste-ebblaquilaandriatranibarlettasyncloudtrentinosudtirolxn--valle-d-aoste-ehbaostavalleyvalled-aostatrentino-alto-adigevallee-d-aostexn--balsan-sdtirol-nsbpistoiasicilialucaniacataniaiserniaperugiabresciaveneziagorizialiguriaimperiabulsan-suedtirolbalsan-suedtirolbarlettatraniandriaxn--trentino-sdtirol-szbforlì-cesenatuscanyvallée-d-aostemantovavallée-aostecasertapiemontevalleaostaval-daostafriulivgiuliatrevisoforli-cesenavalléedaosteferrarapescaravald-aostatrentino-altoadigefriuli-vegiuliavallee-aostecarboniaiglesiastarantomediocampidanovalleedaostetrentinosud-tirolcampobassotrentinsüd-tiroltrentinosüd-tirolmonzabrianzatrentino-südtirolxn--trentino-sd-tirol-c3bpotenzacosenzavicenzaemiliaromagnavenicefrosinonemarchepordenonetrentinosued-tirolvaresemolisevalléeaostefriuli-veneziagiuliabasilicatalatinaanconasavonaveronamodenaaquilabiellabolzano-altoadigepugliafoggiaumbriatrentino-stirolgenovapadovamateranovararagusapiacenzatrentinostirolvalleeaostetempio-olbiatrentinsudtirolmassa-carrarafriuliveneziagiuliatrentinosuedtirolandria-barletta-tranitrapanixn--cesenaforl-i8amaceratacaltanissettaascoli-picenobrindisicarraramassacagliaririmininapolivibo-valentiachietibulsan-sudtirolbalsan-sudtiroltrentino-a-adigebulsanbalsaniglesiascarboniamilanotorinoteramodell-ogliastraarezzotrentinoalto-adigerovigotrentovenetoiglesias-carboniatrentino-sud-tirolaltoadigereggio-emiliareggio-calabriasardegnatranibarlettaandriapiedmontxn--sdtirol-n2amedio-campidanotrentino-süd-tirolfriuli-vgiuliafriuli-ve-giuliaromeennaromapisa32-b16-b64-blodiastibarineencomonaplesforlicesenailiadboxosalessandriasicilytrani-barletta-andriaxn--trentin-sdtirol-7vbpesarourbinotrentinsued-tirolcesena-forliforlìcesenaemilia-romagnamonzaebrianzaxn--trentinsdtirol-nsbtrentinos-tiroltrentinsüdtirolvalledaostaolbia-tempiocampidanomediovibovalentiasassarivalle-daostalombardyfriulivegiuliareggioemiliamonzaedellabrianzaalto-adigevercellitrentin-sudtiroltraniandriabarlettatrentino-sudtirolascolipicenobozen-südtirolfriulive-giuliaflorencevaldaostaxn--cesena-forl-mcbcarbonia-iglesiasaosta-valleycarrara-massadellogliastratrentinoa-adigexn--valleaoste-e7apesaro-urbinoxn--trentinosdtirol-7vbxn--trentin-sd-tirol-rzbxn--trentinsd-tirol-6vbtrani-andria-barlettatrentin-süd-tirolxn--trentinosd-tirol-rzbgrossetomonza-e-della-brianzasüdtirolreggiocalabriatrentinoaadigetrentin-südtirolfriuliv-giuliaverbaniacampaniatrentino-aadigefriulivenezia-giuliasardiniaandriabarlettatranibarletta-trani-andriacatanzarooristanourbino-pesarocesena-forlìvalle-d-aostacampidano-medio123homepagesiracusatempioolbiasuedtirollombardiaavellinocesenaforlìtrentinofriuli-venezia-giuliabozen-sudtirolandria-trani-barlettabulsan-südtirolbalsan-südtirolmonza-brianzabolzanotrentino-sued-tirolbellunosalernolivornocrotonesondriodnshometrentinsud-tirolmassacarraratrentin-sud-tiroltrentino-suedtirolviterbobergamocesenaforliolbiatempiopalermobeneventoagrigentoofcoorgnetfmaitvphdengorgmilcomschnetedugovperagrikanieasukehandachitatokaiaisaikonanoharuamaobuhigashiuraowariasahiinuyamatobishimaiwakurashitarainazawatoyonegamagorimihamatoyotataharakariyayatomioguchikomakimiyoshinishiotokonamekiyosuchiryutoyohashiokazakiisshikikasugaikotakiratoeianjotogofusosetohazutsushimashinshirotakahamanisshinshikatsuhekinantoyokawaichinomiyatoyoakeodateogataakitaikawakyowahonjoogayurihonjonoshirokamiokakatagamimitanegojomeyokotekosakadaisenkazunonikahohonjyomoriyoshimisatohappoukamikoanihachirogatahigashinarusesembokufujisatokitaakitaitayanagiowanitakkomutsutsurutahirosakigonoheoirasetowadamisawanohejiaomorishingohiranairokunohehashikamitsugarushichinohehachinohenakadomarisannohekuroishisakaeisumiasahiotakiinzaiabikomatsudoyachiyomutsuzawakujukuriomigawakashiwatoganemihamanaritasakuranagaramobarahanamigawachoshishiroichoseikozakishisuikatorimidorichonankyonanfuttsuonjukufunabashinagareyamanodasosatakochuotohnoshourayasukimitsuyokaichibayotsukaidosodegauratateyamakamagayayokoshibahikariyachimatakatsuuratomisatokisarazukamogawaichikawanarashinoichinomiyashimofusaminamibososhirakoichiharaoamishirasatoikatahonaiainansaijoseiyoiyoozuuwajimaniihamanamikatamasakiuchikokihokutobetoonshikokuchuomatsuyamaimabarikamijimakumakogenyawatahamamatsunosabaeikedaobamasakaifukuiohionotsurugamihamawakasaminamiechizeneiheijikatsuyamatakahamaechizensoedaukihaomutaokawanishiogoribuzenonojosueumiokiotochikugosasagurisaigawamizumakishinyoshitomikurumekurateyamadakasuganakamamiyamanogatatakatahakataiizukakawaratagawakasuyaashiyainatsukimunakataminamitsuikishonaikurogifukuchikeisenhigashimiyakoshinguyukuhashiokagakiyamekogaongausuikahotohochuotoyotsumiyawakadazaifuhisayamatachiaraiyanagawanakagawahirokawachikujochikushinochikuhochikuzennamieotamaokumashowateneiiwakikoorinangoononishigoshimogoomotegomishimafukushimaasakawakagamiishishirakawaiitatefutabahiratayugawahanawakitakatakawamatakunimiyabukibandaihigashihironoyamatomiharuyamatsuriaizubangedatesomaaizuwakamatsuyanaizuaizumisatonishiaizuizumizakikitashiobarataishinkaneyamakoriyamainawashirotanagurafurudonosamegawasukagawaishikawatamakawaikedaogakitaruiginanenahashimahichisonakatsugawaibigawashirakawamizunamiminokamomitakekawauesekigaharatomikasakahogikitagatayamagatatajimianpachimotosuyaotsukakamigaharahidakanisekitokigujominogodoyorogifukasamatsutakayamawanouchihigashishirakawakasaharashimonitatsumagoichiyodakannakanrashowameiwakiryuotaoratomiokafujiokaitakuranaganoharahigashiagatsumatakasakishibukawaminakamikatashinatsukiyonokawabanumataannakaoizumimidorishintoisesakiuenoyoshiokakusatsutakayamanakanojonanmokutamamuratatebayashimaebashiotakekaitadaiwahongofuchukuietajimashobaramiharahatsukaichihigashihiroshimamiyoshikumanokurenakasakaseraseranishiasaminamifukuyamashinichionomichiosakikamijimajinsekikogentakeharaotobenanaeikedatohmaozoraobiraabirakyowaeniwataikibibaisharirebunerimohiroooketootarupippunishiokoppechitosefurubirahakodateshiranukakitahiroshimakushiroobihironanporoiwamizawaniikappukunneppufukushimanakasatsunaitoyourakuromatsunaiakabirakamisunagawashibechaurakawakamifuranonakatombetsuasahikawashimokawakayabeokoppebiratoriabashirisaromaatsumanumatahidakabifukamukawamikasahorokanaitoyotomisarufutsuhigashikawaishikarikitamiyoichiesashiiwanaitomariminamifuranoakkeshifuranotoyakoyakumootoineppushikaoishiraoinemuronayorohaboroashorobihororishirifujiutashinaihokutotakasuebetsuurausuassabukikonaishimamakinaiedatetoyabieinikiesanuryuoumuteshikagarikubetsuashibetsukimobetsuaibetsutobetsusobetsuembetsushimizuchippubetsurishirihokuryuhoronobeshintokutsubetsushibetsuhonbetsumombetsutsukigatakuriyamakoshimizushiriuchikutchanmurorannoboribetsukamishihorowassamushinshinotsukembuchiwakkanaikamoenaikiyosatotakinoueshikabesunagawafukagawanakagawatakikawakamikawahigashikagurahamatonbetsumatsumaemoseushirankoshishakotanimakanemashikeotofuketomakomaisandatambaitamiawajikasaiasagoshisoonoakoyashirotoyookaminamiawajiinagawafukusakitakasagokamigorikasugaharimayokawaashiyahimejiakashitaishiaogakisannantakinosumototakarazukanishinomiyashingugoshikinishiwakiyokatakaaioimikisayoyabukawanishiamagasakisasayamashinonsenkakogawaichikawakamikawatatsunotsukubaiwamaogawaasahisakaitokaioaraiitakobandodaigosuifuinaamikasumigaurakashimaomitamayachiyoshimodatetomobetoridehitachinakainashikisakuragawakasamayawaramoriyahitachiomiyanamegatayamagatahitachikamisuushikutakahagiibarakitonekoganakasowayukimihojosomitoryugasakishimotsumafujishirotsuchiurachikuseihitachiotashirosatotamatsukuriuchiharashikahakuinanaotsubatawajimakahokukawakitatsurugikaganominotosuzuuchinadakomatsuanamizunakanotohakusannonoichikanazawaiwateshiwafudaikawaimoriokaofunatohanamakikuzumakikitakamininohekunoheyamadayahabasumitaichinosekitanohatahiraizumirikuzentakatajobojiotsuchihironomiyakoiwaizumikarumaiichinohenodakujitonooshushizukuishifujisawamizusawakamaishikanegasakimannoutazukotohiraayagawazentsujihigashikagawauchinomikanonjisanukimarugamemitoyotakamatsutadotsunaoshimatonoshoakuneamamiizumihiokiyusuikinkoisasookouyamanakatanekagoshimakanoyaisenkawanabeminamitanemakurazakitarumizunishinoomotematsumotosatsumasendaioimatsudaayaseebinamiurazushinakaiodawaraiseharasagamiharahakoneaikawakaiseiatsugitsukuihadanoyamatoyamakitazamaoisochigasakininomiyayokosukakamakuraminamiashigarafujisawasamukawakiyokawahiratsukayugawaraokawaumajikochitsunootoyoakiinonishitosayasudahidakamiharasakawaniyodogawahigashitsunokagamigeiseisusakiotsukinaharisukumomurototosakamiochitoyotosashimizumotoyamanankokunakamurakitagawayusuharaogunichoyoukiasoutoozugyokutoamakusamifunetakamoriyamagaminamataminamiogunikikuchisumotoyamatonagasumashikiaraokumamotokamiamakusanishiharayatsushiroayabeseikasakyoideineujinakagyokameokakyotangokyotanabekyotambaminamiyamashiroyamashinatanabeyawatawazukaminaminantanmiyazuhigashiyamafukuchiyamakitamukokamojoyokizumaizuruujitawaraoyamazakinagaokakyokumiyamakawagoeinabeshimameiwaasahitaikiudonoisetsukisosakikuwanamihamamiyamasuzukatamakimisuginabarikumanokomonominamiisewataraitobakiwatakikihotadomatsusakayokkaichikameyamaureshinoishinomakishichikashukuohirataiwaosakizaohigashimatsushimashikamaiwanumashibataogawaraonagawakawasakiseminemarumoriminamisanrikukakudamuratawakuyatomiyanatoriwataritagajomisatotomekamirifushiroishimatsushimayamamotoshiogamafurukawahyugaebinotsunosaitoayakushimanobeokakitauramiyazakitakazakigokaseshiibamimatashintomikunitomikitakatakobayashikawaminamitakaharukijotakanabemiyakonojonishimeranichinankitagawakadogawamorotsukakisofukushimaminamimakisakaeobuseikedaogawamiasaokayaasahiotakiotarichinoinaomichikumakomaganechikuhokukaruizawayasuokaooshikaikusakaminamiaikitogakushimatsukawakawakamitateshinatakamorikitaaikishiojirimiyadahakubaiizunaiijimaiiyamamiyotasuzakayasakatoguraookuwanagawaminowahirayayamagataminamiminowafujimiomachisakakitakaginaganonakanosakuhokomoronagisoshinanomachiwadauedaiidaharasuwatomiachiaokianankisosakunozawaonsenagematsutakayamashimosuwamatsumotoyamanouchinakagawamochizukiazuminotatsunoobamaomuraseihiunzenosetofutsuikichijiwanagasakiisahayahasamisaikaikawatanasasebohiradokuchinotsugototogitsutsushimashimabarashinkamigotomatsuurayamazoekashibaikomakawaitenrioyodosangokoryoudaojiikarugayamatokoriyamatenkawakatsuragikurotakikawakamimiyakemitsuetakatorikamikitayamayamatotakadahegurishinjokanmakisakuraitawaramotogoseoudanarasoniandokawanishishimoichihigashiyoshinokashiharashimokitayamanosegawayoshinomintsivorytopazsakuragehirnsumomoaseinetopalmail-boxmokurenyoitamuikaojiyagosensanjoaganomyokoseiroagaomishibataniigatanagaokamurakamiuonumayuzawakariwatagamitainaitsunanminamiuonumatochioyahikojoetsuseiroukamosadoizumozakitokamachiitoigawasekikawakashiwazakitsubamemitsukekokonoesaikiusukibeppuusahimeshimakunisakihasamataketatsukumihitaoitahijikusuyufukujukamitsuebungoonobungotakadaibaraniimibizentsuyamaokayamakasaokahayashimayakagemaniwaakaiwamisakishinjotamanotakahashikibichuowakesojanagishookumenannishiawakurakurashikiasakuchisetouchikagaminosatoshotomigusukunakagusukuyaeseizenaurumaiheyaaguniogiminanjokinminamidaitokitanakagusukuyonaguniokinawaishigakikunigamiurasoekadenataramahiraraginozataketomishimojizamamitonakiitomanhigashimotobuyonabarugushikamionnanahanagohaebarukumejimakitadaitonakijinnishiharayomitanginowantokashikiishikawaikedasuitaminohizuminishisakaikananabenodaitoosakasayamayaokishiwadatadaokakaizukatondabayashichihayaakasakakumatorikadomasayamahigashiosakashijonawatehirakatataishimisakitajirihannansennankatanotoyonominatosettsuhigashiyodogawaibarakinosekitachuohigashisumiyoshifujiiderakashiwaraizumiotsutoyonakamatsubaramoriguchiizumisanoshimamototakatsukineyagawahabikinotakaishikawachinaganoyoshinogarikamiminearitaouchiimarihizenogikashimaariakekiyamafukudomikitagatakitahataomachigenkaikanzakinishiaritakyuragisagataratosutakushiroishikaratsuhamatamakouhokukawagoeyoshidasatteogoseirumaasakaurawaogawaniizaomiyayoriiotakishikihonjooganohannohanyuinasaitamaokegawaarakawayoshikawayokozehasudasayamahidakafukayachichibuiwatsukiryokamiyoshimikamiizumifujimiwarabiranzanmiyoshiminanoyashiosakadosugitomisatohigashichichibutodasokakukiyonokazoshiraokakasukabekounosukawajimatsurugashimamiyashirokitamotohatoyamamoroyamahatogayakumagayakawaguchinagatorokamisatomatsubushinamegawatokigawakamikawafujiminohigashimatsuyamakoshigayatokorozawas3isk01isk02ryuohkoseikonanaishorittotakashimamaibarahikonetorahimenishiazaikokagamokotoyasuotsukusatsunagahamamoriyamatoyosatotakatsukinotogawaomihachimanhigashiomiakagiunnanizumogotsuamayatsukakakinokimatsuehamadamasudahikawahikimiokuizumoyasugiyakumomisatotamayuohdahigashiizumookinoshimanishinoshimatsuwanoshimaneshimadafujiedayoshidashimodagotembaiwataatamikosaiyaizuitoizumishimahaibaramakinoharaomaezakikawanehonkannamisusonohigashiizufukuroinumazukawazufujiaraishizuokahamamatsushimizuizunokunimatsuzakimorimachiminamiizunishiizukikugawakakegawafujikawafujinomiyaujiietsugaoyamayaitaohiranikkoashikagakuroisokanumasakurashioyakarasuyamamotegiichikaikaminokawatochigihagamokanogisanobatonasumibunasushiobaranishikatautsunomiyaiwafunemashikoshimotsukeohtawaratakanezawaitanokomatsushimatokushimaichibaminamiaizumiwajikikainanmiyoshinarutomimamugiananmatsushigesanagochishishikuinakagawamachidachiyodakomaefussainagitaitochofufuchuomeotahigashiyamatotoshimaokutamaaogashimakodairaedogawaarakawahachiojishinagawatachikawashibuyasuginamihinodekiyosesumidaoshimanerimamitakahamuraadachinakanomizuhobunkyomegurominatokoganeihigashikurumekokubunjihigashimurayamamusashimurayamatamakitahinochuokotokatsushikakouzushimaogasawaraakishimakunitachishinjukusetagayamusashinohachijoitabashiakirunohinoharachizunanbukotouramisasawakasayonagokogehinoyazutottorinichinansakaiminatokawaharaoyabetairainamiasahinantoimizufuchutakaokakurobeyamadajohanatoyamatonaminyuzenfunahashinakaniikawanamerikawaunazukitogahimiuozufukumitsutateyamakamiichiiwadearidayuasainamitaijikatsuragiaridagawatanabemihamahidakakainankiminomisatoshingushirahamakamitondayurakozakoyagobokitayamawakayamakudoyamahashimotokushimotokozagawahirogawakinokawanachikatsuurarsuseroeoishidasagaeoguniasahinagaitendonanyoobanazawanishikawasakataohkuratozawamikawamamurogawayamagatafunagatatakahatashonaishinjokahokuiideyuzakawanishitsuruokakaminoyamayamanobeshiratakamurayamanakayamakaneyamahigashineyonezawasakegawamitouubeyuuabushimonosekitabuseoshimatoyotaiwakunihikarishunannagatohagihofukudamatsutokuyamashowadoshitsurunanbukoshukaiminami-alpsnirasakikosugeotsukioshinohokutominobuyamanashifuefukichuokofuichikawamisatoyamanakakonakamichitabayamanishikatsuranarusawafujikawahayakawafujiyoshidafujikawaguchikouenohara長野京都岐阜大阪三重群馬千葉滋賀佐賀奈良adednelgaccogogror秋田愛知高知埼玉沖縄栃木熊本岩手青森山梨新潟島根鳥取長崎香川宮城石川大分宮崎茨城山口兵庫山形徳島広島福島福岡岡山富山静岡愛媛福井東京xn--4it168dhatenadiaryxn--vgu402ckawaiishophatenablogcocottenamaste北海道penneehimeiwateversestabachibashigagonnagunmapermahaccaakitaosakauh-ohblushkochiaichifukuikuroncapooitigohyogotokyokyotopunyuthickcheap0t00g00j0mie2-ddaapyawjg0amfemsubxiiboomoobutchueekpgwrgrherskrboyrdyupperunderflierchipsmydnsheavyangryhippygirlyrulez神奈川鹿児島和歌山bambinaxn--nit225kokayamasaitamaxn--k7yn95exn--1lqs03nsapporoparasitelolipopmcxn--efvn9sniigatafukuokatokushimafukushimahiroshimakagoshimafakefurokinawaxn--8pvr4ucoolblogxn--0trq7p7nnkawasakinagasakimiyazakichilloutxn--8ltr62kxn--klty5xpeeweezombiecutegirlxn--rny31hxn--uuwu58axn--ntso0iqx3axn--djrs72d6uytoyamanikitanyantakagawamimozanagoyaboyfriendxn--2m4a15egreaterchowderegoismyamagatafashionstorexn--elqq16hxn--pssu33lsendaimiyagixn--rht27zpecoriaomorisaloonwatsonvivianxn--djty4knobushipigboatnaganopinokoxn--f6qx53asadistvelvetsecretxn--5js045dchicappayamanashiibarakidigickgirlfriendxn--1lqs71dmongolianxn--c3s14mxn--qqqt11mtochigixn--5rtq34kparallelo0o0mondkobesagabonadecaoitanarafoolkilldecimainhiholomosblokilociaoundopupugifutankcrapflopnooroopsmodsholyjeezstripperpepperbittershizuokaxn--rht3dkitakyushureadymadeicurusversusmatrixxn--rht61ehungryfloppygloomycrankyhandcraftedlittlestarxn--klt787dxn--kltx9awhitesnowsunnydaytottorilovepoptheshopbuyshopxn--5rtp49cxn--d5qv7z876cwebaccelxn--kbrq7oxn--4pvxsxn--1ctwolovesickkumamotocatfoodxn--tor131oyokohamawakayamatonkotsuxn--ehqz56nxn--uist22hxn--6btw5axn--kltp7dyamaguchifrenchkisspussycatxn--4it797kxn--uisz3gbabybluexn--zbx025dnetgamersxn--7t0a264ckanagawaxn--6orx2rishikawaxn--ntsq17ghalfmoonschoolbusjellybeanxn--mkru45iusercontentlolitapunkxn--32vp30hsakurastoragehokkaidoshimanecandypopbabymilksupersaleweblikeraindropbackdropwebsozaikikirarahateblodaynightmeneacsccogoormobiinfoaeusxxorgmilcomnetedugovorgcomnetedugovbizinfotmprdorgmilcomnomedugovassnotairespresseassocoopgouvveterinairemedecinpharmaciensorgnetedugovtraorgcomedurepgovmeneperekgacscaiiocogoitoresmshsseoulbusanulsandaeguc01milvkimmvchungnamjeonnamjeonbukeliv-dnsgyeonggijejueliv-cdnincheondaejeongangwongyeongbukgwangjuchungbukgyeongnameliv-apicoeduindorgcomembnetedugovorgmilcomnetedugovjcloudorgcomnetintedugovperbnrinfocooyorgcomnetedugovipfscanvamypepw3sstorachakeeneticjoinmcinbrowserdwebcyonnftstoragemyfritzaemewphlxachotelltdorgcomwebsocschngonetintedugrpgovassnomgacsccoorgnetedugovbizinfo123websiteidorgmilcomasnnetedugovconfidmedorgcomplcschnetedugovaccoorgnetgovpresstmassoirseproxaccosoundcasthoptocraftvp4c66orgnetedugovitsmcdirmyboxbarsyedgestacksynologylogintonohostwebhopdiskstationi234tcp4hoocgroknoipprivmydsddnsdnsforlohmustransipdscloudfilegear-sgbrasiliafilegearframerbarsybarsyonlinecoprdorgmilcomnomedugovinforgcomnetedugovnameacprorgcomartnetedugovpresseinfoassoinstgouvorgnycedugovbarsydscloudjuorgcomnetedugovminisiteaccoororgcomnetgovorgmilcompronetintedugovbizmuseumnameinfoaerocoopaccoorgcomnetintedugovbizcooporgcomgobneteduorgmilcomnetedugovbiznameaccoorgmilneteduadvgovcoorgcomnetaltgovforgotherhiskeeneticispmanagernomassoprod5476132eastasiacentraluswesteuropewestus2eastus2rucdnwest1-usfra1-desandboxjls-sto1jls-sto3jls-sto2aglobalabglobalsslmapprodfreetlsmaplon-1lon-2ny-1fr-1sg-1ny-2paassnwebpaashostingjelasticnordeste-idcsocuserpagescwebfileblobservicebuscoreatlricnjsjelasticwebsitestoragesezagbinruhuukjptsmyspreadshopmynetnameakamaiorigin-stagingfrom-coipv64dynv6cdn77serveblogadobeaemcloudhicamsprytdnsupno-ipownipde5ovhicpfirewall-gatewaysytesmypsxbarsyusgovcloudapimyamazemyradwebakamaihdsaveincloudfastlylbfrom-lasubsc-paysquare7in-the-bandblackbaudcdnhomelinuxoninfernoctfcloudservebbsdns-dynamiccloudfrontakamai-stagingipifonyham-radio-opsenseeringclickrisingcommunity-profrom-nylocalcertgrafana-devedgesuite-stagingcloudflareanycasteating-organicatlassian-devmydattofeste-iplocaltotorprojectknx-serveredgekeycloudflareglobalcloudyclustercasacamserveftpakamaized-stagingakamaiorigindns-cloudmyeffectboomlabotdashbuyshousestwmailhetemlazure-mobilein-dslthruhereredirectmedynuddnsbouncemesupabaseluyanicloudappakamaicloudfunctionsdebiannhlfanpgafanstatic-accessin-vpnmysynologymafeloappudohomeftptrafficmanagersiteleafseidatmemsetcloudflarecloudaccesskeyword-onazure-apiis-a-chefdoes-itgets-itwebhopselfiphomeipkicks-assedgesuitewindowsserver-ontunnelmolemydissentscrapper-sitecloudflarecnuni5srcfggffiobbzabcdenodynuopikddnsvpndnsakadnselastxkinghostvps-hostfastlyhomeunixazureedgeshopselectdontexistmyfritzcloudjiffyalwaysdatasells-itsquaresbroke-itazurefddattolocalat-band-campmeinforumfamilydsazurestaticappsdefinimabplaceddnsaliasdynaliasnow-dnsblogdnsroutingthecloudendofinternetdsmynasakamaiedgemymediapcadobeio-staticakamaiedge-stagingakamaihd-stagingddns-ipprivatizehealthinsurancelive-onkrellianschokokeksmassivegridmysecuritycamerarackmazeserveminecraftfrom-azis-a-geekakamaizedmoonscalecryptonomicoffice-on-theusgovtrafficmanageradobeioruntimeedgekey-stagingreserve-onlinechannelsdvrdnsdojousgovcloudappcdn77-sslapps-1and1podzoneazurewebsitesdynathomescaleforceyandexcloudvusercontentisa-geekcdn-edgescoaemalcesappwriteazimuthtlonarvonoticeablestorecomwebrecnetperotherfirminfoartslgdloncogoiltdorgmilcolcomplcschgenngonetedugovbiznamefirmmobiacincoorgmilcomnomwebgobnetintedubizinfocomyspreadshopdemongovtransurl123websitehosting-clusterkhplaycistrongsnesosvalervålerxn--vler-qoaossandeheroysandeherøybøboheroyherøyxn--hery-iraxn--b-5gavalerbøboxn--b-5gasandesandexn--hery-iraxn--vler-qoavålerhåreålaahavaofsfvfhlolnlalrlhmfmtmahcostntbuåstrmreigersundmyspreadshopgálsáeidsvolltingvollgildeskalflorøvadsøvardøvanylvenxn--bhccavuotna-k7astrandaxn--kvnangen-k0axn--sknland-fxaxn--mosjen-eyarakkestadhyllestadnannestadvevelstadvaapstenordre-landsondre-landsøndre-landtjieltexn--vrggt-xqadsør-aurdalsor-aurdalheradstordmoldefordeførdeseljefedjeryggehemnexn--krehamn-dxasognegranesøgnebrynetjomevallebykletokkegiskedovretjømehobølvoldasaudatolgasømnaviknadønnasomnadonnatranafrananesnaraumasmolatrænafrænalesjasmølaørstaorstahitrafloraaukraloppafrøyarissasnasahalsagalsaromsaraisaráisafroyasnåsagronghobolfjelltydalårdalardalaskimharamkraanghkekråanghkesorumbarumhurumbærumsørummodumsálátbálátfrognbjugnvåganvagangulenskienløtenlotenstrynvefsnxn--merker-kuaskaunsveiobømlobomloskjåkvardoflorovadsosalatbalatsálatklæbuklabuselbubarduulvikskjakklepprisørxn--nttery-byaeflåeidflahofmilgolholsellomskifetvikdepvgsfhsaskerrisorhamarasnesåsnesrørosrorosxn--slat-5namasoynaroyvaroyluroydyroyaskoyradoyandoyrodoymeloyradøyandøyrødøymeløyaskøylurøydyrøymåsøyværøynærøyhoylandethøylandetdivtasvuodnalørenskoglorenskognesoddtangenxn--tjme-hraxn--smla-hraxn--stjrdal-s1aunjargalillehammerunjárgaxn--hamary-fyadavvenjargaxn--bearalvhki-y4a123hjemmesidegjerdrumxn--brnnysund-m8acxn--tnsberg-q1axn--mlatvuopmi-s4axn--snsa-roaxn--skierv-utaxn--brum-voatysfjordkvafjordeidfjordkvæfjordsongdalenmjondalenmjøndalenxn--gls-elackragerogáŋgaviikagangaviikasørreisasorreisasør-varangersor-varangerxn--risr-iraskiervaxn--frna-woaxn--trna-woakvinesdalleksvikleirvikrøyrvikroyrviksvelvikvenneslaevje-og-hornnessandnessjøenmarnardalvindafjordsandefjordenebakksnillfjordullensvangxn--trany-yuabrønnøysundnamsskoganaustevollxn--stjrdalshalsen-sqbnord-aurdalnord-frontrøgstadtrogstadgrimstadflakstadgjerstadxn--sandy-yuaxn--leagaviika-52bnore-og-uvdalvegarsheixn--rlingen-mxaxn--ggaviika-8ya47hvegårsheikarlsoykvitsoymasfjordenhamaroyinderoyosteroydavvenjárgasauheradguovdageaidnuxn--vre-eiker-k8abronnoysiellakkrødsheradkrodsheradkvinnheradbrønnøyxn--mtta-vrjjat-k7afxn--lrenskog-54akvitsøyvárggátkarlsøyosterøyinderøyhamarøybronnoysundxn--aurskog-hland-jnbbahccavuotnabáhccavuotnagiehtavuoatnastor-elvdalmidtre-gauldalxn--gildeskl-g0akarasjokevenassixn--bievt-0qaxn--yer-znalebesbynessebyxn--hbmer-xqamalselvmålselvxn--unjrga-rtamøre-og-romsdalmore-og-romsdalhareidmelandørlandorlandstrandålgårdsolundalgardafjordåfjorddielddanuorrikautokeinoxn--stre-toten-zcbskodjeaejriestangeliernebamblestokkefauskesnåasesnaasekongsvingerlangevagberlevagxn--flor-jrahattfjelldalostre-totenøstre-totenvestfoldxn--mely-iraálaheadjualaheadjunordreisaxn--troms-zuaxn--lgrd-poacporsangerflatangerstavangerleikangerbremangersamnangergieldakarasjohkaxn--rdy-0nabfrostautsirasnoasatromsaxn--sr-aurdal-l8aflekkefjordjølsterjolsteraremarkhedmarknååmesjevuemienaamesjevuemiexn--vard-jrarollagmeråkermerakerorskogørskogxn--bdddj-mrabdákŋoluoktaxn--osyro-wuaaknoluoktatrysilskjervøymandaljondalbindalrindalmeldalsuldalorkdalsigdalalvdallærdalhurdalsirdalverdallerdallardaloppdalåseralaseralhadselkragerødivttasvuotnaoverhallasteinkjerxn--hnefoss-q1askedsmokorsettromsøxn--dyry-iravestre-totenmuseumxn--sandnessjen-ogbrahkkeravjufylkesbiblbájddarbajddarxn--laheadju-7yarennesøyxn--koluokta-7ya57hxn--hgebostad-g3aleirfjordstorfjordbalsfjordbåtsfjordbatsfjordmuosátbievátloabátkárášjohkanøtterøyxn--mjndalen-64anordkappláhppilahppialstahaugsiljanverranrøykenroykenhaldenlyngenbergenhortenhønefosshonefosstroandinbeiarnvarggatosoyroosøyrotromsoidrettmuosatbievatruovatloabatvoagattynsetnessetxn--indery-fyaskánitskanitraholtråholtxn--ystre-slidre-ujbandebusarpsborgbearduxn--karlsy-fyahordalandjorpelandjørpelanddeatnuringsakersør-odalsor-odalxn--slt-elabringerikeaudnedalnittedalnissedalhemsedalslattumsurnadalxn--blt-elabelverumstjørdalnaustdalhjartdalgjøvikfyresdalhasviknarviklarvikgjovikmalvikgamviklenvikporsgrunnstjordalengerdaldrobakdrøbakxn--msy-ula0hvestvagoyxn--vgan-qoaxn--ryken-vuaxn--lten-graxn--stfold-9xaxn--hpmir-xqaxn--lury-iramálatvuopmimalatvuopmitysværkirkenesbirkenesmoskenesbáidárxn--fjord-lraxn--rdal-poabahcavuotnabáhcavuotnaxn--frde-gralindåsbearalvahkixn--hobl-iraráhkkerávjuxn--loabt-0qavågåáltábodøsundlundraderådeetnetimeholeauregrueoddavagavegaranatanaarnasolasulaaltalekafusavangbergkvamåmliamlibokntinnroangranosenoslobodorøstroststatåmotamotivguprivøyeroyerliermossvossxn--nvuotna-hwalusterlunnermarkerhábmerhabmerhvalerfjalerxn--rholt-mratysvarbaidarfitjargaularhápmirhapmirmelhusfosnesøksnesoksnestysneshemnesevenesflesbergeidsbergtonsbergtønsberglindasxn--sndre-land-0cbnamsosxn--srum-graøystre-slidreoystre-slidrevestre-slidretrondheimbalestrandxn--langevg-jxaaustrheimxn--skjk-soavagsoyaveroysandoykarmoyfinnoytranoyvestbytranbysykkylvenxn--hyanger-q1aspjelkavikandasuoloxn--fl-ziaxn--drbak-wuastathellexn--sr-varanger-ggbtelemarkxn--bhcavuotna-s4axn--porsgu-sta26fčáhcesuolocahcesuoloakrehamnåkrehamnsandøykarmøyfinnøytranøyvågsøyaverøynamdalseidxn--lesund-huabadaddjaxn--vegrshei-c0axn--btsfjord-9zagildeskålporsanguxn--trgstad-r1anávuotnanavuotnahammerfestxn--sgne-graxn--brnny-wuacibestadharstadnarviikaevenáššivestnesgjemnessandnesagdenesrennesoyxn--avery-yuaxn--tysvr-vrabearalváhkikongsbergspydebergrandabergxn--andy-iradavvesiidaxn--krdsherad-m8aporsáŋgufredrikstadbjerkreimringeburennebuaurskog-holandnotteroyxn--vgsy-qoa0jxn--rmskog-byaskierváivelandbyglandfrolandaurlandforsandxn--bjddar-ptamidsundålesundalesundfetsundfarsundovre-eikerøvre-eikerakershusxn--moreke-juasørfoldøstfoldostfoldsorfoldhøyangerhoyangerlevangerorkangertanangerxn--vestvgy-ixa6olillesandulsteinxn--rennesy-v1agranvinskjervoyxn--klbu-woalavagisxn--h-2faxn--ryrvik-byakafjordkåfjordseljordfolkebiblxn--gjvik-wuajevnakerxn--kfjord-iuabudejjuxn--kranghke-b0axn--davvenjrga-y4axn--rland-uuaxn--ldingen-q1axn--mlselv-iuaxn--rady-iraxn--linds-prabrumunddalxn--ygarden-p1amo-i-ranaeidskogrømskogromskoghjelmelandxn--finny-yuaxn--sr-odal-q1axn--skjervy-v1aballangenkvanangenkvænangengratangenxn--hmmrfeasta-s4acvossevangensuohkanxn--rde-ulaxn--mli-tlaxn--ksnes-uuanordlandskanlandskånlandsortlandfuoiskuxn--rros-graxn--hcesuolo-7ya35bxn--eveni-0qa01gagaivuotnagáivuotnaxn--seral-lradrammenmodalenmosjoenjan-mayentorskensteigengloppenxn--snes-poamatta-varjjatxn--sr-fron-q1aomasvuotnajessheimbådåddjåxn--krager-gyaxn--kvfjord-nxaxn--asky-iraxn--snase-nraxn--bidr-5nacholtålenxn--vads-jraxn--jlster-byamosjøenxn--rst-0nastavernxn--ostery-fyaxn--oppegrd-ixaxn--sknit-yqaxn--risa-5naoppegårdskiptvetrendalenholtalenxn--mot-tlaxn--lhppi-xqaxn--holtlen-hxaxn--srreisa-q1akopervikxn--muost-0qaxn--bmlo-grahokksundkvalsundegersundxn--karmy-yuaullensakerxn--hylandet-54axn--kvitsy-fyaxn--bod-2nalangevågberlevågkristiansandxn--rsta-frahornindalstjørdalshalsenstjordalshalsensandnessjoenhámmárfeastaxn--lrdal-srasør-fronsor-fronnord-odalkristiansundmátta-várjjatvestvågøynesoddennotoddenbuskerudøygardenoygardensalangenlavangenralingenrælingenlodingenlødingenleaŋgaviikalaakesvuemieleangaviikauenorgexn--srfold-byaaskvollxn--rskog-uuaxn--nry-yla5gxn--vry-yla5ghammarfeastaxn--rhkkervju-01afxn--givuotna-8yakommunekrokstadelvanedre-eikerhagebostadhægebostadxn--berlevg-jxakviteseidxn--s-1faxn--l-1faxn--nmesjevuemie-tcbafuosskomoårekemoarekexn--lt-liacxn--jrpeland-54asvalbardoppegardholmestrandtvedestrandsogndalsokndalarendalsunndalfolldalxn--krjohka-hwab49jlyngdaletnedalnorddalsaltdalgausdalskedsmovaksdalgjesdalstordalxn--frya-hraaarbortedrangedalxn--smna-graaurskog-hølandxn--vg-yiabtjeldsundhaugesundlindesnesxn--mre-og-romsdal-qqbxn--dnna-gradynmerseineshacknetenterprisecloudmineaccomaorimāoriorgmilcriiwigennetschoolhealthkiwigovtgeekxn--mori-qsacloudnsparliamentcomedorgcompronetedugovmuseumwebsitekinservicebarsywebsitebuildereerobookheimdnsleapcelleero-stagetechcrscsslorigingohomecdbedeeeiemesecabgngilnlalplchfisiincnnoroptatitmtltruauhulumkdkukskjplvtrgrfrkrhrusesismycynzcznetinteduassoososcloudstgbetaaezaeuhkusjshatenadiarycdn77hoptozaptois-a-knightmyftpno-ipjpnddnssdpdnsspdnsbarsysweetpepperis-a-bruinsfanis-very-sweetservegameis-a-soxfanhomelinuxcdn77-secureservebbsmisconfusedwebredirectblogsitefreedesktopcouchpotatofriestoolforgeaccesscamis-lostreadmyblogsmall-webfedorapeopleserveftpis-a-celticsfanmywirepotagertwmailin-dslsellsyourhomeread-booksfreeddnscable-modemis-savednflfanufcfanmlbfanstuff-4-saleendoftheinternetin-vpnmy-firewallhomeftpis-localis-a-chefboldlygoingnowherewebhopselfipkicks-assroxatunkcamdvrfedoraprojectgotdnsdvrdnsdyndnspubtlspimientahomeunixdontexistfedorainfracloudwmflabsfspagesbmoattachmentsteckidsfamilydsdnsaliasdynaliasnow-dnscloudnsdoomdnsduckdnsblogdnshomednsroutingthecloudendofinternetdsmynasip-dynamicpoivronhttpbinmyfirewallis-very-evilmysecuritycamerais-a-linux-userwmcloudis-a-geektuxfamilyis-a-candidatedoesntexistis-very-badhobby-sitegame-hostaltervistais-foundis-a-patsfandnsdojohepforgepodzonedynservcollegefanis-very-goodfrom-meis-very-niceisa-geeknerdpolacmedsldingorgcomnomgobabonetedupleskaemhlxmyboxrockyprvcydeuxfleurspdnscodebergheyflowstatichostorgmilcomnomgobneteduorgcomeduiorgmilcomngonetedugovcloudns1337ngrokacorggogfamcomwebgobnetedugokgopgkpgovgosbizpasaugumicsopozpapuwmwsrprusiskwpspkppspkmpspokeoiawsawifoumsdnskokwpmuppuppsppiwwiwoowuzswkzoschrzpisdnwzmiuwwitdpssewsseumigugimoirmpinbwinbwiihupporzgwgriwupowwskrwioswuozstarostwokonsulattmpccopruszkowmyspreadshopostrodakartuzyopolegminamediaustkazgorajgoraolawailawalomzawloclradombytomjaworznotargilubinkoninzagantorunkutnokepnonakloczestsopotsanokturekplockslasksklepzarowlukowmedaidgdaorgmilrelcomnomatmgsmartneteduelkgovwawsossexbiztgorysejnytychypomorzeboleslawiechomesklepsdscloudunicloudzakopanelegnicarawa-mazbydgoszczswidnikkrasnikwloclawekbielawamragowograjeworealestatebeskidykaszubymalopolskaprzeworskswiebodzinlecznadfirmaszkolawarmiagdyniamiastakazimierz-dolnymalborkswidnicadlugolekaostrolekapodlasieelblagtravelsimplesitezachpomormielecszczecinnieruchomosciwalbrzychlezajsklublinbedzinpoznanwielunmielnooleckostarachowicedkontopowiatwroclawrybniksuwalkileborkslupskgdanskostrowwlkptarnobrzegtourismwegrowkrakowglogowyou2pilanysamailwrocinfoagroautobeepshopprivlapypiszlodzcfolksecommerce-shopmazurypulawyskoczowrzeszowpomorskiezgierzkaliszolkuszlowiczostrowiecsosnowiecmazowszewodzislawbialowiezazgorzeleckatowicepabianicejelenia-gorawolominkarpaczsieradznowarudaczeladzkonskowolaskierniewiceswinoujscieturystykabieszczadycieszynketrzynolsztynbialystokbabia-goraprochowicewarszawastalowa-wolapolkowicegorlicegliwiceponiatowalimanowalubartowaugustowkobierzyceopocznognieznoszczytnokolobrzegshoparenapodhalebielskoklodzkostargardatwithplayitownnamecoorgnetedugovacorgcomproestnetedugovbiznameislaprofinforechtngrokmedaaaacacpaenglawjurbarbarsykeeneticavocatacctcloudnsorgcomsecplonetedugov123paginaweborgcomnetintedugovnomepublidkinbarsygovx443cloudnsorgmilcomnetedugovcooporgmilcomschnetedugovnamecomcannetlibassoaemclantmcontstoreorgcomnomrecwwwbarsyfirminfoshopartsstackitmyddnswebspacelima-cityacincooxorgedugovbarsybrendlyhbvpsvpsspectrumlandinghostingacppmordoviamcprecbgorgmilcomspbnetintedumsknovgovbirrasmcdirmytismircloudvladimirnalchikadygeyamarinepyatigorskmyjinobashkiriaeurodirvladikavkazna4ugroznykustanaikalmykiacldmaildagestaniranbuildcanvaliaravalwixdevelopmentappwritemigrationneedleverceldatabasestackitcodereplravendbonporterlovableaccoorgmilnetgovcoopmedorgcompubschnetedugovservicemecomygovorggovtvmedorgcomnetedugovinfoedgfacbmlonihkutwpsryxzbdtmacfhppmyspreadshopbrandpartiorgcomfhvpress123minsidaitcouldbeworlanbibkommunalforbundfhskiopsyskomvuxkomforbnaturbruksgymnloginlineorgcomnetedugovenscaledeuusentbotdaorgmilcomnetgovnowteleporthashbangplatformlovablebarsyshopwarebasehoplixbarsyonlinemsf5gitappgitpagecofigma-govcaffeinefigmacanvasoltstputerbarsysupportchatgptsquareomniweopensocialcpanelnotionnovecorewpsquaredpreviewjelecyonbyensrhtfastvpspieboxconvexjouwwebheyflowplatformshloginlinemadethissourcecraftclouderaorgorgcomartedugouvunivmeorgcomnetedugovsurveysstatichfheiyuxs4allprojectmyfastubervibehostapp-ionosdeployagentmecoorgcomschnetedugovbizcncostoreorgmilcomneteduembaixadaconsuladokiraranohoprincipesaotomeheliohobarsystorebaseshopwaresellfyabkhaziavologdamordoviapenzalenugsochinavoiexnetspbmsknovnorth-kazakhstanashgabadkareliaarmeniageorgiavladimirnalchikivanovobukharaadygeyakhakassiakalugakrasnodarjambylaktyubinsktroitskbryanskobninskkurganazerbaijanpokrovskbashkiriatselinogradvladikavkazmurmansktulatuvamangyshlaktashkentchimkentgroznykaragandatermezarkhangelskkustanaikalmykiabalashoveast-kazakhstankaracoldagestantogliattibarsyredorgcomgobedumirenknightpointaccoorgjelasticdiscoursecleverappsschacmiincogoornetonlineshopcogoorgmilcomwebnicnetintedugovbiznametestcoorgmilcomnomnetedugovorangecloudpersoindorgcomfinnatnetgovensmincomtourismintlinfox0611oyaorgmilcomnetedugovquickconnectvpnplusnettprequalifymeaddrmyaddrntdllwadlnctvavdrk12orgmilpolbeltelcomwebgennetedutskkepgovbbsbiznameinfocoorgmilcompronetedugovbiznameinfobetter-thanworse-thansakurafromdyndnson-the-webmymailerorgmilurlcomneteduidvgovmydnsgameclubebizmeneacsccogotvorhotelmilmobiinfovodteiflgplkmsmsbcckhincndnvncoztltmkckppzpdprvcvkvlvcrkrkscxuzchernovtsyrivneyaltaodesavolynrovnolutskltdinforgcomnetedugovbizvinnicazhitomirternopilpoltavakropyvnytskyizaporizhzhiasevastopolsebastopoluzhgoroduzhhorodkharkovkharkivvinnytsiakhmelnytskyizaporizhzhecrimeaodessazhytomyrnikolaevcherkassydonetskluganskluhanskkirovogradivano-frankivskchernivtsikrymkievkyivlvivsumyzakarpattiamykolaivcherkasychernigovkhersonchernihivdnipropetrovskdnepropetrovskkhmelnitskiyneacsccogoorusorgmilcomedugovvmdhmyspreadshopadimono-ipbarsybytemarkbarsyonlinelayershiftnh-servretrosnubapicampaignservicelugaffinitylotteryweeklylotteryraffleentrygluglugsmeaccoindependent-inquestnimsitecopropymntltdorgplcschnetgovnhsbarsyindependent-commissionindependent-reviewpolicepublic-inquiryindependent-panelconnhospindependent-inquiryroyal-commissionoraclegovcloudappscck12libccphxcclibpvtparochchtrcck12libcceatonk12coglibtecgendstmusann-arborwashtenawcck12glghcck12sealibforksolympiabainbridge-islkeyporthoquiamyarrow-pointcentraliaport-townsendsequimport-ludlowrentonsilverdalebremertonredmondsheltonbellevueport-orchardport-angeleskingstonchehalisaberdeengig-harborseattlepoulsboidmdndsddemenegacalamaiavawapailalflnmdcncscohnhmihiviwiriinmntnmocoutvtctmtgunjokakwvnvprarorasmskstxwynykyazisadninsnngosrvis-bymircloudservernamepointtoenscaledland-4-salefreeddnsstuff-4-saleazure-apinoipcloudnsgolffanheliohostazurewebsitesgvorgmilcomgubneteducoorgcomnetd0egvorgmilcomnetedugovmydnsiacostoree12orgmilcomnomwebgobbibrectecnetintedugovraremprendefirminfoartseducok12orgcomnethidnsidacaiiosonlahanamhanoicamauhueorgcompronetintedugovbizbacninhtayninhhoabinhnamdinhtravinhhaiphongvinhlonghaiduongquangnamquangtrithuathienhuequangninhbacgianghaugiangquangbinhsoctrangbentrethanhphohochiminhdanangkontumhatinhkhanhhoathanhhoahealthgialailaocaiyenbaibackanngheanlonganphuyenphuthocanthodaklakdongnainameinfovinhphucdongthapkiengiangtiengiangquangngailaichaulangsonlamdongdaknonghagiangangiangcaobangbinhduongninhthuanbinhthuanbaclieuthaibinhninhbinhbinhdinhtuyenquanghungyenbaria-vungtauthainguyendienbienbinhphuocschbizputerimagine-proxyorgcomnetedugovcloud66advisormypetsdyndnsxn--8dbq2axn--4dbgdty6cxn--5dbhl8dxn--hebda8bxn--80auxn--d1atxn--c1avgxn--o1acxn--o1achxn--90azhxn--55qx5dxn--uc0atvxn--od0algxn--wcvs22dxn--gmqw5axn--mxtq1mxn--12c1fe0brxn--h3cuzk1dixn--12co0c3b4evaxn--12cfi8ixb8lxn--o3cyx2axn--m3ch0j3axn--j1adpxn--90amcxn--90a1afxn--h1ahnxn--j1ael8bxn--h1alizxn--c1avgxn--j1aefxn--80aaa0cvacxn--41acaffeineexeopentunnelbotdashtelebitorgtmaccoagricorgmilnomwebnicngonetaltedugovlawnisschoolgrondaraccoorgmilcomschnetedugovbizinfoprg1-zeropstritonstackitlimazeropsaccoorgmilgovяспборгкоммскбизмирсамаракрымсочиакодпроргобрупрצהלממשלישובאקדמיהองค์กรธุรกิจรัฐบาลศึกษาทหารเน็ต教育網絡組織公司政府個人닷넷한국澳门新闻澳門联通家電嘉里招聘通販닷컴삼성コムგეбгрфеюadcdbdgdidmdsdtdaebedeeegeiejekemenepereseveyegabacalamanauavapaqasazacfbfafgfnfpfwftfbgcgagggegkgngmgsgpgvgtgugilmlnlalclglplsltlhmimjmkmmmomambmcmdmfmgmzmpmsmtmgbbblbsbecccacnclcmcvctcscmhkhghchbhthphshlinikifigiaibicivisikninhnmncnbngnsnpnvntnjoionomobocoaofodorosotoptstttytatbtetgtithtmtltrusuvuaucueuguhulumunufjdjbjtjsjlkmkhkfkdkcktkukskpkgpmpnpkpjpgqaqmqiqsvtvcvbvmvlvrwpwtwzwbwcwawgwkwmwtrsrprgrfrercrbrarnrmrlrkrirhrwsusrssspsgsesbsaslsmsissxmxaxcxuypysylymykygybycyuztzsznzmzkzdzczbzazελευ世界台灣购物公益点看臺灣网络書籍在线网站手机机构大拿游戏信息台湾谷歌慈善商标香港中国餐厅网址中國商城食品微博政务移动集团公司八卦商店健康网店政府时尚佛山中信娱乐广东企业homedepotengineeringاماراتrepublicankuokgroupversicherungchannelcitadelxn--pgbs0dhxn--b4w605ferdstatebankwebsitexn--mgb9awbf亚马逊淡马锡alibabaxn--ngbc5azdxn--mgbbh1axn--45br5cyltoshibabuildworldcloudtradeguideplacespacedancemoviephoneprimesmilebiblestyleappleazurestoreskypegripexn--l1accdrivelottehorsehouseleasechasereisestadahondaomegaaetnaamicaninjanokiamediadeltavodkaedekaosakapizzaslingemailgmailtirolshelltmallfinallegaltotalhotelamfamforumrehabmusicciticricohcoachwatchboschearthfaithirishmiamiarchidubaiguccipraxiみんなストアセールcanonsalononionnikonepsonkoelngreensevencrownikanoradioaudioweiboglobopromogalloyahoociscorodeovideomangobingotokyovolvolottokyotophotosmartsportquesttrusthyattjetztadultcymrubaidutushuxn--kprw13dubankclickblackmerckgroupsharpcheapnowtvxn--h2brj9cקוםհայоргсрбмонкомбелмкдқазрусукрمصرقطرعربكومdadcfdmedwedredphdthdbidpidkrdmsdltdiceonewmeglemoerwecfageacbanbambaaaammakianraspacpaaxawtfbcgaegongingaigvigorgdogdhlmilrilonlaolloluoljllcalgalnflafltelsrlfrllplkimibmcamcombommomifmabbjcbscbcabnabtabmlbpubabcbbcnecincpncllcstcwtcpwcnyckfhbzhovhmoiskiobisbitcifyituipinvinwinxincbnbcnmanfangdnmenrenkpnmtnyunrunfununobiojioriohbogmofooboooooacoecoceongoproartistottnttbbtcateatlatvetpetbetnethktmitfitintjothotgotdotbotprueduicujnjyouinknhktdkappsapgapmapdnptopgopllpjmpzipvipripesqtrvdtvitvdevmovgovhivnrwlawsewnewbmwwownowhowdvrftrmtrsfrbarcartvscrseusawsupsubssbsadsddsldssasbmsmlsxxxboxfoxgmxtjxsextaxbuyflydiysoyjoyskypaydaygayxyzanzbizwebersenerpokerlameractortatarsolarລາວคอมไทยtourslocusnexuslexusgiftsbeatsboatspartspressglassswissकॉमनेटtiresgivescodeshomesgamestunesshoescardswalesloansvegastoolsdealsautosparisファッションworkssucksrocksxeroxforexfedexpartylillymoneystudyrugbytoraytoday中文网xn--unup4y天主教飞利浦新加坡enterprises我爱你嘉里大酒店christmasxn--fct429kholdingsxn--8y0a063axn--mgbx4cd0ablifestyleabogadoallstatenetbankكاثوليكxn--s9brj9cxn--gk3at1ebestbuycharityxn--55qx5dmicrosoftpropertybasketballhomegoodscorsicajewelrygallerygrocerysurgerycountrybrusselsverisignferreroxn--czr694bhdfcbankcommbanksoftbankپاكستانپاکستانnextdirectالسعوديهالعليانxn--h2brj9c8cxn--80adxhksshikshaxn--mgbai9azgqp6jcuisinellabarclayscatholicxn--kpry57dcompanyxn--xhq521bblackfridayxn--mgba3a3ejtsandvikxn--d1acj3bacademydownloadمليسياxn--j1amhxn--w4r85el8fhu5dnraipirangaathletaxn--fhbeixn--mgbqly7cvafrzuerichxn--c2br7gஇலங்கைcontractorsxn--io0a7igraphicsinsurancetemasekxn--xkc2al3hye2amotorcyclesphotographydirectoryplumbingxn--vhquvclothingtrainingcleaningwilliamhilllightingxn--mgba3a4f16ashoppingcateringeducationokinawapicturesventuresproductionsxn--9et52uwalmartഭാരതംsupportrealestatecapitalonexn--nqv7fs00emaauspostfloristdentistxn--qxamgodaddybradescobargainsmitsubishikerryhotelsxn--9dbq2axn--3pxu8kimmobilienxn--fjq720axn--mgbtx2bholidaymckinseymadridbusinessbuildershelsinkixn--4gbrimмоскваالسعودیةcoffeedegreelacaixapartnersalsaceofficeabbvievoyageorangegeorgeonlinechromemobilekindlegoogleoraclecircleschulesecureinsurexn--mgba7c0bbn0aestatexn--mgbc0a9azcgcruisehangoutxn--vuq861bxn--42c2d9arexrothfirestoneuniversityxn--nnx388alifeinsuranceextraspaceонлайнvermögensberatersoftwarexn--fiqs8sxn--mgbab2bdxn--w4rs40ltiendaभारतम्africatoyotaotsukasakuracameracreditcardnagoyaconsultingnetworkjunipertheatermonsterprogressivepioneerxn--55qw42gracingdatingvotingvikinglivinggivingxn--bck1b9a5dre4cbrotherweatherjoburgفلسطينlplfinancialxn--clchc0ea0b2g2a9gcdfutbolschoolsocialglobaldentalwoodsidechanelairtelmatteltravelrealtorwebcamstreamభారత్unicomalstomxn--nodexn--6frz82gmuseumfurniturexn--rvc1e0am3exn--mix891faccenturexn--11b4c3dismailineustardiscountquebeccomsecclinicservicesxn--y9a3aqxn--c1avgswatchchurchsearchالاردنmarketingcontacthealthmonashshoujisanofitaipeiamericanexpresssuzukiアマゾンクラウドポイントbhartiグーグルxn--mgberp4a5d4armemorialxn--1qqw23alondonmormoninstitutevisionbostonnortoncouponmaisonamazonvirginberlindesigndurbanolayannissananquanxihuanhitachikaufengardenreisenbayerntechnologydatsunxn--90a3aclatinocasinostudiophysioxn--ngbe9e0apharmacytattootaobaoaramcoexpertreportabbottdirectselectimamatfairwindspictettargetmarketintuittravelersinsurancecreditdupontryukyusuppliesxn--tckwebnpparibasschmidtmerckmsdyodobashirestaurantbridgestonecricketxn--fpcrj9c3dbostikbroadwayattorneylefrakemerckxn--fiq228c5hscareersfarmerswinnersflowersxn--wgbh1cguitarsxn--54b7fta0ccxn--p1acfmakeupgalluplandroverxn--kcrx77d1x4agoldpointbauhausxn--mgbayh7gpahiphopplaystationxn--mgba3a4fraxn--eckvdtc9dhyundaixn--gckr3f0fistanbulticketsmarketsflightschintaireviewsxn--3e0b707ewindowsxn--fiqz9sfinancialxn--fzys8d69uvgmابوظبيdiscoverreviewবাংলাxn--5su34j936bgsgmoscowobserverapartmentsдетиارامكوсайтeurovisionxn--i1b6b1a6a2exn--xkc2dl3a5ee0hتونسموقعبارتڀارتشبكةعمانبيتكعراقreadkredbondlandbandfundfoodprodgoldfordtubecafesafelifeggeeieeefreefagepagegugezonewinememenamegamesaleablebikenikelikecarecbreherefiresaveloveliveblueartedatesitevotecaseluxebofamodaltdaasdatiaayogasinavanashiaasiajavabbvatevavivadatazaraarpacasavisasncfprofmaifsurfgolfdvagsongbingpingwangkpmggoogblogpohlfailcooldellcalldeallidlsarlfilmteamroomfarmimdbarabclubhdfcicbchsbcgmbhrichtechfishdishcashminiernikddiaudiwikimobitaxicitikiwidesiqponskinloanakdnwienopenporncerntownimmolimoolloinfonicofidolegosaxozeroaerovivoautovotomotofastbestresthostpostnextlgbtchatseatgiftmeetdietreitmintrentgentspotscotguruitausohumenucyoubanklinkpinkdclktalksilkbookseekworkrsvpaarpjeepshopcoophelpcamppccwshowbeerstarruhrflirweirhaircarsparsjprshausplusnewstipstoysjobskidsfanspicsdocsxboxamexsexynavycitysonyarmyallybabyplaydeliverybuzzgbizlamborghiniphilipsලංකාಭಾರತfitnessexpresslanxesspfizercenterwalterlawyersoccercareerkosherbrokerlockerdealerdoctorauthorxn--mgbqly7c0a67fbcvermögensberatungjaguarxn--pssy2uxn--hxt814eflickrrepairrogersairbusxn--mgbai9a5eva00beventsyachtsxn--t60b56aভাৰতভারতभारतभारोतviajeshermeshughesxn--j1aefसंगठनvillasଭାରତclaimshotelsભારતzapposphotosjuegoscondostatamotorsgratistennisਭਾਰਤtkmaxxtjmaxxschaeffleryandexxn--80aswgrealtysafetybeautyluxuryxn--3ds443gsupplyfamilyxn--o3cw4hhockeysydneyxn--90aenissayalipayenergycomputeragencyxn--rovu88b電訊盈科xn--gecrj9cstatefarmaccountantaquarelleolayangroup香格里拉xn--p1ai组织机构xn--1ck2e1bxn--mgbt3dhdschwarzموريتانياabudhabinowruzkomatsufujitsuhospitalxn--80asehdbxn--mgbtf8flxn--j6w193gxn--yfro4i67oprudentialxn--flw351ecruisescoursesrecipesxn--e1a4cferrarixn--ses554gxn--wgbl6awatchesstaplessinglesxn--mgbcpq6gpa1axn--otu796dpropertiescreditunionxn--mgbah1a3hjkrdstockholmhisamitsuالسعوديةstcgroupdomainsoriginscouponsbloombergclubmedfroganslimitedxn--80aqecdr1aexposedinternationalequipmentbarclaycardxn--q7ce6axn--mgbi4ecexpprotectionassociatesconstructionxn--cck2b3bxn--45q11candroidfoundationישראלxn--mgbca7dzdocliniqueboutiqueengineerxn--qxa6asystemsfirmdalefashionauctionxn--nqv7finfinitirentalsreliancetradingweddingfishinghostinggentingbookingcookingxn--3hcrj9cgraingerxn--czrs0tdemocratsamsungyokohamaxn--h2breg3evexn--nyqy26alundbeckmelbournevacationssolutionsfrontierxn--vermgensberatung-pwbmanagementxn--cg4bkixn--mgb2ddeslincolnhamburgsandvikcoromantblockbusterairforcebarefootxn--4dbrk0ceinvestmentsfeedbackcommunityxn--ngbrxالبحرينdiamondsamsterdamhealthcareredumbrellaxn--mxtq1mxn--2scrj9cagakhanxn--mgbpl2fhкатоликcaravanசிங்கப்பூர்richardlimortgageamericanfamilyxn--fzc2c9e2cscholarshipssaarlandxn--imr513nvlaanderensamsclubgoodyearkitchenஇந்தியாweatherchannelallfinanzxn--kput3iالسعودیۃxn--90aisxn--efvy88hالجزائرxn--mgbaam7a8hexchangejpmorganxn--tiq49xqyjfidelitysecurityxn--mk1bu44cwanggouxn--fiq64bxn--6qq986b3xlxn--mgbbh1a71exn--80ao21amarshallsxn--5tzm5gtravelerspanasoniclatrobeyoutubeaccountantsxn--rhqv96gxn--cckwcxetdanalyticsxn--ygbi2ammxبازاربھارتسوريةorganicfreseniusسورياxn--9krt00axn--qcka1pmcxn--jlq480n2rgdeloittesciencefinancexn--jvr189mxn--30rr7yhomesensehotmailbaseballfootballleclercboehringerxn--q9jyb4cxn--mix082fاليمنهمراهpolitieسودانايرانایرانnetflixyamaxunxn--lgbbat1ad8jcollegestoragecapetowncolognekerrypropertiesxn--mgbgu82axn--ogbpf8flxn--czru2dwhoswhociprianilasallexn--g2xx48cforsalebanamexaudiblexn--vermgensberater-ctbxn--zfr164bericssonvanguardxn--45brj9cindustriestheatremarriottxn--3bst00mcomparexn--mgberp4a5d4a87gcapitaldigitalالمغربbarcelonashangrilaxn--d1alfcalvinkleinwwwcitysapporokawasakinagoyasendaikobekitakyushuyokohamackjp",vz=621,xz=625,a2=ls.length,n2=eu.length,i2=new Uint32Array(n2),Hc=new Uint32Array(n2),Lp=new Int32Array(a2).fill(-1);for(let e=0,n=0;e<a2;e+=1)for(let s=Wc[e];s<Wc[e+1];s+=1){i2[s]=n;const r=n+eu[s];let u=5381;for(let f=r-1;f>=n;f-=1)u=u*33^Vp.charCodeAt(f);Hc[s]=u>>>0,eu[s]===1&&Vp.charCodeAt(n)===42&&(Lp[e]=s),n=r}let qn=-1,Up=0,Gp=0;function lb(e,n,s,r){if(eu[e]!==r)return!1;const u=i2[e];for(let f=0;f<r;f+=1)if(Vp.charCodeAt(u+f)!==n.charCodeAt(s+f))return!1;return!0}function cb(e,n,s,r,u){let f=Wc[e],g=Wc[e+1];for(;f<g;){const b=f+g>>>1,x=Hc[b];if(x<n)f=b+1;else if(x>n)g=b;else{for(let k=b;k>=f&&Hc[k]===n;k-=1)if(lb(k,s,r,u))return k;for(let k=b+1;k<g&&Hc[k]===n;k+=1)if(lb(k,s,r,u))return k;return-1}}return-1}function ub(e,n,s){let r=n,u=e.length,f=5381;qn=-1;for(let b=e.length-1;b>=0;b-=1){const x=e.charCodeAt(b);if(x===46){const k=b+1;let S=cb(r,f>>>0,e,k,u-k);if(S===-1&&(S=Lp[r]),S===-1)return qn!==-1;r=rb[S],(ls[r]&s)!==0&&(qn=r,Up=k,Gp=u),u=b,f=5381}else f=f*33^x}let g=cb(r,f>>>0,e,0,u);return g===-1&&(g=Lp[r]),g!==-1&&(r=rb[g],(ls[r]&s)!==0&&(qn=r,Up=0,Gp=u)),qn!==-1}function s2(e,n,s){if(bz(e,n,s))return;const r=(n.allowPrivateDomains?2:0)|(n.allowIcannDomains?1:0);if(ub(e,xz,r)){s.isIcann=(ls[qn]&1)!==0,s.isPrivate=(ls[qn]&2)!==0,s.publicSuffix=e.slice(Gp+1);return}if(ub(e,vz,r)){s.isIcann=(ls[qn]&1)!==0,s.isPrivate=(ls[qn]&2)!==0,s.publicSuffix=e.slice(Up);return}s.isIcann=!1,s.isPrivate=!1;const u=e.lastIndexOf(".");s.publicSuffix=u===-1?e:e.slice(u+1)}const tu=yz();function kz(e,n){return e2(tu),t2(e,0,s2,n,tu).hostname}function wz(e,n){return e2(tu),t2(e,5,s2,n,tu).domainWithoutSuffix}const Sz={allowPrivateDomains:!0};new nz({fuzzyLink:!0,fuzzyEmail:!1}).tlds(iz);function gu(e){if(e==null)return null;const n=e.trim();if(!n)return null;const s=kz(n);return s?s.replace(/^www\./i,"").toLowerCase():null}function jz(e){return e==null||e.trim()===""?"":wz(e,Sz)?.toLowerCase()??""}const Az=new Intl.Segmenter("en",{granularity:"word"}),Cz=/[\p{L}\p{N}]+/gu,Nz=/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}]/u,_z=new RegExp("\\P{ASCII}","u");function zz(e){if(!_z.test(e))return e;let n="";for(const s of e){if(s.charCodeAt(0)<128){n+=s;continue}const r=s.normalize("NFD"),u=r[0];n+=r.length>1&&Nz.test(u)?u:s}return n}function Dz(e){return zz(e.normalize("NFKC")).toLocaleLowerCase("en")}function Ez(e){const n=[];for(const s of Az.segment(e))if(s.isWordLike)for(const r of s.segment.match(Cz)??[])n.push(r);return n}function Tz(e){return Ez(Dz(e))}function cs(e){return Tz(e).join("")}const o2=A(["cli","api","config-file"]);function Rz(e){const n=new Set,s=new Set;for(const r of e){if(n.has(r.label)){s.add(r.label);continue}n.add(r.label)}return[...s]}function Oz(e,n){return n?e.some(s=>s.label===n):!0}const Bz=p({displayName:o().min(1),canonicalDomain:o().min(1),ownedDomains:y(o().min(1)).optional(),aliases:y(o()).optional(),country:o().length(2),language:o().min(2),tags:y(o()).optional(),labels:Ie(o(),o()).optional(),providers:y(ft).optional(),providerModels:C0.optional(),locations:y(la).optional(),defaultLocation:o().nullable().optional(),measurement:_0.optional(),autoExtractBacklinks:_().optional(),configSource:o2.optional()});Bz.extend({name:o().trim().min(1).max(120)});const qz=p({id:o(),name:o(),displayName:o().optional(),canonicalDomain:o(),ownedDomains:y(o()).default([]),aliases:y(o()).default([]),country:o().length(2),language:o().min(2),tags:y(o()).default([]),labels:Ie(o(),o()).default({}),providers:y(o()).default([]),providerModels:C0.default({}),locations:y(la).default([]),defaultLocation:o().nullable().optional(),measurement:_0.default(Jx),autoExtractBacklinks:_().default(!1),configSource:o2.default("cli"),configRevision:m().int().positive().default(1),createdAt:o().optional(),updatedAt:o().optional()});p({id:o(),query:o(),createdAt:o()});p({id:o(),keyword:o(),createdAt:o()});p({queries:y(o().trim().min(1)).min(1)});p({keywords:y(o().trim().min(1)).min(1)});p({provider:ft,count:m().int().min(1).max(20).optional()});p({id:o(),domain:o(),createdAt:o()});p({competitors:y(o().trim().min(1)).min(1)});function $p(e){return gu(e)??e.trim().toLowerCase().replace(/^www\./,"")}function Mz(e){const n=[e.canonicalDomain,...e.ownedDomains??[]],s=new Set,r=[];for(const u of n){const f=u.trim();if(!f)continue;const g=$p(f);s.has(g)||(s.add(g),r.push(f))}return r}const Pz=p({name:o().min(1).max(63).regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,{message:"Name must be a lowercase slug (letters, numbers, hyphens)"}),labels:Ie(o(),o()).optional().default({})}),Iz=p({preset:o().optional(),cron:o().optional(),timezone:o().optional().default("UTC"),providers:y(ft).optional().default([]),enabled:_().optional()}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'}).optional(),Vz=p({channel:O("webhook"),url:o().url(),events:y(N0).min(1)}),Lz=p({gsc:p({propertyUrl:o()}).optional(),syncSchedule:p({preset:o().optional(),cron:o().optional()}).optional()}).optional(),db=y(o().min(1)),Uz=p({displayName:o().min(1),canonicalDomain:o().min(1),ownedDomains:y(o().min(1)).optional().default([]),aliases:y(o().min(1)).optional().default([]),country:o().length(2),language:o().min(2),queries:db.optional(),keywords:db.optional(),competitors:y(o().min(1)).optional().default([]),providers:y(ft).optional().default([]),providerModels:C0.optional().default({}),locations:y(la).optional().default([]),defaultLocation:o().optional(),measurement:_0.optional().default(Jx),schedule:Iz,notifications:y(Vz).optional().default([]),google:Lz,autoExtractBacklinks:_().optional().default(!1)}).superRefine((e,n)=>{e.queries!==void 0&&e.keywords!==void 0&&n.addIssue({code:"custom",message:"Use spec.queries; spec.keywords is accepted only as a legacy alias when spec.queries is omitted",path:["keywords"]});const s=Rz(e.locations);s.length>0&&n.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${s.join(", ")}`,path:["locations"]}),Oz(e.locations,e.defaultLocation)||n.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})});p({apiVersion:O("canonry/v1"),kind:O("Project"),metadata:Pz,spec:Uz});const Gz=["branded","non-brand"],$z=A(Gz),Hz=A(["all","branded","non-brand"]),Kz=2,Qz=o().regex(/^[a-f0-9]{64}$/),yu=o().trim().min(1).max(256),mb=A(["sensitive","insensitive"]),ke=o().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),Zz=o().trim().min(1).refine(e=>gu(e)!==null,"A competitor domain must be a valid hostname"),Fz=Be("kind",[p({kind:O("exact"),url:o().min(1),pathCase:mb}).strict(),p({kind:O("prefix"),host:o().min(1),pathPrefix:o().min(1),pathCase:mb}).strict(),p({kind:O("host"),host:o().min(1)}).strict()]),Yz=p({canonicalHost:o().min(1),ownedHosts:y(o().min(1)),names:y(o().min(1))}).strict(),Xz=p({projectBrand:Yz}).strict(),Jz=p({stableKey:ke,label:o().trim().min(1),aliases:y(o().min(1)),urlMatchers:y(Fz),mentionNotApplicable:_(),discoveryIdentity:o().min(1).nullable()}).strict(),r2=p({stableKey:ke,label:o().trim().min(1),domain:Zz,aliases:y(o().min(1))}).strict(),Wz=p({stableKey:ke,label:o().trim().min(1),targetKeys:y(ke),competitors:y(r2)}).strict(),e9=A(["manual","query-set","template","discovery"]),t9=p({source:e9,sourceId:o().min(1).nullable(),capturedAt:o().datetime()}).strict(),a9=p({queryId:yu,queryText:o().min(1),provenance:t9}).strict(),n9=p({providers:y(ft).min(1),models:Ie(ft,o().min(1)),location:la.nullable()}).strict(),i9=p({stableKey:o().min(1),queryId:yu,queryText:o().min(1),context:n9,expectedSnapshots:m().int().nonnegative()}).strict(),z0=$z,s9=p({targetKey:ke,queryId:yu,queryClass:z0,executionNodeKey:o().min(1)}).strict(),o9=p({executionNodeKey:o().min(1),targetKey:ke,queryId:yu}).strict(),bu=p({schemaVersion:O(Kz),identities:Xz,targets:y(Jz),groups:y(Wz),querySnapshots:y(a9),assignments:y(s9),executionNodes:y(i9),usageEdges:y(o9),compiledChecksum:Qz}).strict().superRefine((e,n)=>{const s=new Set;for(const u of e.executionNodes)s.has(u.stableKey)&&n.addIssue({code:Ye.custom,path:["executionNodes"],message:`Duplicate execution node key "${u.stableKey}"`}),s.add(u.stableKey);const r=new Set(e.targets.map(u=>u.stableKey));e.usageEdges.forEach((u,f)=>{s.has(u.executionNodeKey)||n.addIssue({code:Ye.custom,path:["usageEdges",f,"executionNodeKey"],message:`Usage edge references unknown execution node "${u.executionNodeKey}"`}),r.has(u.targetKey)||n.addIssue({code:Ye.custom,path:["usageEdges",f,"targetKey"],message:`Usage edge references unknown Target "${u.targetKey}"`})}),e.assignments.forEach((u,f)=>{r.has(u.targetKey)||n.addIssue({code:Ye.custom,path:["assignments",f,"targetKey"],message:`Assignment references unknown Target "${u.targetKey}"`})});for(const u of e.groups)for(const f of u.targetKeys)r.has(f)||n.addIssue({code:Ye.custom,path:["groups"],message:`Group "${u.stableKey}" references unknown Target "${f}"`})}),D0=100;function wo(e){return p({items:y(e),nextCursor:o().min(1).nullable(),totalEstimate:m().int().nonnegative().optional()}).strict()}const E0=A(["no_completed_run","plan_v1","no_population","evidence_incomplete","not_applicable"]),Lt=Be("state",[p({state:O("available"),value:m(),numerator:m().int().nonnegative().optional(),denominator:m().int().positive().optional()}).strict(),p({state:O("unavailable"),reason:E0}).strict()]),T0=A(["all","group","property"]),Wa=Hz,r9=A(["label-asc","label-desc","citationCoverage-asc","citationCoverage-desc","mentionCoverage-asc","mentionCoverage-desc"]),R0=A(["not_measured","queued","running","complete","partial","failed"]),l9=A(["run_measurement","review_flags","complete_setup","republish_setup","none"]);p({scope:T0,groupKey:ke.optional(),targetKey:ke.optional(),queryClass:Wa.optional(),provider:ft.optional(),location:o().trim().min(1).optional(),from:o().trim().min(1).optional(),to:o().trim().min(1).optional(),runId:o().trim().min(1).optional(),search:o().optional(),sort:r9.optional(),cursor:o().trim().min(1).optional(),limit:m().int().positive().max(D0).optional()}).strict();const c9=p({provider:ft,mentionCoverage:Lt,citationCoverage:Lt}).strict(),u9=p({bothSignals:m().int().nonnegative(),mentionedOnly:m().int().nonnegative(),citedOnly:m().int().nonnegative(),neither:m().int().nonnegative(),notMeasured:m().int().nonnegative(),total:m().int().nonnegative()}).strict(),d9=p({targetKey:ke,label:o().min(1),mentionCoverage:Lt,citationCoverage:Lt,providers:y(c9),flags:m().int().nonnegative()}).strict(),m9=p({kind:A(["project","competitor"]),stableKey:o().min(1),label:o().min(1),domain:o().min(1),credits:m().int().nonnegative(),share:m().min(0).max(1)}).strict(),p9=p({groupKey:ke,queryClass:O("non-brand"),denominator:m().int().positive(),entries:y(m9)}).strict();p({mode:A(["active-v1","active-v2"]),scope:p({kind:T0,key:o().min(1).optional(),label:o().min(1)}).strict(),queryClass:Wa,measurement:p({state:R0,currentRunId:o().min(1).optional(),displayedRunId:o().min(1).optional(),completed:m().int().nonnegative(),expected:m().int().nonnegative(),completedAt:o().datetime().optional(),includesHistoricalData:_().optional()}).strict(),nextAction:p({kind:l9,count:m().int().nonnegative().optional()}).strict(),metrics:p({propertiesMentioned:Lt,mentionCoverage:Lt,citationCoverage:Lt,brandPresence:Lt,sov:Lt.describe("Deprecated alias of brandPresence carrying the identical value. Remove once the browser migrates.")}).strict(),properties:wo(d9),outcomes:u9,flags:p({total:m().int().nonnegative()}).strict(),namedShareOfVoice:p9.optional()}).strict();const l2=A(["sources","answers"]),h9=l2.enum;h9.sources;p({targetKey:ke,queryClass:Wa.optional(),provider:ft.optional(),location:o().trim().min(1).optional(),runId:o().trim().min(1).optional(),shape:l2.optional(),cursor:o().trim().min(1).optional(),limit:m().int().positive().max(D0).optional()}).strict();const c2=1,il=m().int().positive(),Ut=o().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),sl=o().trim().min(1).max(256),pb=A(["sensitive","insensitive"]);function au(e){const n=gu(e);if(!n)throw new Error(`Invalid measurement host: ${e}`);return n}function f9(e){const n=[];let s=!1;for(let r=0;r<e.length;r++){const u=e[r];u==="/"?(s||n.push(u),s=!0):(n.push(u),s=!1)}for(;n.length>1&&n.at(-1)==="/";)n.pop();return n.length?n.join(""):"/"}function hb(e){try{return decodeURI(e).normalize("NFC").toLowerCase()}catch{return e.normalize("NFC").toLowerCase()}}function u2(e){const n=new URL(`https://measurement.invalid${e}`).pathname;return f9(n.replace(/%[0-9a-f]{2}/gi,s=>s.toUpperCase()))}function Hp(e){const n=e.trim();if(!n||n.includes("?")||n.includes("#")||n.includes("://")||n.includes("\\"))throw new Error(`Invalid measurement path prefix: ${e}`);const s=n.startsWith("/")?n:`/${n}`;for(const r of s.split("/")){let u;try{u=decodeURIComponent(r)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}if(u==="."||u==="..")throw new Error(`Invalid measurement path prefix: ${e}`)}try{return u2(s)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}}function g9(e){const n=/^[a-z][a-z0-9+.-]*:\/\/[^/?#]*/i.exec(e);if(!n)throw new Error(`Invalid exact measurement URL: ${e}`);return e.slice(n[0].length).split(/[?#]/,1)[0]||"/"}function fb(e){const n=e.trim();if(!n||n.includes("\\"))throw new Error(`Invalid exact measurement URL: ${e}`);let s;try{s=new URL(n)}catch{throw new Error(`Invalid exact measurement URL: ${e}`)}if(s.protocol!=="http:"&&s.protocol!=="https:"||s.username||s.password||s.port||s.search||s.hash)throw new Error(`Invalid exact measurement URL: ${e}`);const r=au(s.hostname),u=Hp(g9(n));return`https://${r}${u}`}const Xr=o().trim().min(1).refine(e=>{try{return au(e),!0}catch{return!1}},"A target URL matcher host must be a valid hostname").overwrite(e=>au(e)),y9=o().trim().min(1).refine(e=>{try{return Hp(e),!0}catch{return!1}},"A target URL matcher pathPrefix must be an absolute path without query or fragment").overwrite(e=>Hp(e)),b9=o().trim().min(1).refine(e=>{try{return fb(e),!0}catch{return!1}},"A target exact matcher must be an HTTP(S) URL without credentials, port, query, or fragment").overwrite(e=>fb(e)),v9=Be("kind",[p({kind:O("exact"),url:b9,pathCase:pb}).strict(),p({kind:O("prefix"),host:Xr,pathPrefix:y9,pathCase:pb}).strict(),p({kind:O("host"),host:Xr}).strict()]),d2=o().trim().min(1).max(256).refine(e=>cs(e).length>0,"A target alias must contain mention text"),x9=Ie(o().trim().min(1),o()),k9=Xr,m2=p({stableKey:Ut,label:o().trim().min(1),urls:y(v9).min(1),aliases:y(d2),metadata:x9.optional()}).strict(),O0=p({stableKey:Ut,label:o().trim().min(1),targetKeys:y(Ut).min(1),competitors:y(k9).optional()}).strict(),p2=p({targetKey:Ut,queryIds:y(sl).min(1),context:la.nullable().optional()}).strict();function w9(e,n){return e<n?-1:e>n?1:0}function S9(e,n=s=>s){const s=new Set,r=new Set;for(const u of e){const f=n(u);s.has(f)&&r.add(f),s.add(f)}return r}function up(e,n,s,r,u){for(const f of S9(n,u))e.addIssue({code:"custom",path:[...s],message:`Duplicate ${r}: ${f}`})}function gb(e){if(e.kind==="host")return{host:e.host,pathname:null};if(e.kind==="prefix")return{host:e.host,pathname:e.pathPrefix};const n=new URL(e.url);return{host:au(n.hostname),pathname:u2(n.pathname||"/")}}function j9(e,n,s,r){return e===s||(n==="insensitive"||r==="insensitive")&&hb(e)===hb(s)}function A9(e,n){if(e.kind!==n.kind)return!1;const s=gb(e),r=gb(n);return s.host!==r.host?!1:e.kind==="host"||n.kind==="host"?!0:j9(s.pathname,e.pathCase,r.pathname,n.pathCase)}function C9(e){const n=new Set;return[...e].sort(w9).filter(s=>{const r=cs(s);return n.has(r)?!1:(n.add(r),!0)})}const h2=p({schemaVersion:O(c2),targets:y(m2).min(1),groups:y(O0).optional(),targetQuerySelections:y(p2).optional()}).strict().superRefine((e,n)=>{const s=e.groups??[],r=e.targetQuerySelections??[];up(n,e.targets.map(x=>x.stableKey),["targets"],"target stable key"),up(n,s.map(x=>x.stableKey),["groups"],"group stable key");const u=new Set(e.targets.map(x=>x.stableKey)),f=new Set(s.map(x=>x.stableKey));for(const x of u)f.has(x)&&n.addIssue({code:"custom",path:["groups"],message:`Target and group stable keys must be globally unique: ${x}`});const g=new Map,b=[];e.targets.forEach((x,k)=>{for(const S of C9(x.aliases)){const C=cs(S),j=g.get(C);j&&j!==x.stableKey&&n.addIssue({code:"custom",path:["targets",k,"aliases"],message:`Target alias is already assigned to target ${j}: ${S}`}),g.set(C,x.stableKey)}x.urls.forEach((S,C)=>{b.find(E=>E.targetKey!==x.stableKey&&A9(E.matcher,S))&&n.addIssue({code:"custom",path:["targets",k,"urls",C],message:"Target URL matcher has an equal-specificity cross-target tie"}),b.push({targetKey:x.stableKey,matcher:S})})}),s.forEach((x,k)=>{up(n,x.targetKeys,["groups",k,"targetKeys"],"group target key");for(let S=0;S<x.targetKeys.length;S++){const C=x.targetKeys[S];u.has(C)||n.addIssue({code:"custom",path:["groups",k,"targetKeys",S],message:`Unknown target: ${C}`})}}),r.forEach((x,k)=>{u.has(x.targetKey)||n.addIssue({code:"custom",path:["targetQuerySelections",k,"targetKey"],message:`Unknown target: ${x.targetKey}`})})});h2.transform(e=>({...e,groups:e.groups??[],targetQuerySelections:e.targetQuerySelections??[]}));p({expectedActiveRevision:il.nullable(),plan:h2}).strict();const N9=p({queryId:sl,queryText:o().min(1)}).strict(),B0=p({stableKey:o().min(1),queryText:o().min(1),context:la.nullable(),expectedSnapshots:m().int().nonnegative()}).strict(),_9=p({kind:O("baseline"),executionNodeKey:o().min(1),queryId:sl}).strict(),z9=p({kind:O("target"),executionNodeKey:o().min(1),queryId:sl,targetKey:Ut}).strict(),Kp=Be("kind",[_9,z9]),f2=p({code:O("target-alias-prefix-overlap"),message:o().min(1),targetKeys:y(Ut).min(1),aliases:y(o().min(1)).min(1)}).strict(),g2=m2.extend({mentionNotApplicable:_()}),y2=p({schemaVersion:O(c2),defaultContext:la.nullable(),effectiveOwnedHosts:y(Xr),projectCanonicalHost:Xr,projectBrandNames:y(d2),targets:y(g2),groups:y(O0),targetQuerySelections:y(p2),querySnapshots:y(N9),executionNodes:y(B0),usageEdges:y(Kp),warnings:y(f2)}).strict(),D9=y2,b2=Be("schemaVersion",[y2,bu]),q0=o().regex(/^[a-f0-9]{64}$/),M0=o().datetime(),v2=p({schemaVersion:O(1),providers:y(o().min(1)).min(1),models:Ie(o().min(1),o().min(1)),checksum:o().regex(/^[a-f0-9]{64}$/)}).strict(),E9=p({groups:y(Ut).optional(),targets:y(Ut).optional()}).strict(),T9=p({groups:y(Ut),targets:y(Ut),queries:y(o().min(1)),resolvedTargets:y(Ut)}).strict().superRefine((e,n)=>{e.resolvedTargets.length===0&&e.queries.length===0&&n.addIssue({code:"custom",path:["resolvedTargets"],message:"A recorded scope must name something it measured"})});p({stableKey:Ut,retiredAt:o().datetime()});p({active:p({revision:il,checksum:q0,createdAt:M0,plan:b2}).nullable()});p({versions:y(p({revision:il,checksum:q0,createdAt:M0,active:_()}))});p({version:p({revision:il,checksum:q0,createdAt:M0,active:_(),plan:b2})});const Kc=p({targets:m().int(),groups:m().int(),queries:m().int(),executionNodes:m().int(),usageEdges:m().int(),baselineEdges:m().int(),targetEdges:m().int(),dedupSavings:m().int()}).strict(),R9=A(["invalid-authoring","duplicate-identity","unknown-target","unknown-query","invalid-project-context","unowned-target-url","owned-competitor","target-query-context-conflict","target-url-ownership-tie","target-alias-cross-target-collision","target-alias-project-brand-collision","target-alias-prefix-overlap"]),x2=p({id:R9,severity:A(["fail","warn"]),message:o().min(1),path:y(Ve([o(),m().int()]))}).strict(),O9=p({baseline:m().int().nonnegative(),target:m().int().nonnegative()}).strict(),k2=p({ok:O(!0),checks:y(x2),executionNodes:y(B0),dedupSaved:m().int().nonnegative(),usageEdges:O9,estCostUsd:ce(),plan:D9,warnings:y(f2),counts:Kc}).strict(),w2=p({ok:O(!1),checks:y(x2).min(1),executionNodes:y(B0).length(0),dedupSaved:O(0),usageEdges:p({baseline:O(0),target:O(0)}).strict(),estCostUsd:ce()}).strict();Be("ok",[k2,w2]);const Rc=p({targetKey:Ut,context:la.nullable(),queryIds:y(sl)}).strict();function yb(e){return p({added:y(e),removed:y(e),changed:y(p({stableKey:Ut,before:e,after:e}).strict()),unchanged:y(Ut)}).strict()}const B9=k2.extend({diff:p({activeRevision:il.nullable(),targets:yb(g2),groups:yb(O0),querySelections:p({added:y(Rc),removed:y(Rc),changed:y(p({targetKey:Ut,before:Rc,after:Rc}).strict()),unchanged:y(p({targetKey:Ut,context:la.nullable()}).strict())}).strict(),execution:p({addedNodeKeys:y(o().min(1)),removedNodeKeys:y(o().min(1)),addedUsageEdges:y(Kp),removedUsageEdges:y(Kp),counts:p({before:Kc.nullable(),after:Kc,delta:Kc.nullable()}).strict()}).strict()}).strict()}).strict(),q9=w2.extend({diff:ce()}).strict();Be("ok",[B9,q9]);const vu=A(["complete","partial","failed","unsupported"]);vu.enum;A(["proposed","alias","shared","unmatched","excluded"]);A(["primary-match","exact-slug-match","excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"]);const M9=A(["invalid-url","unowned-host","duplicate-url","url-cap-reached"]),P9=p({kind:A(["exact","prefix","suffix","contains"]),value:o().trim().min(1)}).strict(),bb=p({host:o().trim().min(1),pathTemplate:o().trim().min(1)}).strict(),P0=p({primary:bb,aliases:y(bb).optional(),excludedSlugSuffixes:y(o().trim().min(1)).optional(),excludedSlugPatterns:y(P9).optional()}).strict();p({sitemapUrl:o().url().refine(e=>{try{const n=new URL(e).protocol;return n==="http:"||n==="https:"}catch{return!1}},"Sitemap URL must use http or https"),rule:P0,maxUrls:m().int().positive().max(1e4).optional()}).strict();const dp=p({url:o(),canonicalUrl:o().nullable(),classification:A(["shared","unmatched","excluded"]),reason:A(["excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"])}).strict().superRefine((e,n)=>{({shared:["shared-path"],unmatched:["unmatched-path","alias-without-primary","unsupported-slug"],excluded:["excluded-slug"]})[e.classification].includes(e.reason)||n.addIssue({code:"custom",message:"Discovery classification and reason do not match"})}),I9=p({classification:O("proposed"),reason:O("primary-match"),stableKey:Ut,slug:o().trim().min(1),label:o().trim().min(1),primaryUrl:o().url(),aliasCoverageUrls:y(o().url())}).strict(),V9=p({classification:O("alias"),reason:O("exact-slug-match"),slug:o().trim().min(1),url:o().url(),targetStableKey:Ut}).strict(),L9=p({kind:M9,url:o(),canonicalUrl:o().nullable(),duplicateOf:o().optional()}).strict();p({proposed:y(I9),aliases:y(V9),shared:y(dp),unmatched:y(dp),excluded:y(dp),diagnostics:y(L9)}).strict().superRefine((e,n)=>{const s=[["shared",["shared"]],["unmatched",["unmatched"]],["excluded",["excluded"]]];for(const[r,u]of s)for(const f of e[r])u.includes(f.classification)||n.addIssue({code:"custom",path:[r],message:"Discovery item is in the wrong result bucket"})});const I0=A(["assigned","sibling","ownedUnmapped","external","ambiguous","invalid"]),S2=A(["baseline","target"]),j2=A(["incomplete","evidence-incomplete","no-population","aliasless","no-competitors","no-project-aliases"]),us=Ve([p({numerator:m().int().nonnegative(),denominator:m().int().positive(),rate:m().min(0).max(1)}).strict(),p({numerator:ce(),denominator:ce(),rate:ce(),reason:j2}).strict()]).superRefine((e,n)=>{e.numerator!==null&&e.numerator>e.denominator&&n.addIssue({code:"custom",path:["numerator"],message:"Rate numerator cannot exceed denominator"})}),U9=o().trim().min(1).overwrite(e=>e.toLocaleLowerCase("en")),G9=p({executionId:o().trim().min(1),queryText:o().trim().min(1),provider:U9,context:la.nullable(),requestedModel:o().trim().min(1).optional()}).strict();p({schemaVersion:O(1),expectedSlots:y(G9)}).strict().superRefine((e,n)=>{const s=new Set;for(const[r,u]of e.expectedSlots.entries()){const f=[u.executionId,u.provider].join("\0");s.has(f)&&n.addIssue({code:"custom",path:["expectedSlots",r],message:"Duplicate expected provider slot"}),s.add(f)}});const xu=p({executed:m().int().nonnegative(),expected:m().int().nonnegative(),complete:_(),sourceComplete:_(),sourceCompleteObservations:m().int().nonnegative(),answerComplete:_()}).strict(),vb=Ve([p({domain:o().trim().min(1),own:_(),presentIn:m().int().nonnegative(),of:m().int().positive()}).strict(),p({domain:o().trim().min(1),own:_(),presentIn:ce(),of:ce(),reason:j2}).strict()]),$9=p({domains:y(vb),providers:y(p({provider:ft,domains:y(vb)}).strict())}).strict(),H9=p({provider:ft,completeness:xu,answerCoverage:us}).strict(),K9=p({id:o().trim().min(1),label:o().trim().min(1),targetIds:y(o().trim().min(1)),completeness:xu,answerCoverage:us,targetCoverage:us,sov:$9,providers:y(H9)}).strict(),Q9=p({provider:ft,completeness:xu,citationCoverage:us,mentionCoverage:us}).strict(),Z9=p({id:o().trim().min(1),label:o().trim().min(1),completeness:xu,citationCoverage:us,mentionCoverage:us,providers:y(Q9)}).strict(),A2=p({observationId:o().trim().min(1),expectedSlotId:o().trim().min(1),executionId:o().trim().min(1),usageEdgeId:o().trim().min(1),usageEdgeType:S2,provider:ft,queryText:o().trim().min(1),location:o().nullable(),sourceUrl:o(),bridged:_(),historical:_(),evidenceComplete:_(),classification:I0,normalizedUrl:o().nullable(),matchedTargetIds:y(o().trim().min(1)),matchedUrlIds:y(o().trim().min(1))}).strict(),F9=p({sourceUrl:o(),normalizedUrl:o().nullable(),classification:I0,matchedTargetIds:y(o().trim().min(1)),matchedUrlIds:y(o().trim().min(1))}).strict(),Y9=p({observationId:o().trim().min(1),expectedSlotId:o().trim().min(1),executionId:o().trim().min(1),usageEdgeId:o().trim().min(1),usageEdgeType:S2,provider:ft,queryText:o().trim().min(1),location:o().nullable(),queryClass:Ve([A(["branded","non-brand"]),ce()]),mentioned:_().nullable(),cited:_().nullable(),sources:y(F9),sourceCount:m().int().nonnegative(),sourcesTruncated:_(),bridged:_(),historical:_(),evidenceComplete:_()}).strict(),X9=p({bridgedObservationIds:y(o()),historicalObservationIds:y(o()),evidenceIncompleteObservationIds:y(o()),ambiguousObservationIds:y(o()),unmatchedObservationIds:y(o())}).strict(),J9=p({id:o().trim().min(1),status:A(["completed","partial"]),createdAt:o().datetime(),startedAt:o().datetime().nullable(),finishedAt:o().datetime().nullable()}).strict();p({revision:m().int().positive(),run:J9.nullable(),groups:y(K9),targets:y(Z9),evidence:y(A2),diagnostics:X9}).strict();p({property:p({targetKey:ke,label:o().min(1)}).strict(),queryClass:Wa,measurement:p({state:R0,displayedRunId:o().min(1).optional(),completedAt:o().datetime().optional()}).strict(),evidence:wo(A2).optional(),answers:wo(Y9).optional()}).strict().refine(e=>e.evidence===void 0!=(e.answers===void 0),{message:"Exactly one of evidence or answers is present, naming the shape that was served."});const V0=A(["used","not-used","unknown","not-applicable"]);V0.enum;const L0=A(["native-auto-v1","search-required-v1"]);L0.enum;const Xa=o().trim().min(1),ol=o().trim().min(1),W9=o().trim().min(1),tt=m().int().nonnegative(),rl=p({state:R0,displayedRunId:Xa.nullable(),planRevision:m().int().positive(),completedAt:o().datetime().nullable()}).strict(),ll=p({targetKey:ke,label:ol}).strict(),za={runId:Xa.optional(),provider:ft.optional(),location:W9.optional()},Jr=o().trim().min(1);p({runId:za.runId,groupKey:ke.optional(),queryClass:Wa.default("non-brand"),provider:za.provider,location:za.location,limit:m().int().positive().max(50).optional()}).strict();const eD=ll.extend({mentionCoverage:Lt,citationCoverage:Lt,flags:tt,recommendedInstead:y(p({name:Jr,occurrences:tt}).strict()).max(5),recommendedInsteadTotal:tt,recommendedInsteadTruncated:_()}).strict().superRefine((e,n)=>{e.recommendedInstead.length>e.recommendedInsteadTotal&&n.addIssue({code:Ye.custom,path:["recommendedInsteadTotal"],message:"Total cannot be smaller than the returned replacements"}),e.recommendedInsteadTruncated!==e.recommendedInstead.length<e.recommendedInsteadTotal&&n.addIssue({code:Ye.custom,path:["recommendedInsteadTruncated"],message:"Truncation must agree with the replacement total"})}),tD=p({groupKey:ke,label:ol,propertyCount:tt,propertiesMentioned:Lt,mentionCoverage:Lt,citationCoverage:Lt}).strict();p({portfolio:p({groupKey:ke.nullable(),label:ol.nullable(),measurementScope:Ve([A(["full","spot_check"]),ce()])}).strict(),measurement:rl,queryClass:Wa,metrics:p({propertiesMentioned:Lt,mentionCoverage:Lt,citationCoverage:Lt}).strict(),weakestProperties:y(eD),markets:y(tD),totalProperties:tt,truncated:_()}).strict();p({targetKey:ke,runId:za.runId,provider:za.provider,location:za.location,queryClass:Wa.optional(),offset:m().int().nonnegative().optional(),limit:m().int().positive().max(100).optional()}).strict();A(["answered","missing"]);const Qp={queryId:Xa,text:ol,class:z0,provider:ft,requestedModel:o().nullable(),servedModel:o().nullable(),location:o().nullable()},aD=Be("status",[p({resultId:Xa,...Qp,status:O("answered"),mentioned:_().nullable(),cited:_().nullable(),recommendedInstead:y(Jr),answerExcerpt:o().nullable()}).strict(),p({resultId:ce(),...Qp,status:O("missing"),mentioned:ce(),cited:ce(),recommendedInstead:y(Jr).length(0),answerExcerpt:ce()}).strict()]);p({property:ll,measurement:rl,queryClass:Wa,questions:y(aD),total:tt,truncated:_()}).strict();p({targetKey:ke,resultId:Xa}).strict();const nD=p({url:Xa,classification:I0,matchedTargetKeys:y(ke),assigned:_(),historical:_(),evidenceComplete:_()}).strict().superRefine((e,n)=>{e.assigned!==(e.classification==="assigned")&&n.addIssue({code:Ye.custom,path:["assigned"],message:"Assigned must agree with the source attribution classification"})});p({property:ll,measurement:rl,question:p({resultId:Xa,...Qp,status:O("answered")}).strict(),mentioned:_().nullable(),cited:_().nullable(),recommendedInstead:y(Jr),answer:o().nullable(),sources:y(nD),captureStatus:Ve([vu,ce()]),retrievalStatus:Ve([V0,ce()]),retrievalContract:Ve([L0,ce()])}).strict();p({targetKey:ke,runId:za.runId,provider:za.provider,location:za.location,queryClass:Wa.optional(),limit:m().int().positive().max(50).optional()}).strict();const iD=Be("state",[p({state:O("available"),answeredResults:tt,targetMissResults:tt,recommendationOccurrences:tt}).strict(),p({state:O("unavailable"),reason:E0}).strict()]),sD=p({name:Jr,occurrences:tt,providers:y(ft).max(5),providerTotal:tt,providersTruncated:_(),questions:y(ol).max(5),questionTotal:tt,questionsTruncated:_()}).strict().superRefine((e,n)=>{(e.providers.length>e.providerTotal||e.questions.length>e.questionTotal)&&n.addIssue({code:Ye.custom,message:"Evidence totals cannot be smaller than returned evidence"}),e.providersTruncated!==e.providers.length<e.providerTotal&&n.addIssue({code:Ye.custom,path:["providersTruncated"],message:"Provider truncation must agree with its total"}),e.questionsTruncated!==e.questions.length<e.questionTotal&&n.addIssue({code:Ye.custom,path:["questionsTruncated"],message:"Question truncation must agree with its total"})});p({property:ll,measurement:rl,queryClass:Wa,basis:iD,competitors:y(sD),total:tt,truncated:_()}).strict();p({runId:za.runId,scope:T0.default("all"),groupKey:ke.optional(),targetKey:ke.optional(),queryClass:Wa.default("all"),provider:za.provider,location:za.location,limit:m().int().positive().max(50).optional()}).strict().superRefine((e,n)=>{e.scope==="all"&&(e.groupKey!==void 0||e.targetKey!==void 0)&&n.addIssue({code:Ye.custom,path:["scope"],message:"All scope cannot name a group or Property"}),e.scope==="group"&&(e.groupKey===void 0||e.targetKey!==void 0)&&n.addIssue({code:Ye.custom,path:["groupKey"],message:"Group scope requires groupKey only"}),e.scope==="property"&&(e.targetKey===void 0||e.groupKey!==void 0)&&n.addIssue({code:Ye.custom,path:["targetKey"],message:"Property scope requires targetKey only"})});const C2=A(["no_previous_run","execution_identity_changed","incomplete","not_comparable"]),N2=rl.extend({executionIdentity:Xa.nullable(),measurementScope:Ve([A(["full","spot_check"]),ce()])}).strict(),Br=Be("state",[p({state:O("available"),previous:Lt,current:Lt,delta:m()}).strict().superRefine((e,n)=>{if(e.previous.state!=="available"||e.current.state!=="available"){n.addIssue({code:Ye.custom,message:"Available deltas require two available metrics"});return}Math.abs(e.delta-(e.current.value-e.previous.value))>Number.EPSILON&&n.addIssue({code:Ye.custom,path:["delta"],message:"Delta must equal current minus previous"})}),p({state:O("unavailable"),reason:E0}).strict()]);p({current:N2,comparison:Be("state",[p({state:O("available"),previous:p({displayedRunId:Xa,planRevision:m().int().positive(),completedAt:o().datetime().nullable(),executionIdentity:Xa,measurementScope:A(["full","spot_check"])}).strict(),metrics:p({propertiesMentioned:Br,mentionCoverage:Br,citationCoverage:Br}).strict(),changedProperties:y(ll.extend({mentionCoverage:Br,citationCoverage:Br,flags:tt}).strict()),totalProperties:tt,truncated:_()}).strict(),p({state:O("unavailable"),reason:C2}).strict()])}).strict().superRefine((e,n)=>{if(e.comparison.state==="available"){if(e.current.displayedRunId===null||e.current.executionIdentity===null){n.addIssue({code:Ye.custom,path:["current"],message:"A comparison requires an identified current run"});return}e.comparison.previous.planRevision!==e.current.planRevision&&n.addIssue({code:Ye.custom,path:["comparison","previous","planRevision"],message:"Comparisons cannot cross plan revisions"}),e.comparison.previous.executionIdentity!==e.current.executionIdentity&&n.addIssue({code:Ye.custom,path:["comparison","previous","executionIdentity"],message:"Comparisons cannot cross execution identities"})}});p({runId:za.runId}).strict();const oD=A(["no_completed_run","incomplete","evidence_incomplete","no_population","not_applicable"]),ku=p({state:O("unavailable"),reason:oD}).strict(),rD=p({state:O("available"),expected:tt,executed:tt,answered:tt,missing:tt}).strict(),lD=Be("state",[rD,ku]).superRefine((e,n)=>{e.state==="available"&&(e.executed+e.missing!==e.expected&&n.addIssue({code:Ye.custom,message:"Expected must equal executed plus missing"}),e.answered>e.executed&&n.addIssue({code:Ye.custom,path:["answered"],message:"Answered cannot exceed executed"}))}),cD=p({state:O("available"),complete:tt,partial:tt,failed:tt,unsupported:tt,notRecorded:tt}).strict(),uD=Be("state",[cD,ku]),dD=p({state:O("available"),used:tt,notUsed:tt,unknown:tt,notApplicable:tt,notRecorded:tt}).strict(),mD=Be("state",[dD,ku]),pD=p({state:O("available"),expectedQuestions:tt,answeredQuestions:tt,missingQuestions:tt}).strict(),hD=Be("state",[pD,ku]).superRefine((e,n)=>{e.state==="available"&&e.answeredQuestions+e.missingQuestions!==e.expectedQuestions&&n.addIssue({code:Ye.custom,message:"Expected questions must equal answered plus missing"})});p({run:N2,completeness:lD,capture:uD,retrieval:mD,population:hD,comparison:Be("state",[p({state:O("available"),previousDisplayedRunId:Xa}).strict(),p({state:O("unavailable"),reason:C2}).strict()])}).strict().superRefine((e,n)=>{if(e.completeness.state!=="available")return;const s=e.completeness.executed;e.capture.state==="available"&&e.capture.complete+e.capture.partial+e.capture.failed+e.capture.unsupported+e.capture.notRecorded!==s&&n.addIssue({code:Ye.custom,path:["capture"],message:"Capture counts must total executed snapshots"}),e.retrieval.state==="available"&&e.retrieval.used+e.retrieval.notUsed+e.retrieval.unknown+e.retrieval.notApplicable+e.retrieval.notRecorded!==s&&n.addIssue({code:Ye.custom,path:["retrieval"],message:"Retrieval counts must total executed snapshots"})});const So=o().regex(/^[a-f0-9]{64}$/),Ja=o().trim().min(1).max(256),zi=m().int().positive(),xb=p({kind:A(["user","api-key","system"]),id:o().trim().min(1),label:o().trim().min(1)}).strict(),fD=A(["proposed","included","excluded"]),gD=A(["manual","sitemap"]),U0=p({stableKey:ke,label:o().trim().min(1),status:fD,aliases:y(o().trim().min(1)),urlMatchers:y(o().trim().min(1)),source:gD,discoveredUrl:o().trim().min(1).optional(),discoveryIdentity:o().trim().min(1).optional()}).strict(),wu=p({providers:y(ft).optional(),models:Ie(ft,o().trim().min(1)).optional(),locations:y(o().trim().min(1)).optional()}).strict(),yD=A(["branded","non-brand","unclassified"]),bD=A(["rule","operator"]),_2=p({targetKey:ke,queryId:Ja,contextOverride:wu.optional(),queryClass:yD,classificationSource:bD}).strict(),G0=r2,z2=p({stableKey:ke,label:o().trim().min(1),targetKeys:y(ke),competitors:y(G0)}).strict(),vD=p({sitemapUrl:o().url(),rule:P0,exclusions:y(o().trim().min(1)),inputChecksum:So,reviewedAt:o().datetime().optional()}).strict(),xD=p({providers:y(ft),models:Ie(ft,o().trim().min(1)).optional(),locations:y(o().trim().min(1))}).strict(),kD=p({defaultContext:xD,targets:y(U0),assignments:y(_2),groups:y(z2),discovery:vD.optional()}).strict(),wD=p({id:o().trim().min(1),projectId:o().trim().min(1),schemaVersion:O(2),baseActiveVersionId:o().trim().min(1).nullable(),baseActiveRevision:zi.nullable(),authoring:kD,createdBy:xb,updatedBy:xb,createdAt:o().datetime(),updatedAt:o().datetime()}).strict(),$0=p({targets:m().int().nonnegative(),includedTargets:m().int().nonnegative(),assignments:m().int().nonnegative(),unclassifiedAssignments:m().int().nonnegative(),groups:m().int().nonnegative(),competitors:m().int().nonnegative()}).strict(),SD=p({code:o().trim().min(1),message:o().trim().min(1),path:y(Ve([o(),m().int()]))}).strict(),jD=p({etag:o().trim().min(1),changed:_(),warnings:y(SD),counts:$0}).strict();p({draft:wD.nullable(),etag:o().trim().min(1).nullable()}).strict();wo(U0);wo(_2);wo(z2);p({search:o().optional(),cursor:o().trim().min(1).optional(),limit:m().int().positive().max(D0).optional()}).strict();p({expectedActiveRevision:zi.nullable()}).strict();p({sitemapUrl:o().url(),rule:P0,exclusions:y(o().trim().min(1)).optional()}).strict();const AD=p({discoveryIdentity:o().trim().min(1),action:A(["create","rebind","ignore"]),targetKey:ke.optional(),label:o().trim().min(1).optional()}).strict();p({selections:y(AD),selectedTargetKeys:y(ke).optional()}).strict().superRefine((e,n)=>{e.selections.length===0&&e.selectedTargetKeys===void 0&&n.addIssue({code:"custom",message:"A proposal or reviewed Property selection is required."}),e.selectedTargetKeys&&new Set(e.selectedTargetKeys).size!==e.selectedTargetKeys.length&&n.addIssue({code:"custom",path:["selectedTargetKeys"],message:"Property keys must be unique."})});p({target:U0}).strict();p({targetKey:ke,label:o().trim().min(1)}).strict();p({targetKey:ke,mergedKeys:y(ke).min(1)}).strict();p({targetKey:ke,cleanup:O("assignments-and-group-memberships").optional()}).strict();p({targetKey:ke,discoveryIdentity:o().trim().min(1),discoveredUrl:o().url()}).strict();const D2={targetKeys:y(ke).optional(),groupKeys:y(ke).optional()};function E2(e,n){(e.targetKeys?.length??0)===0&&(e.groupKeys?.length??0)===0&&n.addIssue({code:"custom",message:"At least one Target or group selector is required."})}p(D2).strict().superRefine(E2);const CD=p({...D2,queryIds:y(Ja).min(1),contextOverride:wu.optional()}).strict().superRefine(E2);Ve([p({targetKey:ke,queryIds:y(Ja).min(1),contextOverride:wu.optional()}).strict(),CD]);const ND=p({groupKey:ke,label:o().trim().min(1),memberCount:m().int().positive()}).strict();p({draftEtag:o().trim().min(1),groups:y(ND),resolvedTargetKeys:y(ke),overlapCount:m().int().nonnegative(),assignments:p({requested:m().int().nonnegative(),added:m().int().nonnegative(),alreadyPresent:m().int().nonnegative()}).strict(),execution:p({addedNodes:m().int().nonnegative(),addedProviderCalls:m().int().nonnegative(),fullRunNodes:m().int().nonnegative(),fullRunProviderCalls:m().int().nonnegative()}).strict()}).strict();p({pairs:y(p({targetKey:ke,queryId:Ja}).strict()).min(1),contextOverride:wu.optional()}).strict();Ve([p({targetKey:ke,queryId:Ja}).strict(),p({targetKeys:y(ke).min(1),queryId:Ja}).strict()]);p({targetKey:ke}).strict();p({queryClass:z0,assignments:y(p({targetKey:ke,queryId:Ja}).strict()).min(1)}).strict();p({group:p({stableKey:ke,label:o().trim().min(1),targetKeys:y(ke),competitors:y(G0).optional()}).strict()}).strict();p({groupKey:ke}).strict();p({groupKey:ke,competitor:G0}).strict();p({groupKey:ke,competitorKey:ke}).strict();const nu=p({ruleId:o().trim().min(1),severity:A(["fail","warn"]),message:o().trim().min(1),path:y(Ve([o(),m().int()]))}).strict();Be("ok",[p({ok:O(!0),compiledChecksum:So,checks:y(nu),counts:$0,plan:bu}).strict(),p({ok:O(!1),compiledChecksum:ce(),checks:y(nu).min(1)}).strict()]);const kb=p({added:y(o().trim().min(1)),removed:y(o().trim().min(1)),changed:y(o().trim().min(1)),unchanged:y(o().trim().min(1))}).strict(),_D=p({activeRevision:zi.nullable(),targets:kb,groups:kb,assignments:p({added:m().int().nonnegative(),removed:m().int().nonnegative(),reclassified:m().int().nonnegative()}).strict(),execution:p({addedNodeKeys:y(o().trim().min(1)),removedNodeKeys:y(o().trim().min(1))}).strict()}).strict();Be("ok",[p({ok:O(!0),compiledChecksum:So,checks:y(nu),counts:$0,plan:bu,diff:_D}).strict(),p({ok:O(!1),compiledChecksum:ce(),checks:y(nu).min(1),diff:ce()}).strict()]);p({expectedActiveRevision:zi.nullable(),expectedCompiledChecksum:So}).strict();p({published:_(),active:p({revision:zi,checksum:So,compiledChecksum:So,createdAt:o().datetime(),plan:bu}).strict()}).strict();p({discarded:_()}).strict();p({expectedActiveRevision:zi}).strict();p({deactivated:_(),previousRevision:zi.nullable()}).strict();const zD=A(["republish_required","setup_in_progress","awaiting_first_run","operational","simple"]),DD=A(["republish_setup","continue_setup","run_measurement","view_measurement","start_setup"]),ED=A(["simple","draft-only","active-v1","active-v2"]);p({state:zD,nextAction:DD,mode:ED,activeRevision:zi.nullable(),activeSchemaVersion:Ve([O(1),O(2)]).nullable(),draft:p({etag:o().trim().min(1),updatedAt:o().datetime()}).strict().nullable()}).strict();const T2=p({id:o().trim().min(1),projectId:o().trim().min(1),name:o().trim().min(1),description:o().nullable(),itemCount:m().int().nonnegative(),createdAt:o().datetime(),updatedAt:o().datetime()}).strict(),TD=p({queryId:Ja,queryText:o().min(1),position:m().int().nonnegative()}).strict();T2.extend({items:y(TD)}).strict();p({querySets:y(T2)}).strict();p({name:o().trim().min(1),description:o().nullable().optional(),queryIds:y(Ja)}).strict();const RD=p({id:o().trim().min(1),projectId:o().trim().min(1),name:o().trim().min(1),description:o().nullable(),pattern:o().trim().min(1),variables:y(o().trim().min(1)),createdAt:o().datetime(),updatedAt:o().datetime()}).strict();p({templates:y(RD)}).strict();p({name:o().trim().min(1),description:o().nullable().optional(),pattern:o().trim().min(1),variables:y(o().trim().min(1))}).strict();p({bindings:y(Ie(o().trim().min(1),o().trim().min(1))).min(1),querySetId:o().trim().min(1).optional()}).strict();p({created:y(p({queryId:Ja,queryText:o().min(1)}).strict()),existing:y(p({queryId:Ja,queryText:o().min(1)}).strict())}).strict();const iu=o().regex(/^[a-f0-9]{64}$/),Su=m().int().positive();p({stableKey:ke,kind:A(["target","group"]),retiredAt:o().datetime().nullable()}).strict();p({csv:o()}).strict();A(["matched","ambiguous","unmatched","invalid","duplicate","proposed","excluded"]);const OD=A(["column-count","missing-property","missing-group","invalid-url","property-not-found","property-label-ambiguous","url-not-exact-match","target-proposed","target-excluded","group-label-ambiguous","group-key-conflict"]),Zp=p({dataRow:Su,property:o(),group:o(),url:o().nullable(),normalizedProperty:o(),normalizedGroupLabel:o()}).strict(),qr=Zp.extend({reason:OD}),BD=p({source:A(["draft-target","draft-group","persisted-segment","retired-segment","proposed-group"]),stableKey:ke,kind:A(["target","group"]).optional(),retiredAt:o().datetime().nullable().optional(),normalizedGroupLabel:o().optional()}).strict(),qD=p({proposedGroupKey:ke,evidence:y(BD).min(1)}).strict(),MD=Be("status",[Zp.extend({status:O("matched"),targetKey:ke,groupKey:ke}).strict(),qr.extend({status:O("ambiguous"),candidateTargetKeys:y(ke).min(1).optional(),candidateGroupKeys:y(ke).min(1).optional()}).strict(),qr.extend({status:O("unmatched")}).strict(),qr.extend({status:O("invalid"),groupKeyConflict:qD.optional()}).strict(),Zp.extend({status:O("duplicate"),duplicateOfRow:Su,targetKey:ke,groupKey:ke}).strict(),qr.extend({status:O("proposed"),targetKey:ke}).strict(),qr.extend({status:O("excluded"),targetKey:ke}).strict()]),PD=p({normalizedGroupLabel:o(),groupKey:ke,label:o().trim().min(1),action:A(["create","extend"]),matchedRows:y(Su),targetKeys:y(ke),addedTargetKeys:y(ke),unchangedTargetKeys:y(ke)}).strict(),ID=p({dataRows:m().int().nonnegative(),matchedRows:m().int().nonnegative(),ambiguousRows:m().int().nonnegative(),unmatchedRows:m().int().nonnegative(),invalidRows:m().int().nonnegative(),duplicateRows:m().int().nonnegative(),proposedRows:m().int().nonnegative(),excludedRows:m().int().nonnegative(),needsAttention:m().int().nonnegative(),groupsReady:m().int().nonnegative(),groupsToCreate:m().int().nonnegative(),groupsToExtend:m().int().nonnegative(),membershipsReady:m().int().nonnegative(),addedMemberships:m().int().nonnegative(),unchangedMemberships:m().int().nonnegative()}).strict();p({draftEtag:o().trim().min(1),sourceChecksum:iu,previewChecksum:iu,rows:y(MD),groupChanges:y(PD),counts:ID}).strict();p({csv:o(),sourceChecksum:iu,previewChecksum:iu,acceptedRows:y(Su).min(1)}).strict().superRefine((e,n)=>{new Set(e.acceptedRows).size!==e.acceptedRows.length&&n.addIssue({code:"custom",path:["acceptedRows"],message:"Accepted CSV data rows must be unique."})});jD.extend({appliedRows:m().int().nonnegative(),addedMemberships:m().int().nonnegative(),unchangedMemberships:m().int().nonnegative()}).strict();const R2=A(["introduced","repointed","retired"]),VD=R2.enum;p({modelId:o().trim().min(1),date:o().regex(/^\d{4}-\d{2}-\d{2}$/,"date must be YYYY-MM-DD"),kind:R2,confirmed:_(),sourceUrl:o().url(),note:o().min(1)});const LD=[{modelId:"chatgpt-4o-latest",date:"2024-08-15",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released dynamic model for chatgpt-4o-latest—this model will point to the latest GPT-4o model used by ChatGPT." First moving id in the lineage.'},{modelId:"chatgpt-4o-latest",date:"2026-02-17",kind:"retired",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/deprecations.md",note:'Shutdown 2026-02-17, replacement gpt-5.1-chat-latest. Announced under the heading "2025-11-18: chatgpt-4o-latest snapshot".'},{modelId:"gpt-5.1-chat-latest",date:"2025-11-13",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:"Introduced inside the GPT-5.1 launch entry, not as a standalone entry."},{modelId:"gpt-5.2-chat-latest",date:"2025-12-11",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:"Introduced inside the GPT-5.2 launch entry."},{modelId:"gpt-5.2-chat-latest",date:"2026-02-10",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Updated the gpt-5.2-chat-latest slug to point to the latest model currently used in ChatGPT." Target model NOT named.'},{modelId:"gpt-5.3-chat-latest",date:"2026-03-03",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released gpt-5.3-chat-latest to the Chat Completions and Responses API. This model points to the GPT-5.3 Instant snapshot currently used in ChatGPT."'},{modelId:"gpt-5.3-chat-latest",date:"2026-03-16",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Updated the gpt-5.3-chat-latest slug to point to the latest model currently used in ChatGPT." Target model NOT named.'},{modelId:"chat-latest",date:"2026-05-05",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released chat-latest snapshot which points to the latest Instant model currently used in ChatGPT... The underlying model snapshot will be regularly updated."'},{modelId:"chat-latest",date:"2026-05-28",kind:"repointed",confirmed:!1,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'UNCONFIRMED. The entry reads "Released chat-latest snapshot..." — the verb is "Released", the same boilerplate as the 2026-05-05 entry, not "Updated" as used on 2026-06-24. Only "the latest improvements" vs "our latest improvements" differs. Either a real change logged with copy-pasted text, or a duplicated entry; the record does not disambiguate.'},{modelId:"chat-latest",date:"2026-06-24",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim (re-read at source 2026-07-20): "Updated the chat-latest snapshot, which points to the latest Instant model currently used in ChatGPT." The verb is "Updated", unlike the "Released" boilerplate of 2026-05-05 and 2026-05-28, which is the wording the changelog reserves for a real change. Target model NOT named. The only unambiguous chat-latest change on record.'}];VD.repointed;new Set(LD.map(e=>e.modelId.toLowerCase()));const UD=A(["not-exposed","no-known-change","known-change"]);UD.enum;const GD=p({modelId:o().trim().min(1),date:o().regex(/^\d{4}-\d{2}-\d{2}$/),confirmed:_(),sourceUrl:o().url()}),$D=p({status:A(["no-known-change","known-change"]),modelIds:y(o().trim().min(1)).min(1),changes:y(GD),changeCount:m().int().nonnegative(),unverifiedChangeCount:m().int().nonnegative(),firstChangeDate:o().optional(),lastChangeDate:o().optional(),knownGoodAsOf:o(),checkedThroughPeriodEnd:_()}),HD={openai:"ChatGPT",chatgpt:"ChatGPT",anthropic:"Claude",claude:"Claude",google:"Gemini",gemini:"Gemini",perplexity:"Perplexity"};function KD(e){const n=e.trim().toLowerCase();return HD[n]??e.charAt(0).toUpperCase()+e.slice(1)}function mp(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):0}function Mr(e){return typeof e=="string"&&e.trim().length>=10?e.trim().slice(0,10):null}function pp(e){return[...new Set(e.filter(n=>n!==null))].sort()}function QD(e,n){const s=KD(e),r=Array.isArray(n.changes)?n.changes:[],u=mp(n.changeCount)||r.length,f=Math.min(u,mp(n.unverifiedChangeCount)||mp(n.unconfirmedChangeCount)||r.filter(S=>S.confirmed===!1).length),g=Mr(n.knownGoodAsOf),b=n.checkedThroughPeriodEnd!==!1,x={engine:s,confirmedCount:u-f,unconfirmedCount:f,knownGoodAsOf:g,checkedThroughPeriodEnd:b};if(r.length>0)return{...x,confirmedDates:pp(r.filter(S=>S.confirmed!==!1).map(S=>Mr(S.date))),unconfirmedDates:pp(r.filter(S=>S.confirmed===!1).map(S=>Mr(S.date)))};const k=pp([Mr(n.firstChangeDate),Mr(n.lastChangeDate)]);return u===0?{...x,confirmedDates:[],unconfirmedDates:[]}:f===0?{...x,confirmedDates:k,unconfirmedDates:[]}:x.confirmedCount===0?{...x,confirmedDates:[],unconfirmedDates:k}:{...x,confirmedDates:[],unconfirmedDates:[]}}function ZD(e){return e.length===1?e[0]:e.length===2?`${e[0]} and ${e[1]}`:`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`}function wb(e,n){return e.length===0?null:e.length===1&&n<=1?`on ${e[0]}`:`more than once between ${e[0]} and ${e[e.length-1]}`}function FD(e){const n=wb(e.confirmedDates,e.confirmedCount),s=wb(e.unconfirmedDates,e.unconfirmedCount),r=`The model behind ${e.engine}`;if(e.confirmedCount>0&&e.unconfirmedCount===0)return n?`${r} was updated ${n}, inside this period.`:`${r} was updated inside this period.`;if(e.confirmedCount===0)return s?`${r} may have been updated ${s}, inside this period, though that is not confirmed.`:`${r} may have been updated inside this period, though that is not confirmed.`;if(n&&s)return`${r} was updated ${n}, inside this period, and may also have been updated ${s}.`;const u=e.unconfirmedCount>1?"more times":"once more";return`${r} was updated inside this period, and may have been updated ${u}, though that is not confirmed.`}function Sb(e){const n=e.filter(r=>!r.checkedThroughPeriodEnd&&r.knownGoodAsOf!==null);return n.length===0?null:`We last checked for model updates on ${n.map(r=>r.knownGoodAsOf).sort()[0]}, and this period runs past that date, so there may be later updates we do not know about.`}function _$(e){const n=Object.entries(e??{}).map(([x,k])=>QD(x,k??{})).sort((x,k)=>x.engine.localeCompare(k.engine));if(n.length===0)return null;const s=n.filter(x=>x.confirmedCount+x.unconfirmedCount>0);if(s.length===0){const x=[...new Set(n.map(E=>E.engine))],k=x.length>1,S=Sb(n),C=[...new Set(n.map(E=>E.knownGoodAsOf).filter(E=>E!==null))].sort(),j=S??(C.length>0?`We last checked for model updates on ${C[0]}.`:null);return{kind:"no-known-change",text:`No model updates are on record for ${ZD(x)} in this period.`,detail:`${k?"These engines":"This engine"} can be moved onto a different underlying model without the data ever showing a different model name, so we check each period against a record of known updates. Nothing is listed inside this one.${j?` ${j}`:""}`}}const r=s.reduce((x,k)=>x+k.confirmedCount+k.unconfirmedCount,0),u=s.some(x=>x.confirmedCount>0),f=r===1?"this update":"these updates",g=u?`Some of the movement in these numbers may come from ${f} rather than from a real change in how AI answers about you, so compare periods carefully.`:`If so, some of the movement in these numbers may come from ${f} rather than from a real change in how AI answers about you, so compare periods carefully.`,b=Sb(n);return{kind:"change",text:`${s.map(FD).join(" ")} ${g}${b?` ${b}`:""}`}}const Oc=p({slope:m(),intercept:m(),r2:m(),start:m(),end:m(),n:m(),startIndex:m(),endIndex:m()}),YD=A(["gsc","ga4","gbp"]);p({id:o(),domain:o(),connectionType:YD,propertyId:o().nullable().optional(),sitemapUrl:o().nullable().optional(),scopes:y(o()).default([]),createdAt:o(),updatedAt:o()});const XD=p({date:o(),query:o(),page:o(),country:o().nullable().optional(),device:o().nullable().optional(),clicks:m(),impressions:m(),ctr:m(),position:m()});A(["clicks","impressions","date"]);p({rows:y(XD),totalMatching:m(),truncated:_(),latestAvailableDate:o().nullable()});const JD=p({date:o(),clicks:m(),impressions:m(),ctr:m(),position:m().nullable()}),WD=p({startDate:o().nullable(),endDate:o().nullable(),latestDataDate:o().nullable(),daysSinceLatestData:m().nullable()}),eE=p({clicks:Oc.nullable(),impressions:Oc.nullable(),ctr:Oc.nullable(),position:Oc.nullable()}),jb=p({startDate:o(),endDate:o(),clicks:m(),impressions:m(),ctr:m().nullable(),position:m().nullable(),source:A(["property-daily","dimensioned","mixed","empty"])}),tE=p({days:m(),prior:jb,trailing:jb,comparable:_(),change:p({clicks:m().nullable(),impressions:m().nullable(),ctr:m().nullable(),position:m().nullable()})});p({totals:p({clicks:m(),impressions:m(),ctr:m(),position:m().nullable(),positionDays:m(),days:m()}),daily:y(JD),window:WD.optional(),trends:eE.optional(),periodComparison:tE.nullable().optional()});const aE=p({page:o(),clicks:m(),impressions:m(),ctr:m()});p({rows:y(aE),totals:p({clicks:m(),impressions:m(),ctr:m(),days:m(),coveredFrom:o().nullable(),coveredThrough:o().nullable(),complete:_()}).nullable(),totalsSource:O("property-daily"),rankedFrom:o().nullable(),rankedThrough:o().nullable()});const Fp=p({id:o(),url:o(),indexingState:o().nullable().optional(),verdict:o().nullable().optional(),coverageState:o().nullable().optional(),pageFetchState:o().nullable().optional(),robotsTxtState:o().nullable().optional(),crawlTime:o().nullable().optional(),lastCrawlResult:o().nullable().optional(),isMobileFriendly:_().nullable().optional(),richResults:y(o()).default([]),referringUrls:y(o()).default([]),inspectedAt:o()});A(["stable","reindexed","deindexed","still-missing","new"]);const nE=p({url:o(),previousState:o().nullable(),currentState:o().nullable(),transitionDate:o()}),iE=p({reason:o(),count:m(),urls:y(Fp).default([])});p({summary:p({total:m(),indexed:m(),notIndexed:m(),deindexed:m(),percentage:m()}),lastInspectedAt:o().nullable(),lastSyncedAt:o().nullable(),indexed:y(Fp).default([]),notIndexed:y(Fp).default([]),deindexed:y(nE).default([]),reasonGroups:y(iE).default([])});p({url:o(),type:A(["URL_UPDATED","URL_DELETED"]),notifiedAt:o()});const sE=p({url:o(),type:A(["URL_UPDATED","URL_DELETED"]),notifiedAt:o(),status:A(["success","error"]),error:o().optional()});p({summary:p({total:m().int().nonnegative(),succeeded:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(sE).default([])});p({date:o(),indexed:m(),notIndexed:m(),unknownPages:m().default(0),verifiedByInspection:m().default(0),derivedFromImpressions:m().default(0),reasonBreakdown:Ie(o(),m()).default({})});const oE=p({siteUrl:o(),permissionLevel:o()});p({sites:y(oE).default([])});const rE=p({type:o(),submitted:o(),indexed:o().optional().describe("Deprecated compatibility field.")}),O2=p({path:o(),parentSitemapUrl:o().optional(),lastSubmitted:o().optional(),isPending:_().optional(),isSitemapsIndex:_().optional(),type:o().optional(),lastDownloaded:o().optional(),warnings:o().optional(),errors:o().optional(),contents:y(rE).optional()});p({sitemaps:y(O2).default([]),summary:p({total:m().int().nonnegative(),indexes:m().int().nonnegative(),files:m().int().nonnegative()}),preferredSubmissionUrls:y(o()).default([])});p({sitemapUrls:y(o().url().refine(e=>{const n=new URL(e).protocol;return n==="http:"||n==="https:"},{message:"Sitemap URL must use http or https."})).min(1).max(50)});const lE=p({sitemapUrl:o(),status:A(["accepted","error"]),submittedAt:o().optional(),error:o().optional()});p({summary:p({total:m().int().nonnegative(),accepted:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(lE)});p({sitemaps:y(O2),primarySitemapUrl:o(),run:p({id:o(),projectId:o(),kind:o(),status:o(),trigger:o(),createdAt:o()}).nullable()});const Xe=o().trim().min(1),Ab=o().regex(/^[a-f0-9]{64}$/i);function cE(e){if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;const n=new Date(`${e}T00:00:00.000Z`);return!Number.isNaN(n.getTime())&&n.toISOString().slice(0,10)===e}const Yp=o().refine(cE,{message:"Expected a calendar date as YYYY-MM-DD."});function uE(e,n){const s=Date.parse(`${e}T00:00:00.000Z`),r=Date.parse(`${n}T00:00:00.000Z`);return Math.floor((r-s)/864e5)+1}const dE=A(["not-connected","selection-required","connected","stale"]),Bc=dE.enum,B2=A(["enabled","suspended","closed","canceled","unspecified","unknown"]);B2.enum;const q2=A(["enabled","paused","removed","unknown"]);q2.enum;const M2=A(["enabled","hidden","removed","unknown"]);M2.enum;const H0=A(["customer","campaign"]);H0.enum;const P2=A(["customer-goal","campaign-goal","custom-goal"]);P2.enum;const I2=p({loginCustomerId:Xe.nullable(),customerId:Xe.nullable(),selectedAt:o().nullable()}).strict(),hp=p({id:Xe,projectId:Xe,scopes:y(o()).default([]),selection:I2,lastValidatedAt:o().nullable(),lastInventorySnapshotAt:o().nullable(),lastMetricsSnapshotAt:o().nullable(),createdAt:o(),updatedAt:o()}).strict(),Xp=p({resourceName:Xe,customerId:Xe,parentCustomerId:Xe.nullable(),descriptiveName:o().nullable(),currencyCode:o().nullable(),timeZone:o().nullable(),manager:_(),hidden:_(),testAccount:_(),level:m().int().nonnegative(),status:B2}).strict(),mE=p({customers:y(Xp),totalAccessible:m().int().nonnegative(),truncated:_(),selection:I2,fetchedAt:o()}).strict();Be("status",[p({connected:O(!1),status:O(Bc["not-connected"]),connection:ce(),selectedCustomer:ce()}).strict(),p({connected:O(!0),status:O(Bc["selection-required"]),connection:hp,selectedCustomer:ce()}).strict(),p({connected:O(!0),status:O(Bc.connected),connection:hp,selectedCustomer:Xp}).strict(),p({connected:O(!0),status:O(Bc.stale),connection:hp,selectedCustomer:Xp}).strict()]);const pE=p({id:Xe,resourceName:Xe,name:o(),status:q2,advertisingChannelType:o().nullable(),biddingStrategyType:o().nullable()}).strict(),hE=p({id:Xe,resourceName:Xe,name:o(),status:M2,category:o(),origin:o(),primaryForGoal:_(),includeInConversionsMetric:_()}).strict(),fE=p({category:o(),origin:o(),biddable:_()}).strict(),gE=p({campaignId:Xe,category:o(),origin:o(),biddable:_()}).strict(),yE=p({id:Xe,name:o(),conversionActionIds:y(Xe)}).strict(),bE=p({campaignId:Xe,goalConfigLevel:H0,customGoalId:Xe.nullable()}).strict(),vE=p({customerId:Xe,fetchedAt:o(),campaigns:y(pE),conversionActions:y(hE),customerConversionGoals:y(fE),campaignConversionGoals:y(gE),campaignConversionGoalsComplete:_().optional(),customConversionGoals:y(yE),campaignGoalConfigurations:y(bE)}).strict(),xE=p({source:P2,category:o().nullable(),origin:o().nullable(),customGoalId:Xe.nullable(),biddable:_().nullable(),conversionActionIds:y(Xe),primaryConversionActionIds:y(Xe),secondaryConversionActionIds:y(Xe),missingConversionActionIds:y(Xe)}).strict(),kE=p({campaignId:Xe,goalConfigLevel:H0,customGoalId:Xe.nullable(),missingCustomGoalId:Xe.nullable(),goals:y(xE)}).strict();p({customerId:Xe,derivedAt:o(),campaigns:y(kE)}).strict();const V2=50,Jp=31,wE=V2*Jp,SE=p({campaignIds:y(Xe).min(1).max(V2),startDate:Yp,endDate:Yp}).strict().superRefine((e,n)=>{if(new Set(e.campaignIds).size!==e.campaignIds.length&&n.addIssue({code:Ye.custom,path:["campaignIds"],message:"Campaign IDs must be unique."}),e.endDate<e.startDate){n.addIssue({code:Ye.custom,path:["endDate"],message:"endDate must not precede startDate."});return}uE(e.startDate,e.endDate)>Jp&&n.addIssue({code:Ye.custom,path:["endDate"],message:`Campaign metrics may cover at most ${Jp} calendar days.`})}),jE=p({campaignId:Xe,date:Yp,impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),conversionValueMicros:m().int().nonnegative().nullable()}).strict(),AE=p({query:SE,rows:y(jE).max(wE),truncated:_(),fetchedAt:o()}).strict(),L2=A(["accessible-customers","inventory","campaign-metrics"]),fp=L2.enum,K0=p({id:Xe,projectId:Xe,connectionId:Xe,runId:Xe,kind:L2,customerId:Xe.nullable(),payloadChecksum:Ab,rawPayloadSha256:Ab.nullable(),rawPayloadBytes:m().int().nonnegative().nullable(),redactedFieldCount:m().int().nonnegative(),capturedAt:o(),createdAt:o()}).strict(),CE=Be("kind",[p({kind:O(fp["accessible-customers"]),data:mE}).strict(),p({kind:O(fp.inventory),data:vE}).strict(),p({kind:O(fp["campaign-metrics"]),data:AE}).strict()]),NE=p({metadata:K0,payload:CE}).strict().superRefine((e,n)=>{e.metadata.kind!==e.payload.kind&&n.addIssue({code:Ye.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),Ke=o().trim().min(1),Cb=o().regex(/^[a-f0-9]{64}$/i),_E=A(["not-connected","selection-required","connected","stale"]),qc=_E.enum,zE=A(["live","draft"]),U2=zE.enum,Qc=p({accountId:Ke.nullable(),containerId:Ke.nullable(),workspaceId:Ke.nullable(),selectedAt:o().nullable()}).strict(),gp=p({id:Ke,projectId:Ke,scopes:y(o()).default([]),selection:Qc,lastValidatedAt:o().nullable(),lastSnapshotAt:o().nullable(),createdAt:o(),updatedAt:o()}).strict(),G2=p({id:Ke,path:o(),name:o(),shareData:_().nullable()}).strict(),$2=p({accountId:Ke,id:Ke,path:o(),name:o(),publicId:o().nullable(),domainName:o().nullable(),usageContexts:y(o())}).strict(),Q0=p({accountId:Ke,containerId:Ke,id:Ke,path:o(),name:o(),description:o().nullable(),fingerprint:o().nullable()}).strict(),DE=p({accounts:y(G2),totalAccessible:m().int().nonnegative(),truncated:_(),fetchedAt:o()}).strict();p({accountId:Ke,containers:y($2),totalAccessible:m().int().nonnegative(),truncated:_(),fetchedAt:o()}).strict();p({accountId:Ke,containerId:Ke,workspaces:y(Q0),totalAccessible:m().int().nonnegative(),truncated:_(),fetchedAt:o()}).strict();const EE=p({id:Ke,name:o(),type:o(),paused:_(),firingTriggerIds:y(Ke),blockingTriggerIds:y(Ke),referencedVariableIds:y(Ke),parameterKeys:y(o()),fingerprint:o().nullable()}).strict(),TE=p({id:Ke,name:o(),type:o(),customEventNames:y(o()),filterKeys:y(o()),autoEventFilterKeys:y(o()),fingerprint:o().nullable()}).strict(),RE=p({id:Ke,name:o(),type:o(),dataLayerVariableName:o().nullable(),parameterKeys:y(o()),fingerprint:o().nullable()}).strict(),H2=A(["recognized","unknown"]),Nb=H2.enum,OE=A(["literal","variable-ref","absent","unknown"]),ju=OE.enum,BE=o().trim().min(5).max(132).regex(/^\{\{\w[\w ./-]{0,127}\}\}$/),To=p({source:O(ju.absent),literal:ce(),variableRef:ce()}).strict(),Ro=p({source:O(ju.unknown),literal:ce(),variableRef:ce()}).strict(),Oo=p({source:O(ju["variable-ref"]),literal:ce(),variableRef:BE}).strict();function cl(e){return p({source:O(ju.literal),literal:e,variableRef:ce()}).strict()}const qE=o().trim().max(23).regex(/^(?:AW-)?\d{1,20}$/i),ME=o().trim().min(1).max(128).regex(/^[\w-]+$/),PE=o().trim().min(1).max(20).regex(/^(?:0|[1-9]\d{0,11})(?:\.\d{1,6})?$/),IE=o().trim().length(3).regex(/^[a-z]{3}$/i);Be("source",[cl(o().trim().min(1).max(256)),Oo,To,Ro]);const VE=Be("source",[cl(qE),Oo,To,Ro]),LE=Be("source",[cl(ME),Oo,To,Ro]),UE=Be("source",[cl(PE),Oo,To,Ro]),GE=Be("source",[Oo,To,Ro]),$E=Be("source",[cl(IE),Oo,To,Ro]),K2=A(["all-pages","custom-event","filtered","unknown"]);K2.enum;const _b=p({operator:o().trim().min(1).max(64),value:o().max(2048),negated:_(),ignoreCase:_()}).strict(),HE=p({triggerId:Ke,triggerType:o(),eventPredicates:y(_b),hostnamePredicates:y(_b),unsupportedConditionCount:m().int().nonnegative()}).strict(),Q2=A(["not-google-ads-tag","unsupported-tag-type","custom-html-opaque","conversion-id-unresolved","conversion-label-unresolved","value-mapping-missing","transaction-id-mapping-missing","currency-mapping-missing","trigger-unresolved","hostname-filter-unresolved"]);Q2.enum;const KE=p({tagId:Ke,tagType:o(),recognition:H2,recognitionReason:o().nullable(),conversionId:VE,conversionLabel:LE,value:UE,transactionId:GE,currency:$E,triggerStrategy:K2,triggerIds:y(Ke),triggerPredicates:y(HE),reviewReasons:y(Q2)}).strict().superRefine((e,n)=>{e.recognition===Nb.recognized&&e.recognitionReason!==null&&n.addIssue({code:Ye.custom,path:["recognitionReason"],message:"Recognized assessments cannot carry an unknown-recognition reason."}),e.recognition===Nb.unknown&&!e.recognitionReason&&n.addIssue({code:Ye.custom,path:["recognitionReason"],message:"Unknown assessments require a recognition reason."})}),Z2=p({accountId:Ke,containerId:Ke,workspaceId:Ke.nullable(),tags:y(EE),triggers:y(TE),variables:y(RE),googleAdsTagAssessments:y(KE).default([])}).strict(),QE=p({accountId:Ke,containerId:Ke,id:Ke,path:o(),name:o(),description:o().nullable(),fingerprint:o().nullable(),deleted:_()}).strict(),F2=p({source:O(U2.live),version:QE,graph:Z2,fetchedAt:o()}).strict(),Y2=p({source:O(U2.draft),workspace:Q0,graph:Z2,conflictCount:m().int().nonnegative(),fetchedAt:o()}).strict(),ZE=p({account:G2,container:$2,workspaces:y(Q0),live:F2.nullable(),draft:Y2.nullable(),fetchedAt:o()}).strict();Be("status",[p({connected:O(!1),status:O(qc["not-connected"]),connection:ce(),selection:ce()}).strict(),p({connected:O(!0),status:O(qc["selection-required"]),connection:gp,selection:Qc}).strict(),p({connected:O(!0),status:O(qc.connected),connection:gp,selection:Qc}).strict(),p({connected:O(!0),status:O(qc.stale),connection:gp,selection:Qc}).strict()]);const X2=A(["accounts","container","live","draft"]),Mc=X2.enum,Z0=p({id:Ke,projectId:Ke,connectionId:Ke,runId:Ke,kind:X2,accountId:Ke.nullable(),containerId:Ke.nullable(),workspaceId:Ke.nullable(),payloadChecksum:Cb,rawPayloadSha256:Cb.nullable(),rawPayloadBytes:m().int().nonnegative().nullable(),redactedFieldCount:m().int().nonnegative(),capturedAt:o(),createdAt:o()}).strict(),FE=Be("kind",[p({kind:O(Mc.accounts),data:DE}).strict(),p({kind:O(Mc.container),data:ZE}).strict(),p({kind:O(Mc.live),data:F2}).strict(),p({kind:O(Mc.draft),data:Y2}).strict()]),YE=p({metadata:Z0,payload:FE}).strict().superRefine((e,n)=>{e.metadata.kind!==e.payload.kind&&n.addIssue({code:Ye.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),Fa=o().trim().min(1),XE=o().trim().min(1).refine(e=>gu(e)!==null,"Expected a hostname or http(s) URL."),F0=A(["configured","statically-consistent","runtime-unverified","observed"]);F0.enum;const J2=A(["pass","fail","unknown"]);J2.enum;const W2=A(["ads-connection-missing","ads-conversion-action-missing","ads-goal-missing","ads-goal-not-biddable","ads-action-not-primary","gtm-connection-missing","gtm-live-graph-missing","gtm-tag-missing","gtm-tag-unrecognized","gtm-tag-paused","gtm-trigger-missing","gtm-variable-missing","gtm-event-mismatch","gtm-hostname-mismatch","gtm-value-mapping-missing","gtm-transaction-id-mapping-missing","gtm-currency-mapping-missing","gtm-conversion-id-mismatch","gtm-conversion-label-mismatch","runtime-event-not-observed","runtime-gtm-not-observed","runtime-ads-not-observed"]);W2.enum;const ek=p({id:Fa,projectId:Fa,name:o().trim().min(1),eventName:o().trim().min(1),googleAds:p({customerId:Fa,conversionActionId:Fa,conversionId:o().trim().min(1).optional(),conversionLabel:o().trim().min(1).optional(),campaignIds:y(Fa).max(50).default([]),requireBiddableGoal:_().default(!0),requirePrimaryAction:_().default(!0)}).strict(),gtm:p({accountId:Fa,containerId:Fa,tagId:Fa,triggerIds:y(Fa).default([]),variableIds:y(Fa).default([])}).strict(),runtime:p({verificationRequired:_().default(!0),requireTransactionId:_().default(!0),requireValue:_().default(!0),requireCurrency:_().default(!0),productionHosts:y(XE).default([])}).strict(),createdAt:o(),updatedAt:o()}).strict();ek.omit({id:!0,projectId:!0,createdAt:!0,updatedAt:!0});const tk=A(["not-run","consistent","inconsistent"]);tk.enum;const ak=A(["not-run","not-observed","observed"]);ak.enum;p({staticCheck:tk,runtimeVerificationRequired:_(),runtimeObservation:ak}).strict();const JE=p({code:W2,subject:o().trim().min(1),outcome:J2,status:F0,evidenceIds:y(Fa).default([])}).strict(),WE=p({contract:ek,status:F0,findings:y(JE),evaluatedAt:o()}).strict(),Hr=o().trim().min(1);function zb(e){const n=e.trim();return/^\d{10}$/.test(n)?n:/^\d{3}-\d{3}-\d{4}$/.test(n)?n.replaceAll("-",""):null}const eT=/^[\w-]+$/;function Y0(e){const n=e.trim();return eT.test(n)?n:null}function tT(e){const n=e.trim();return/^accounts\/([\w-]+)$/.exec(n)?.[1]??Y0(n)}function aT(e,n){const s=e.trim(),r=/^accounts\/([\w-]+)\/containers\/([\w-]+)$/.exec(s);return r?r[1]===n?r[2]:null:Y0(s)}function nT(e,n,s){const r=e.trim(),u=/^accounts\/([\w-]+)\/containers\/([\w-]+)\/workspaces\/([\w-]+)$/.exec(r);return u?u[1]===n&&u[2]===s?u[3]:null:Y0(r)}function iT(e){const n=zb(e.customerId);if(!n)return null;if(e.loginCustomerId===null)return{loginCustomerId:null,customerId:n};if(e.loginCustomerId===void 0)return{customerId:n};const s=zb(e.loginCustomerId);return s?{loginCustomerId:s,customerId:n}:null}function sT(e){const n=tT(e.accountId);if(!n)return null;const s=aT(e.containerId,n);if(!s)return null;if(e.workspaceId===void 0)return{accountId:n,containerId:s};const r=nT(e.workspaceId,n,s);return r?{accountId:n,containerId:s,workspaceId:r}:null}const Au=A(["google-ads","gtm"]);Au.enum;p({provider:Au,publicUrl:o().url().optional(),developerToken:o().trim().min(1).max(512).optional()}).strict();p({provider:Au,authorizationUrl:o().url(),redirectUri:o().url(),expiresAt:o().nullable()}).strict();p({loginCustomerId:Hr.nullable().optional(),customerId:Hr}).strict().superRefine((e,n)=>{iT(e)||n.addIssue({code:Ye.custom,message:"Expected ten-digit Google Ads customer IDs, with optional 3-3-4 display hyphens."})});p({accountId:Hr,containerId:Hr,workspaceId:Hr.optional()}).strict().superRefine((e,n)=>{sT(e)||n.addIssue({code:Ye.custom,message:"GTM resource paths must match the selected account and container."})});p({provider:Au,disconnected:_()}).strict();const nk=100;p({snapshots:y(K0).max(nk),nextCursor:o().nullable(),total:m().int().nonnegative()}).strict();p({snapshot:NE}).strict();p({snapshots:y(Z0).max(nk),nextCursor:o().nullable(),total:m().int().nonnegative()}).strict();p({snapshot:YE}).strict();p({assessment:WE,googleAdsSnapshot:K0.nullable(),gtmSnapshot:Z0.nullable()}).strict();const oT=p({name:o(),accountName:o().nullable(),type:o().nullable(),role:o().nullable()});p({accounts:y(oT),total:m().int().nonnegative()});const rT=p({id:o(),projectId:o(),accountName:o(),locationName:o(),displayName:o(),primaryCategoryDisplayName:o().nullable(),storefrontAddress:o().nullable(),websiteUri:o().nullable(),placeId:o().nullable(),mapsUri:o().nullable(),additionalCategories:y(o()),description:o().nullable(),serviceArea:Ie(o(),ya()).nullable(),regularHours:Ie(o(),ya()).nullable(),primaryPhone:o().nullable(),openStatus:o().nullable(),openingDate:o().nullable(),selected:_(),syncedAt:o().nullable(),createdAt:o(),updatedAt:o()});p({locations:y(rT),totalDiscovered:m().int().nonnegative(),totalSelected:m().int().nonnegative()});p({selectAllNew:_().default(!0),accountName:o().optional(),switchAccount:_().default(!1)});p({selected:_()});p({locationNames:y(o()).optional(),daysOfMetrics:m().int().positive().max(540).optional(),monthsOfKeywords:m().int().positive().max(18).optional()});p({runId:o(),status:o()});const lT=p({locationName:o(),date:o(),metric:o(),value:m().int()});p({metrics:y(lT),total:m().int().nonnegative()});const cT=p({locationName:o(),periodStart:o(),periodEnd:o(),keyword:o(),valueCount:m().int().nullable(),valueThreshold:m().int().nullable()});p({keywords:y(cT),total:m().int().nonnegative(),thresholdedPct:m().int().min(0).max(100)});const uT=p({locationName:o(),placeActionLinkName:o(),placeActionType:o(),uri:o().nullable(),isPreferred:_(),providerType:o().nullable()});p({placeActions:y(uT),total:m().int().nonnegative()});const dT=p({locationName:o(),populatedGroupCount:m().int().nonnegative(),syncedAt:o(),attributes:Ie(o(),ya())});p({lodging:y(dT),total:m().int().nonnegative()});const mT=p({name:o(),valueType:o(),values:y(Ve([_(),o()])),unsetValues:y(o()),uris:y(o())}),pT=p({locationName:o(),attributeCount:m().int().nonnegative(),syncedAt:o(),attributes:y(mT)});p({attributes:y(pT),total:m().int().nonnegative()});const hT=p({locationName:o(),placeId:o(),tier:o(),amenities:y(o()),syncedAt:o(),place:Ie(o(),ya())});p({places:y(hT),total:m().int().nonnegative()});p({scope:p({locationName:o().nullable(),locationCount:m().int().nonnegative()}),performance:p({totals:Ie(o(),m()),recent7d:Ie(o(),m()),prior7d:Ie(o(),m()),deltaPct:Ie(o(),m().nullable())}),freshness:p({dataThroughDate:o().nullable(),latestStoredDate:o().nullable(),pendingDays:m().int().nonnegative()}),timeseries:y(p({date:o(),pending:_(),metrics:Ie(o(),m())})),keywords:p({total:m().int().nonnegative(),thresholdedCount:m().int().nonnegative(),thresholdedPct:m().int().min(0).max(100)}),placeActions:p({total:m().int().nonnegative(),hasReservationCta:_(),hasBookingCta:_(),hasDirectMerchantCta:_()}),lodging:p({lodgingLocationCount:m().int().nonnegative(),populatedLodgingCount:m().int().nonnegative(),emptyLodgingCount:m().int().nonnegative()}),profileCompleteness:p({locationCount:m().int().nonnegative(),withSecondaryCategories:m().int().nonnegative(),secondaryCategoryTotal:m().int().nonnegative(),withDescription:m().int().nonnegative(),withServiceArea:m().int().nonnegative(),withHours:m().int().nonnegative(),withPrimaryPhone:m().int().nonnegative(),permanentlyClosed:m().int().nonnegative(),temporarilyClosed:m().int().nonnegative()})});const fT={BUSINESS_DIRECTION_REQUESTS:"Direction requests",WEBSITE_CLICKS:"Website clicks",CALL_CLICKS:"Call clicks",BUSINESS_BOOKINGS:"Bookings",BUSINESS_CONVERSATIONS:"Conversations",BUSINESS_FOOD_ORDERS:"Food orders",BUSINESS_FOOD_MENU_CLICKS:"Food menu clicks",BUSINESS_IMPRESSIONS_DESKTOP_SEARCH:"Search impressions (desktop)",BUSINESS_IMPRESSIONS_MOBILE_SEARCH:"Search impressions (mobile)",BUSINESS_IMPRESSIONS_DESKTOP_MAPS:"Maps impressions (desktop)",BUSINESS_IMPRESSIONS_MOBILE_MAPS:"Maps impressions (mobile)"};function gT(e){const n=e.replace(/^BUSINESS_/,"").split("_").filter(Boolean).map(r=>r.toLowerCase());if(n.length===0)return e;const s=n.join(" ");return s.charAt(0).toUpperCase()+s.slice(1)}function z$(e){return fT[e]??gT(e)}const yT=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],bT=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function D$(e){return yT.includes(e)?"conversion":bT.includes(e)?"reach":"other"}p({id:o(),domain:o(),siteUrl:o().nullable().optional(),createdAt:o(),updatedAt:o()});const yp=p({id:o(),url:o(),httpCode:m().nullable().optional(),inIndex:_().nullable().optional(),lastCrawledDate:o().nullable().optional(),inIndexDate:o().nullable().optional(),inspectedAt:o(),documentSize:m().nullable().optional(),anchorCount:m().nullable().optional(),discoveryDate:o().nullable().optional()});p({summary:p({total:m(),indexed:m(),notIndexed:m(),unknown:m().optional(),percentage:m()}),lastInspectedAt:o().nullable(),indexed:y(yp).default([]),notIndexed:y(yp).default([]),unknown:y(yp).default([]).optional()});p({query:o(),impressions:m(),clicks:m(),ctr:m(),averagePosition:m()});p({date:o(),indexed:m(),notIndexed:m(),unknown:m()});const vT=p({url:o(),status:A(["success","error"]),submittedAt:o(),error:o().optional()});p({summary:p({total:m().int().nonnegative(),succeeded:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(vT).default([])});const ik=p({url:o(),verified:_()});p({sites:y(ik).default([])});p({connected:_(),domain:o(),siteUrl:o().nullable(),createdAt:o().nullable(),updatedAt:o().nullable()});p({connected:_(),domain:o(),siteUrl:o().nullable(),availableSites:y(ik).default([])});p({siteUrl:o()});const xT=p({name:o(),alive:_(),lastUsed:o().nullable()});p({connected:_(),endpoint:o(),version:o().optional(),browserVersion:o().optional(),targets:y(xT).default([])});const Bo=A(["live","staging"]);p({projectName:o(),url:o(),stagingUrl:o().optional(),username:o(),defaultEnv:Bo,createdAt:o(),updatedAt:o()});const Db=p({url:o(),reachable:_(),pageCount:m().nullable().optional(),version:o().nullable().optional(),error:o().nullable().optional(),plugins:y(o()).optional(),authenticatedUser:p({id:m(),slug:o()}).nullable().optional()});p({connected:_(),projectName:o(),defaultEnv:Bo,live:Db.nullable(),staging:Db.nullable(),adminUrl:o().nullable().optional()});const kT=p({id:m(),slug:o(),title:o(),status:o(),modifiedAt:o().nullable().optional(),link:o().nullable().optional()}),sk=p({title:o().nullable(),description:o().nullable(),noindex:_().nullable(),writable:_().default(!1),writeTargets:y(o()).default([])}),wT=p({type:o(),json:Ie(o(),ya())}),ST=kT.extend({env:Bo,content:o(),seo:sk,schemaBlocks:y(wT).default([])}),Eb=ST.extend({contentHash:o(),contentSnippet:o()}),ok=p({manualRequired:O(!0),targetUrl:o(),adminUrl:o().nullable().optional(),content:o(),nextSteps:y(o()).default([])}),jT=p({slug:o(),severity:A(["high","medium","low"]),code:A(["noindex","missing-seo-title","missing-meta-description","missing-schema","thin-content"]),message:o()});p({slug:o(),title:o(),status:o(),wordCount:m(),seo:sk,schemaPresent:_(),issues:y(jT).default([])});const AT=p({slug:o(),status:A(["applied","skipped","manual"]),error:o().optional(),manualAssist:ok.optional()});p({env:Bo,strategy:A(["plugin","manual"]),results:y(AT)});const CT=p({slug:o(),status:A(["deployed","stripped","skipped","failed"]),schemasInjected:y(o()).optional(),manualAssist:ok.optional(),error:o().optional()});p({env:Bo,results:y(CT)});const NT=p({slug:o(),title:o(),canonrySchemas:y(o()),thirdPartySchemas:y(o()),hasCanonrySchema:_()});p({env:Bo,pages:y(NT)});const _T=p({name:o(),status:A(["completed","skipped","failed"]),summary:o().optional(),error:o().optional()});p({projectName:o(),steps:y(_T)});p({slug:o(),live:Eb,staging:Eb,hasDifferences:_(),differences:p({title:_(),slug:_(),content:_(),seoTitle:_(),seoDescription:_(),noindex:_(),schema:_()})});const zT=p({name:o(),displayName:o().optional(),keyUrl:o().optional(),modelHint:o().optional(),model:o().optional(),defaultModel:o().optional(),configured:_(),quota:B_.optional(),vertexConfigured:_().optional()}),DT=p({name:o(),displayName:o(),mode:A(["api","browser"]),modelConfigurable:_(),defaultModel:o(),knownModels:y(p({id:o(),displayName:o(),tier:A(["flagship","standard","fast","economy"])})).default([]),modelValidationPattern:p({source:o(),flags:o()}),modelValidationHint:o()}),Tb=p({configured:_()});p({providers:y(zT).default([]),providerCatalog:y(DT).default([]),google:Tb,bing:Tb});const en=A(["queued","running","completed","partial","failed","cancelled"]),sa=en.enum,rk=A(["answer-visibility","site-audit","gsc-sync","inspect-sitemap","ga-sync","bing-inspect","bing-inspect-sitemap","backlink-extract","traffic-sync","aeo-discover-seed","aeo-discover-probe","gbp-sync","ads-sync","google-ads-sync","gtm-sync"]),Te=rk.enum,X0=A(["manual","scheduled","config-apply","backfill","probe"]),go=X0.enum,Pn=A(["cited","not-cited"]),su=Pn.enum,ou=A(["visible","not-visible"]);ou.enum;const Wr=A(["mentioned","not-mentioned"]);Wr.enum;const lk=A(["new","cited","lost","emerging","not-cited"]);lk.enum;const ET=A(["new","mentioned","lost","emerging","not-mentioned"]);ET.enum;const TT=A([go.manual,go.probe]);p({kind:O(Te["answer-visibility"]).optional(),trigger:TT.optional(),providers:y(ft).optional(),queries:y(o().min(1)).min(1).optional(),measurementScope:E9.optional(),location:o().min(1).optional(),allLocations:_().optional(),noLocation:_().optional()}).refine(e=>+!!e.location+ +!!e.allLocations+ +!!e.noLocation<=1,{message:'Only one of "location", "allLocations", or "noLocation" may be provided'});const RT=p({message:o(),raw:ya().optional()}),OT=p({message:o().optional(),providers:Ie(o(),RT).optional()}),BT=p({id:o(),projectId:o(),kind:rk,status:en,trigger:X0.default("manual"),measurementPlanVersionId:o().nullable().optional(),measurementManifest:Ie(o(),ya()).nullable().optional(),measurementScope:T9.nullable().optional(),measurementExecutionIdentity:v2.nullable().optional(),location:o().nullable().optional(),queries:y(o()).nullable().optional(),startedAt:o().nullable().optional(),finishedAt:o().nullable().optional(),error:OT.nullable().optional(),queryBasketRevision:m().int().nullable().optional(),createdAt:o()});function J0(e){if(e.providers){const n=Object.entries(e.providers);if(n.length===1){const[s,r]=n[0];return`${s}: ${r.message}`}if(n.length>1)return n.map(([s,r])=>`${s}: ${r.message}`).join(" • ")}return e.message??"Run failed."}const Cu=p({uri:o(),title:o()}),qT=p({status:A(["applied","ignored","browser-implicit","unknown"]),resolved:la.nullable().optional()}),ck=p({id:o(),runId:o(),queryId:o(),query:o().optional(),provider:ft,citationState:Pn,answerMentioned:_().optional(),visibilityState:ou.optional(),mentionState:Wr.optional(),transition:lk.optional(),answerText:o().nullable().optional(),citedDomains:y(o()).default([]),citedUrls:y(o()).nullable().default(null),captureStatus:Ve([vu,ce()]).default(null),sourceCount:m().int().nonnegative().nullable().default(null),resolvedCount:m().int().nonnegative().nullable().default(null),captureVersion:m().int().positive().nullable().default(null),retrievalStatus:Ve([V0,ce()]).default(null),retrievalContract:Ve([L0,ce()]).default(null),competitorOverlap:y(o()).default([]),citedCompetitorDomains:y(o()).default([]),mentionedCompetitorDomains:y(o()).default([]),recommendedCompetitors:y(o()).default([]),matchedTerms:y(o()).default([]),groundingSources:y(Cu).default([]),searchQueries:y(o()).default([]),model:o().nullable().optional(),servedModel:o().nullable().optional(),location:o().nullable().optional(),requestedContext:la.nullable().optional(),supportedContext:qT.nullable().optional(),createdAt:o()});p({snapshots:y(ck),total:m().int().nonnegative()});const MT=p({queryId:o().nullable(),query:o().nullable(),run1State:Pn.nullable(),run2State:Pn.nullable(),run1AnswerMentioned:_().nullable(),run2AnswerMentioned:_().nullable(),run1VisibilityState:ou.nullable(),run2VisibilityState:ou.nullable(),run1MentionState:Wr.nullable().optional(),run2MentionState:Wr.nullable().optional(),changed:_(),visibilityChanged:_()});p({run1:o(),run2:o(),diff:y(MT)});const PT=BT.extend({snapshots:y(ck).optional()}),IT=p({totalRuns:m().int().nonnegative(),run:PT.nullable()});p({id:o(),projectId:o().nullable().optional(),actor:o(),action:o(),entityType:o(),entityId:o().nullable().optional(),diff:ya().optional(),userAgent:o().nullable().optional(),actorSession:o().nullable().optional(),createdAt:o()});const VT=A(["yes","no","unknown","not-mentioned"]),Rb=y(o().min(1));p({companyName:o().min(1),domain:o().min(1),queries:Rb.optional(),phrases:Rb.optional(),competitors:y(o().min(1)).optional().default([])}).superRefine((e,n)=>{e.queries!==void 0&&e.phrases!==void 0&&n.addIssue({code:"custom",message:"Use queries; phrases is accepted only as a legacy alias when queries is omitted",path:["phrases"]})});const LT=p({name:o(),count:m().int().nonnegative()}),UT=p({id:o(),name:o(),weight:m(),score:m(),findings:y(p({type:o(),message:o()})).default([]),recommendations:y(o()).default([])}),GT=p({url:o(),finalUrl:o(),auditedAt:o(),overallScore:m(),summary:o(),factors:y(UT).default([])}),$T=p({industry:o(),summary:o(),services:y(o()).default([]),categoryTerms:y(o()).default([])}),HT=p({provider:o(),displayName:o(),model:o().nullable().optional(),mentioned:_(),cited:_(),describedAccurately:VT,accuracyNotes:o().nullable().optional(),incorrectClaims:y(o()).default([]),recommendedCompetitors:y(o()).default([]),citedDomains:y(o()).default([]),groundingSources:y(Cu).default([]),searchQueries:y(o()).default([]),answerText:o(),error:o().nullable().optional()}),KT=p({query:o(),providerResults:y(HT).default([])}),QT=p({totalQueries:m().int().nonnegative(),totalProviders:m().int().nonnegative(),totalComparisons:m().int().nonnegative(),mentionCount:m().int().nonnegative(),citationCount:m().int().nonnegative(),topCompetitors:y(LT).default([]),visibilityGap:o(),whatThisMeans:y(o()).default([]),recommendedActions:y(o()).default([])});p({companyName:o(),domain:o(),homepageUrl:o(),generatedAt:o(),queries:y(o()).default([]),competitors:y(o()).default([]),profile:$T,audit:GT,queryResults:y(KT).default([]),summary:QT});const uk=Ve([en,ce()]),W0=A(["pass","partial","fail"]);W0.enum;const dk=A(["up","down","flat"]);dk.enum;const ZT=p({id:o(),name:o(),weight:m(),avgScore:m(),status:W0,pagesPassing:m().int().nonnegative(),pagesPartial:m().int().nonnegative(),pagesFailing:m().int().nonnegative()}),FT=p({factorId:o(),factorName:o(),avgScore:m(),affectedPages:m().int().nonnegative(),totalPages:m().int().nonnegative(),affectedPct:m().int().nonnegative(),topRecommendations:y(o()).default([])});p({project:o(),hasData:_(),runId:o().nullable(),runStatus:uk,sitemapUrl:o().nullable(),auditedAt:o().nullable(),aggregateScore:m(),pagesDiscovered:m().int().nonnegative(),pagesAudited:m().int().nonnegative(),pagesSkipped:m().int().nonnegative(),pagesErrored:m().int().nonnegative(),deltaScore:m().nullable(),trend:Ve([dk,ce()]),previousScore:m().nullable(),previousAuditedAt:o().nullable(),factors:y(ZT).default([]),crossCuttingIssues:y(FT).default([]),prioritizedFixes:y(o()).default([])});const mk=p({id:o(),name:o(),weight:m(),score:m()}),YT=p({url:o(),overallScore:m(),status:A(["success","error"]),error:o().nullable().optional(),factors:y(mk).default([])});p({project:o(),runId:o().nullable(),auditedAt:o().nullable(),total:m().int().nonnegative(),pages:y(YT).default([])});const XT=p({runId:o(),auditedAt:o(),aggregateScore:m(),pagesAudited:m().int().nonnegative()});p({project:o(),points:y(XT).default([])});const JT=A(["disabled","complete","partial","unavailable"]);JT.enum;const WT=p({pagesDiscovered:m().int().nonnegative(),pagesFetched:m().int().nonnegative(),pagesEligible:m().int().nonnegative(),edges:m().int().nonnegative(),findings:m().int().nonnegative()}),eR=Be("state",[p({state:O("unavailable")}),p({state:O("disabled")}),p({state:O("complete"),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative()}),p({state:O("partial"),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative()})]);p({project:o(),hasCrawlData:_(),legacyAuditAvailable:_(),runId:o().nullable(),runStatus:uk,requestedRootUrl:o().nullable(),rootUrl:o().nullable(),crawlSchemaVersion:o().nullable().optional(),engineVersion:o().nullable().optional(),normalizationVersion:o().nullable().optional(),indexabilityVersion:o().nullable().optional(),linkScoreVersion:o().nullable().optional(),effectiveOptions:Ie(o(),ya()).default({}),complete:_(),termination:o().nullable(),detailsAvailable:_(),counts:WT,deadLinks:eR});A(["complete","unknown","max-pages","max-edges","max-fetches","max-duration","max-bytes","max-page-bytes","max-depth","max-links-per-page","max-query-variants","max-sitemap-fanout","max-sitemap-urls","root-host-redirect"]);const Nu=A(["eligible","hidden","resource","redirect","failed","unchecked"]),E$=Nu.enum,T$=Nu.options,lo={discovered:"discovered",robotsBlocked:"robots-blocked",html:"html",redirect:"redirect",nonHtml:"non-html",fetchError:"fetch-error"},Pc={indexable:"indexable",noindex:"noindex",blocked:"blocked",unknown:"unknown"},tR={robotsDisallow:"robots-disallow",redirectTerminal:"redirect-terminal",metaRobotsNoindex:"meta-robots-noindex",xRobotsNoindex:"x-robots-noindex",canonicalToOther:"canonical-to-other",notHtmlOrUnavailable:"not-html-or-unavailable"};function aR(e){return e.indexabilityReasons?.some(n=>n===tR.canonicalToOther)===!0||e.nodeKey!==void 0&&e.canonicalNodeKey!==null&&e.canonicalNodeKey!==void 0&&e.canonicalNodeKey!==e.nodeKey}function R$(e){switch(e.fetchState){case lo.fetchError:return"failed";case lo.discovered:return"unchecked";case lo.nonHtml:return"resource";case lo.redirect:return"redirect";case lo.robotsBlocked:return"hidden";case lo.html:break;default:return"unchecked"}if(aR(e))return"hidden";switch(e.indexabilityState){case Pc.indexable:return"eligible";case Pc.noindex:case Pc.blocked:return"hidden";case Pc.unknown:default:return"unchecked"}}const O$=15,nR=A(["navigation","content","unknown"]);nR.enum;const iR=p({navigation:m().int().nonnegative(),content:m().int().nonnegative(),unknown:m().int().nonnegative()}),pk=A(["placement","ubiquity","unmeasured"]);pk.enum;const _u=A(["applied","applied-placement","applied-placement-with-ubiquity","applied-placement-partial","unavailable-too-few-pages","unavailable-legacy-scan"]);_u.enum;function B$(e){switch(e){case"applied":case"applied-placement":case"applied-placement-with-ubiquity":case"applied-placement-partial":return!0;case"unavailable-too-few-pages":case"unavailable-legacy-scan":return!1}}const zu=A(["all","content","template"]);zu.enum;const sR=A(["anchor","redirect","canonical","link"]);sR.enum;const el=p({nodeKey:o(),url:o(),finalUrl:o().nullable(),path:o(),parentPath:o(),discoverySource:o(),fetchState:o(),httpStatus:m().int().nullable(),canonicalUrl:o().nullable(),indexabilityState:o(),indexabilityReasons:y(o()).default([]),auditState:o(),auditScore:m().nullable(),inventoryEligible:_(),depth:m().int().nullable(),inboundUniqueEdges:m().int().nonnegative(),outboundUniqueEdges:m().int().nonnegative(),inboundOccurrences:m().int().nonnegative(),outboundOccurrences:m().int().nonnegative(),linkScoreRaw:m().nullable(),linkScoreNormalized:m().nullable(),healthState:Nu}),oR=p({type:A(["found","missing","info","timeout","unreachable"]),code:o().min(1),message:o().min(1)}),Ob=mk.extend({status:W0,applicable:_().nullable(),findings:y(oR).default([]),recommendations:y(o()).default([])}),Bb=p({id:o().min(1),severity:A(["critical","warning"]),detail:o().min(1),recommendation:o().min(1)}),Ic=p({project:o(),runId:o(),complete:_(),termination:o().nullable()}),qb=p({nodeKey:o(),url:o(),auditState:o()});Be("state",[p({state:O("no-crawl"),project:o(),runId:ce()}),Ic.extend({state:O("details-unavailable")}),Ic.extend({state:O("not-found")}),Ic.merge(qb).extend({state:O("not-audited"),auditScore:ce(),factors:y(Ob).length(0).default([]),criticalDefects:y(Bb).length(0).default([])}),Ic.merge(qb).extend({state:O("ready"),auditScore:m(),evidenceState:A(["complete","scores-only"]),factors:y(Ob).default([]),criticalDefects:y(Bb).default([])})]);const rR=A(["applied","unavailable-legacy-scan"]);p({project:o(),hasCrawlData:_(),runId:o().nullable(),total:m().int().nonnegative(),nextCursor:o().nullable(),healthStateFilter:Ve([rR,ce()]).default(null),pages:y(el).default([])});const lR=p({path:o(),url:o().nullable(),hasPage:_(),pageCount:m().int().positive(),inventoryEligibleCount:m().int().nonnegative(),fetchedCount:m().int().nonnegative()});p({project:o(),hasCrawlData:_(),runId:o().nullable(),parentPath:o(),nextCursor:o().nullable(),children:y(lR).default([])});const ds=p({edgeKey:o(),sourceNodeKey:o(),sourceUrl:o(),targetNodeKey:o().nullable(),targetUrl:o(),relation:o(),internal:_(),followable:_(),occurrences:m().int().positive(),followableOccurrences:m().int().nonnegative(),nofollowOccurrences:m().int().nonnegative(),anchors:y(o()).default([]),isTemplate:Ve([_(),ce()]),templateRatio:Ve([m(),ce()]),templateSource:pk,placementOccurrences:Ve([iR,ce()])}),cR=p({nodeKey:o(),url:o(),path:o(),depth:m().int().nonnegative().nullable(),indexabilityState:o(),fetchState:o(),auditState:o(),auditScore:m().nullable(),inventoryEligible:_(),inboundUniqueEdges:m().int().nonnegative(),outboundUniqueEdges:m().int().nonnegative(),linkScoreNormalized:m().nullable(),healthState:Nu,x:m(),y:m()}),uR=p({edgeKey:o(),sourceNodeKey:o(),targetNodeKey:o(),followable:_(),occurrences:m().int().positive(),isTemplate:_()}),dR=A(["no-crawl","legacy-snapshot","details-unavailable","layout-failed","empty-crawl"]),mR=Be("state",[p({state:O("ready"),version:o().min(1),computedAt:o().min(1),templateLinksExcluded:_()}),p({state:O("unavailable"),version:ce(),reason:dR})]);p({project:o(),hasCrawlData:_(),runId:o().nullable(),rootNodeKey:o().nullable(),layout:mR,templateDetection:_u,linkKind:zu,totalNodes:m().int().nonnegative(),totalEdges:m().int().nonnegative(),totalTemplateEdges:m().int().nonnegative(),totalContentEdges:m().int().nonnegative(),nodes:y(cR).default([]),edges:y(uR).default([]),omittedNodes:m().int().nonnegative(),omittedEdges:m().int().nonnegative(),sampled:_()});const q$=2e4,M$=5e4,pR=A(["focus","inbound","outbound","both","transitive"]),hR=el.extend({distance:m().int().nonnegative(),relationToFocus:pR});p({project:o(),hasCrawlData:_(),runId:o().nullable(),complete:_(),termination:o().nullable(),state:A(["no-crawl","details-unavailable","ready"]),focusNodeKey:o().nullable(),focusUrl:o().nullable(),hops:m().int().min(0).max(3),totalNodes:m().int().nonnegative(),totalEdges:m().int().nonnegative(),nodes:y(hR).default([]),edges:y(ds).default([]),omittedNodes:m().int().nonnegative(),omittedEdges:m().int().nonnegative(),countAccuracy:A(["exact","lower-bound"]),truncated:_()});const Mb=p({nodeKey:o(),url:o(),path:o()});p({project:o(),runId:o().nullable(),complete:_(),termination:o().nullable(),state:A(["no-crawl","details-unavailable","found","unreachable","truncated"]),from:Mb.nullable(),to:Mb.nullable(),maxDepth:m().int().positive(),visitedNodes:m().int().nonnegative(),nodes:y(el).default([]),edges:y(ds).default([])});const hk=A(["added","removed","changed"]),fR=p({entity:O("page"),change:hk,key:o(),changedFields:y(o()).default([]),before:el.nullable(),after:el.nullable()}),gR=p({entity:O("link"),change:hk,key:o(),changedFields:y(o()).default([]),before:ds.nullable(),after:ds.nullable()}),yR=Be("entity",[fR,gR]),Pb=p({added:m().int().nonnegative(),removed:m().int().nonnegative(),changed:m().int().nonnegative()}),bR=p({scope:A(["all","pages","links"]),change:A(["all","added","removed","changed"])});Be("state",[p({project:o(),state:O("unavailable"),reason:A(["no-crawl","insufficient-history","details-unavailable","partial-not-comparable"]),fromRunId:o().nullable(),toRunId:o().nullable()}),p({project:o(),state:O("incompatible"),reason:O("incompatible-versions"),fromRunId:o(),toRunId:o(),mismatchedVersions:y(o()).min(1)}),p({project:o(),state:O("ready"),fromRunId:o(),toRunId:o(),versions:p({crawlSchema:o(),normalization:o(),indexability:o(),linkScore:o()}),filters:bR,summaryState:A(["exact","omitted-on-continuation"]),summary:p({pages:Pb,links:Pb}).nullable(),total:m().int().nonnegative().nullable(),nextCursor:o().nullable(),changes:y(yR).default([])})]);p({project:o(),hasCrawlData:_(),runId:o().nullable(),total:m().int().nonnegative(),nextCursor:o().nullable(),templateDetection:_u,linkKind:zu,edges:y(ds).default([])});p({project:o(),hasCrawlData:_(),runId:o().nullable(),nodeKey:o().nullable(),url:o().nullable(),templateDetection:_u,linkKind:zu,inbound:y(ds).default([]),outbound:y(ds).default([]),inboundTruncated:_(),outboundTruncated:_()});const Ib=p({findingKey:o(),severity:o(),sourceNodeKey:o().nullable(),sourceUrl:o().nullable(),targetNodeKey:o().nullable(),targetUrl:o().nullable(),evidence:Ie(o(),ya()).default({})});Be("state",[p({project:o(),runId:o().nullable(),state:O("unavailable"),legacyAuditAvailable:_()}),p({project:o(),runId:o(),state:O("disabled"),checkDeadLinks:O(!1)}),p({project:o(),runId:o(),state:O("complete"),checkDeadLinks:O(!0),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative(),total:m().int().nonnegative(),nextCursor:o().nullable(),deadLinks:y(Ib).default([])}),p({project:o(),runId:o(),state:O("partial"),checkDeadLinks:O(!0),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative(),total:m().int().nonnegative(),nextCursor:o().nullable(),deadLinks:y(Ib).default([])})]);p({sitemapUrl:o().url().optional(),limit:m().int().positive().max(2e3).optional(),maxPages:m().int().positive().max(5e4).optional(),maxEdges:m().int().positive().max(1e6).optional(),maxDepth:m().int().min(0).max(100).optional(),checkDeadLinks:_().default(!1)});p({runId:o(),status:en});const vR=p({runId:o(),status:en,createdAt:o(),startedAt:o().nullable(),finishedAt:o().nullable(),hasCrawlData:_()});p({project:o(),scans:y(vR).default([])});const xR=A(["queued","discovering","checking","arranging-map","completed","partial","failed","cancelled"]),kR=p({state:A(["pending","ready","unavailable"]),layoutVersion:o().nullable(),failureCode:o().nullable(),updatedAt:o().nullable()}),wR=p({id:o(),state:o(),pagesDiscovered:m().int().nonnegative(),pagesFetched:m().int().nonnegative(),pagesEligible:m().int().nonnegative(),pagesErrored:m().int().nonnegative(),edgesDiscovered:m().int().nonnegative(),lastUpdatedAt:o(),startedAt:o().nullable(),finishedAt:o().nullable(),error:o().nullable()});p({project:o(),runId:o(),status:en,phase:xR,attempt:wR.nullable(),layout:kR,error:o().nullable()});const SR=A(["waiting","collecting","terminal"]),jR=p({nodeKey:o(),url:o(),auditScore:m(),checksNeedingAttention:m().int().nonnegative()});p({project:o(),runId:o(),status:en,state:SR,attemptId:o().nullable(),pagesAudited:m().int().nonnegative(),updatedAt:o().nullable(),examples:y(jR).max(12).default([])});const eh=A(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync","doctor"]);eh.enum;p({id:o(),projectId:o(),kind:eh,cronExpr:o(),preset:o().nullable().optional(),timezone:o().default("UTC"),enabled:_().default(!0),providers:y(ft).default([]),sourceId:o().nullable().optional(),lastRunAt:o().nullable().optional(),nextRunAt:o().nullable().optional(),createdAt:o(),updatedAt:o()});p({kind:eh.optional(),preset:o().optional(),cron:o().optional(),timezone:o().optional().default("UTC"),enabled:_().optional().default(!0),providers:y(ft).optional().default([]),sourceId:o().optional()}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'});const th=A(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);th.enum;const ah=A(["cited","aspirational","wasted-surface"]),Vb=ah.enum;Vb.cited,Vb.aspirational;const Du=A(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),AR=Du.enum;AR["direct-competitor"];const Eu=A(["queued","seeding","probing","completed","failed"]);Eu.enum;const fk=p({domain:o().min(1),hits:m().int().positive(),competitorType:Du.default("unknown")}),CR=p({id:o(),sessionId:o(),projectId:o(),query:o(),bucket:ah.nullable().default(null),citationState:Pn,citedDomains:y(o()).default([]),answerMentioned:_().nullable().default(null),createdAt:o()}),NR=p({id:o(),projectId:o(),status:Eu,icpDescription:o().nullable().optional(),seedProvider:o().nullable().optional(),seedCountRaw:m().int().nullable().optional(),seedCount:m().int().nullable().optional(),seedFromAnswerCount:m().int().nullable().optional(),seedFromGroundingCount:m().int().nullable().optional(),seedBrandFilteredCount:m().int().nullable().optional(),buyerDescription:o().nullable().optional(),locations:y(la).nullable().optional(),seedRawCandidates:y(o()).nullable().optional(),dedupClusterMinSims:y(m()).nullable().optional(),dedupBandPairFraction:m().nullable().optional(),dedupPairsTotal:m().int().nullable().optional(),seedProviders:y(o()).nullable().optional(),seedProviderCounts:Ie(o(),m().int()).nullable().optional(),canonicalCount:m().int().nullable().optional(),dedupThreshold:m().nullable().optional(),probeCount:m().int().nullable().optional(),citedCount:m().int().nullable().default(null),aspirationalCount:m().int().nullable().default(null),wastedCount:m().int().nullable().default(null),competitorMap:y(fk).default([]),warning:o().nullable().optional(),error:o().nullable().optional(),startedAt:o().nullable().optional(),finishedAt:o().nullable().optional(),createdAt:o()});NR.extend({probes:y(CR).default([])});const _R=500,zR=8,DR=["gemini","openai"],ER=A(DR);p({icpDescription:o().min(1).optional(),buyerDescription:o().min(1).optional(),seedProviders:y(ER).min(1).transform(e=>[...new Set(e)].sort()).optional(),dedupThreshold:m().min(0).max(1).optional(),maxProbes:m().int().positive().max(_R).optional(),probeConcurrency:m().int().min(1).max(zR).optional(),locations:y(o().min(1)).optional()});p({buckets:y(ah).min(1).optional(),includeCompetitors:_().optional(),competitorTypes:y(Du).min(1).optional()});p({sessionId:o(),projectId:o(),status:Eu,queriesByBucket:p({cited:y(o()),aspirational:y(o()),"wasted-surface":y(o())}),suggestedCompetitors:y(fk)});p({sessionId:o(),projectId:o(),promoted:p({queries:y(o()),competitors:y(o())}),skipped:p({queries:y(o()),competitors:y(o())})});Ve([O("cli"),o().regex(/^discovery:.+$/)]);const TR=p({query:o().min(1),probeHits:m().int().positive()}),RR=p({rawCandidates:m().int().nonnegative(),admitted:m().int().nonnegative(),rejected:p({belowFloor:m().int().nonnegative(),length:m().int().nonnegative(),navigational:m().int().nonnegative(),duplicate:m().int().nonnegative(),offAnchor:m().int().nonnegative(),semanticDuplicate:m().int().nonnegative()})});p({sessionId:o(),projectId:o(),provider:o(),status:Eu,minProbeHits:m().int().positive(),anchorApplied:_(),semanticNoveltyApplied:_(),candidates:y(TR),stats:RR});const nh=A(["own","direct-competitor","ota-aggregator","editorial-media","other"]);nh.enum;const gk=A(["7d","30d","90d","all"]),Lb=A(["improving","declining","stable"]),OR=A(["mentioned","cited"]);OR.enum;const Wp=p({citationRate:m(),cited:m().int(),total:m().int(),mentionRate:m(),mentionedCount:m().int()}),ih=o().trim().min(1),BR=y(ih).min(1).superRefine((e,n)=>{for(let s=1;s<e.length;s+=1)e[s-1]>=e[s]&&n.addIssue({code:"custom",message:"mixed model IDs must be sorted and unique",path:[s]})}),jo=Be("status",[p({status:O("known"),model:ih}),p({status:O("unknown")}),p({status:O("mixed"),models:BR,includesUnknown:_()})]),qR=p({observedAt:o(),bucketStartDate:o(),from:jo,to:jo,fromPreWindowAnchor:_().optional(),anchorObservedAt:o().optional()}),yk=p({latestObservation:p({observedAt:o(),state:jo}),events:y(qR),eventTotal:m().int().nonnegative().optional(),anchorUnavailable:_().optional()}),MR=Ie(o(),yk),PR=yk.extend({latestServedModelIds:y(ih).default([])}),IR=Ie(o(),PR),VR=p({observedAt:o(),configured:jo,served:jo}),LR=p({scope:A(["non-brand","pooled"]),rate:m().nullable(),projectMentionSnapshots:m().int().nonnegative(),competitorMentionSnapshots:m().int().nonnegative()}),UR=p({startDate:o(),endDate:o(),dataStartDate:o(),dataEndDate:o(),sweepCount:m().int().nonnegative(),citationRate:m(),cited:m().int(),total:m().int(),queryCount:m().int(),mentionRate:m(),mentionedCount:m().int(),mentionShare:LR,byProvider:Ie(o(),Wp),modelEvidenceByProvider:Ie(o(),jo).default({}),basketRevision:m().int().nullable().default(null)}),GR=p({revision:m().int(),at:o(),added:y(o()),removed:y(o())}),$R=p({date:o(),delta:m().int(),label:o()}),HR=p({at:o(),identity:v2});p({window:gk,mentionShareScope:A(["non-brand","pooled"]),buckets:y(UR),overall:Wp,byProvider:Ie(o(),Wp),trend:Lb,mentionTrend:Lb,queryChanges:y($R),basketChanges:y(GR).default([]),executionIdentityChanges:y(HR).default([]),referenceBasketRevision:m().int().nullable().default(null),modelAttribution:MR.default({}),servedModelAttribution:IR.default({}),modelServiceMismatch:Ie(o(),VR).default({}),modelPointerChanges:Ie(o(),$D).default({})});const Ub=p({category:th,label:o(),count:m().int(),percentage:m(),topDomains:y(p({domain:o(),count:m().int()}))}),KR=p({domain:o(),count:m().int(),percentage:m(),category:th,label:o(),surfaceClass:nh}),QR=p({surfaceClass:nh,label:o(),count:m().int(),percentage:m(),domainCount:m().int()}),Gb=p({totalCitedSlots:m().int(),domainTotal:m().int(),entries:y(KR),truncatedDomainCount:m().int(),truncatedCitedSlots:m().int(),bySurfaceClass:y(QR)});p({overall:y(Ub),byQuery:Ie(o(),y(Ub)),ranked:Gb,byProvider:Ie(o(),Gb),runId:o(),window:gk,limit:m().int().nullable()});const sh=p({total:m().int(),checked:m().int(),mentioned:m().int(),cited:m().int(),mentionRate:m().nullable(),citedRate:m().nullable()}),bk=sh.extend({provider:o(),firstObserved:o(),lastObserved:o()}),ZR=sh.extend({queryId:o().nullable(),query:o(),firstObserved:o(),lastObserved:o(),providers:y(bk).optional()}),FR=p({since:o().nullable(),until:o().nullable(),lastRuns:m().int().nullable(),runCount:m().int()}),YR=A(["provider"]),e0=p({domain:o(),mentions:m().int()}),XR=p({queryClass:A(["branded","non-brand","pooled"]),percent:m().nullable(),competitorCount:m().int().nonnegative(),projectMentions:m().int(),competitorMentions:m().int(),snapshotsWithAnswerText:m().int(),perCompetitor:y(e0)});p({project:o(),groupBy:YR.optional(),window:FR,totals:sh,byProvider:y(bk).optional(),queries:y(ZR),shareOfVoice:XR.optional()});const JR=A(["within-noise","moved","insufficient-data","model-discontinuous","model-unknown"]),WR=A(["up","down","flat"]),$b=p({availability:A(["available","no-observations","no-competitive-frame"]),point:m().nullable(),ciLow:m().nullable(),ciHigh:m().nullable(),numerator:m().int(),denominator:m().int()}),eO=A(["mention-share-of-voice","cited-share-of-voice","mention-rate","cited-rate"]),tO=p({key:eO,label:o(),queryClass:A(["all","non-brand","pooled"]),driftRobust:_(),from:$b,to:$b,rateRatio:m().nullable(),direction:Ve([WR,ce()]),verdict:JR}),Hb=p({month:o(),since:o(),until:o(),runCount:m().int(),lowRunCount:_()}),aO=p({queryCount:m().int(),excludedFromOnly:m().int(),excludedToOnly:m().int(),providers:y(o()),excludedProviders:y(o())}),nO=p({provider:o(),fromModels:y(o()),toModels:y(o())}),iO=A(["included","model-discontinuous","model-unknown"]),sO=p({provider:o(),status:iO,fromModels:y(o()),toModels:y(o())}),oO=A(["comparable","model-discontinuous","model-unknown","insufficient-data"]),rO=p({status:oO,comparedProviders:y(o()),providers:y(sO)}),lO=p({provider:o(),from:p({checked:m().int(),mentioned:m().int(),cited:m().int()}),to:p({checked:m().int(),mentioned:m().int(),cited:m().int()})}),cO=p({from:p({count:m().int(),of:m().int()}),to:p({count:m().int(),of:m().int()})});p({project:o(),from:Hb,to:Hb,basket:aO,metrics:y(tO),queriesMentioned:cO,byProvider:y(lO),modelChanges:y(nO),continuity:rO,competitors:p({from:y(e0),to:y(e0)})});A(["json","csv"]);const uO=p({runId:o(),runKind:O("answer-visibility"),runStatus:en,runTrigger:X0,runCreatedAt:o(),runStartedAt:o().nullable(),runFinishedAt:o().nullable(),snapshotId:o(),snapshotCreatedAt:o(),queryId:o().nullable(),query:o().nullable(),provider:o(),model:o().nullable(),location:o().nullable(),citationState:Pn,cited:_(),answerMentioned:_().nullable(),mentionState:Ve([Wr,ce()]),citedDomains:y(o()),citedUrls:y(o()).nullable(),captureStatus:Ve([vu,ce()]),sourceCount:m().int().nonnegative().nullable(),resolvedCount:m().int().nonnegative().nullable(),captureVersion:m().int().positive().nullable(),competitorOverlap:y(o()),recommendedCompetitors:y(o()),answerText:o().nullable(),groundingSources:y(Cu),searchQueries:y(o())}),dO=p({since:o().nullable(),until:o().nullable(),includeProbes:_()});p({schemaVersion:O("canonry.results-export/v1"),generatedAt:o(),project:p({id:o(),name:o(),displayName:o(),canonicalDomain:o(),country:o(),language:o()}),filters:dO,recordCount:m().int().nonnegative(),records:y(uO)});const Tu=A(["organic","paid"]);Tu.enum;p({id:o(),projectId:o(),propertyId:o(),clientEmail:o(),connected:_(),createdAt:o(),updatedAt:o()});p({date:o(),landingPage:o(),sessions:m(),organicSessions:m(),users:m()});const oh=A(["session","first_user","manual_utm"]),mO=p({source:o(),medium:o(),trafficClass:Tu,sessions:m(),users:m().optional(),sourceDimension:oh}),pO=p({source:o(),medium:o(),trafficClass:Tu,sourceDimension:oh,landingPage:o(),sessions:m(),users:m().optional()}),hO=p({source:o(),medium:o(),sessions:m(),users:m(),channelGroup:o()}),Pr=p({sessions:m(),sharePct:m(),sharePctDisplay:o()}),fO=p({organic:Pr,social:Pr,direct:Pr,ai:Pr,other:Pr});p({totalSessions:m(),totalOrganicSessions:m(),totalDirectSessions:m(),totalUsers:m().nullable(),topPages:y(p({landingPage:o(),sessions:m(),organicSessions:m(),directSessions:m(),users:m()})),aiReferrals:y(mO),aiReferralLandingPages:y(pO),aiSessionsDeduped:m(),aiUsersDeduped:m().optional(),paidAiSessionsDeduped:m(),paidAiUsersDeduped:m().optional(),organicAiSessionsDeduped:m(),organicAiUsersDeduped:m().optional(),aiSessionsBySession:m(),aiUsersBySession:m().optional(),paidAiSessionsBySession:m(),paidAiUsersBySession:m().optional(),organicAiSessionsBySession:m(),organicAiUsersBySession:m().optional(),socialReferrals:y(hO),socialSessions:m(),socialUsers:m(),channelBreakdown:fO,organicSharePct:m(),aiSharePct:m(),aiSharePctBySession:m(),paidAiSharePct:m(),paidAiSharePctBySession:m(),organicAiSharePct:m(),organicAiSharePctBySession:m(),directSharePct:m(),socialSharePct:m(),organicSharePctDisplay:o(),aiSharePctDisplay:o(),aiSharePctBySessionDisplay:o(),paidAiSharePctDisplay:o(),paidAiSharePctBySessionDisplay:o(),organicAiSharePctDisplay:o(),organicAiSharePctBySessionDisplay:o(),directSharePctDisplay:o(),socialSharePctDisplay:o(),otherSessions:m(),otherSharePct:m(),otherSharePctDisplay:o(),lastSyncedAt:o().nullable()});p({connected:_(),propertyId:o().nullable(),clientEmail:o().nullable(),authMethod:A(["service-account","oauth"]).nullable(),lastSyncedAt:o().nullable(),createdAt:o().nullable().optional(),updatedAt:o().nullable().optional()});const gO=p({propertyId:o(),displayName:o(),accountName:o()});p({properties:y(gO)});p({synced:_(),rowCount:m().int().nonnegative(),aiReferralCount:m().int().nonnegative(),socialReferralCount:m().int().nonnegative(),days:m().int().nonnegative(),requestedDays:m().int().nonnegative(),clamped:_(),syncedAt:o(),measurement:p({acquisition:p({days:m().int().nonnegative(),status:A(["ready","error"]),rowCount:m().int().nonnegative(),error:o().optional()}),leads:p({days:m().int().nonnegative(),status:A(["ready","error","not-configured"]),rowCount:m().int().nonnegative(),attributionScope:A(["landing-page","channel"]).optional(),error:o().optional()})}),syncedComponents:y(o()).optional()});p({date:o(),source:o(),medium:o(),trafficClass:Tu,landingPage:o(),sessions:m(),users:m(),sourceDimension:oh});const yO=p({source:o(),sessions:m(),paidSessions:m(),organicSessions:m()}),bO=p({date:o(),sessions:m(),paidSessions:m(),organicSessions:m(),bySource:y(yO)});p({days:y(bO),sources:y(o()),totalSessions:m(),totalPaidSessions:m(),totalOrganicSessions:m()});p({date:o(),source:o(),medium:o(),sessions:m(),users:m(),channelGroup:o()});p({date:o(),sessions:m(),organicSessions:m(),users:m(),usersSource:A(["deduplicated","landing-page-sum"])});p({id:o(),projectId:o(),runId:o().nullable(),overallCitedRate:m(),overallMentionRate:m(),totalPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),providerBreakdown:Ie(o(),p({citedRate:m(),mentionRate:m(),cited:m().int().nonnegative(),mentioned:m().int().nonnegative(),total:m().int().nonnegative()})),createdAt:o(),status:A(["ready","no-data"]),reason:O("no-runs-yet").optional()});const vk=A(["claude","openai","gemini","zai","deepinfra"]),vO=p({id:vk,label:o(),defaultModel:o(),configured:_(),keySource:A(["config","env"]).nullable()});p({providers:y(vO).default([]),defaultProvider:vk.nullable()});const xO=A(["aero","user","compaction"]);xO.enum;const xk=128;p({key:o().min(1).max(xk),value:o().min(1)});p({key:o().min(1).max(xk)});const qo=A(["commoncrawl","bing-webmaster"]);qo.enum;const rh=A(["queued","downloading","querying","ready","failed"]);rh.enum;p({id:o(),release:o(),status:rh,phaseDetail:o().nullable().optional(),vertexPath:o().nullable().optional(),edgesPath:o().nullable().optional(),vertexSha256:o().nullable().optional(),edgesSha256:o().nullable().optional(),vertexBytes:m().int().nullable().optional(),edgesBytes:m().int().nullable().optional(),projectsProcessed:m().int().nullable().optional(),domainsDiscovered:m().int().nullable().optional(),downloadStartedAt:o().nullable().optional(),downloadFinishedAt:o().nullable().optional(),queryStartedAt:o().nullable().optional(),queryFinishedAt:o().nullable().optional(),error:o().nullable().optional(),createdAt:o(),updatedAt:o()});const kO=p({linkingDomain:o(),numHosts:m().int(),source:qo}),wO=p({projectId:o(),release:o(),targetDomain:o(),totalLinkingDomains:m().int(),totalHosts:m().int(),top10HostsShare:o(),queriedAt:o(),source:qo,excludedLinkingDomains:m().int().optional(),excludedHosts:m().int().optional()});p({source:qo,summary:wO.nullable(),total:m().int(),rows:y(kO)});p({release:o(),totalLinkingDomains:m().int(),totalHosts:m().int(),top10HostsShare:o(),queriedAt:o(),source:qo});const SO=p({source:qo,connected:_(),hasData:_(),latestRelease:o().nullable(),totalLinkingDomains:m().int(),lastSyncedAt:o().nullable()});p({projectId:o(),targetDomain:o(),sources:y(SO),anyConnected:_(),anyData:_()});p({duckdbInstalled:_(),duckdbVersion:o().nullable().optional(),duckdbSpec:o(),pluginDir:o()});p({installed:_(),version:o(),path:o(),alreadyPresent:_()});p({release:o(),vertexUrl:o(),edgesUrl:o(),vertexBytes:m().int().nullable(),edgesBytes:m().int().nullable(),lastModified:o().nullable()});p({release:o(),syncStatus:rh.nullable(),bytes:m().int(),lastUsedAt:o().nullable()});const lh=A(["positive","caution","negative","neutral"]),wi=p({label:o(),value:o(),delta:o(),tone:lh,description:o(),tooltip:o().optional(),trend:y(m()),progress:m().optional(),providerCoverage:o().optional()}),Kb=p({projectMentionSnapshots:m().int().nonnegative(),competitorMentionSnapshots:m().int().nonnegative(),perCompetitor:y(p({domain:o(),mentionSnapshots:m().int().nonnegative(),shareOfCompetitiveTotal:m()})),snapshotsWithAnswerText:m().int().nonnegative(),snapshotsTotal:m().int().nonnegative(),score:m().int().min(0).max(100).nullable()}),jO=wi.extend({breakdown:Kb,scope:A(["non-brand","pooled"]),branded:Kb}),bp=p({gained:m().int().nonnegative(),lost:m().int().nonnegative(),tone:lh,hasPreviousRun:_(),gainedQueries:y(o()).optional(),lostQueries:y(o()).optional()}),AO=p({hasPreviousRun:_(),comparable:_(),querySetChanged:_(),previousRunAt:o().nullable(),currentQueryCount:m().int().nonnegative(),previousQueryCount:m().int().nonnegative(),comparableQueryCount:m().int().nonnegative(),addedQueryCount:m().int().nonnegative(),removedQueryCount:m().int().nonnegative(),addedQueries:y(o()),removedQueries:y(o())}),CO=p({id:o(),projectId:o(),runId:o().nullable(),type:A(["regression","gain","opportunity","first-citation","provider-pickup","persistent-gap","competitor-gained","competitor-lost","gbp-lodging-gap","gbp-listing-discrepancy","gbp-cta-gap","gbp-description-missing","gbp-metric-drop","gbp-keyword-drop"]),severity:A(["critical","high","medium","low"]),title:o(),query:o(),provider:o(),recommendation:p({action:o(),target:o().optional(),reason:o()}).optional(),cause:p({cause:o(),competitorDomain:o().optional(),details:o().optional()}).optional(),dismissed:_(),createdAt:o()}),NO=p({id:o(),projectId:o(),runId:o().nullable(),overallCitedRate:m(),overallMentionRate:m(),totalPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),providerBreakdown:Ie(o(),p({citedRate:m(),mentionRate:m(),cited:m().int().nonnegative(),mentioned:m().int().nonnegative(),total:m().int().nonnegative()})),createdAt:o(),status:A(["ready","no-data"]),reason:O("no-runs-yet").optional()});p({project:qz,latestRun:IT,health:NO.nullable(),topInsights:y(CO),queryCounts:p({totalQueries:m().int().nonnegative(),citedQueries:m().int().nonnegative(),notCitedQueries:m().int().nonnegative(),citedRate:m(),mentionedQueries:m().int().nonnegative(),notMentionedQueries:m().int().nonnegative(),mentionRate:m()}),providers:y(p({provider:o(),citedRate:m(),cited:m().int().nonnegative(),total:m().int().nonnegative()})),transitions:p({since:o().nullable(),gained:m().int().nonnegative(),lost:m().int().nonnegative(),emerging:m().int().nonnegative()}),scores:p({mention:wi,visibility:wi,mentionShare:jO,gapQueries:wi,mentionGaps:wi,indexCoverage:wi,competitorPressure:wi,runStatus:wi}),movementSummary:bp,citationMovement:bp,mentionMovement:bp,movementComparison:AO,competitors:y(p({id:o(),domain:o(),citationCount:m().int().nonnegative(),totalQueries:m().int().nonnegative(),pressureLabel:A(["None","Low","Moderate","High"]),citedQueries:y(o())})),providerScores:y(p({provider:o(),model:o().nullable(),score:m(),cited:m().int().nonnegative(),total:m().int().nonnegative(),trend:y(m()).optional()})),attentionItems:y(p({id:o(),tone:lh,title:o(),detail:o(),actionLabel:o(),href:o()})),runHistory:y(p({runId:o(),createdAt:o(),citedCount:m().int().nonnegative(),totalCount:m().int().nonnegative(),citationRate:m(),mentionedCount:m().int().nonnegative(),mentionRate:m(),status:o()})),suggestedQueries:p({rows:y(p({query:o(),impressions:m(),clicks:m(),avgPosition:m(),reason:o()})),totalCandidates:m().int().nonnegative(),skippedAlreadyTracked:m().int().nonnegative()}),dateRangeLabel:o(),contextLabel:o()});A(["snapshot","insight"]);const _O=p({kind:O("snapshot"),id:o(),runId:o(),query:o(),provider:o(),model:o().nullable(),citationState:Pn,matchedField:A(["answerText","citedDomains","citedUrls","searchQueries","query"]),snippet:o(),createdAt:o()}),zO=p({kind:O("insight"),id:o(),runId:o().nullable(),type:A(["regression","gain","opportunity","first-citation","provider-pickup","persistent-gap","competitor-gained","competitor-lost","gbp-lodging-gap","gbp-listing-discrepancy","gbp-cta-gap","gbp-description-missing","gbp-metric-drop","gbp-keyword-drop"]),severity:A(["critical","high","medium","low"]),title:o(),query:o(),provider:o(),matchedField:A(["title","query","recommendation","cause"]),snippet:o(),dismissed:_(),createdAt:o()}),DO=Be("kind",[_O,zO]);p({query:o(),totalHits:m().int().nonnegative(),truncated:_(),hits:y(DO)});const kk=A(["create","expand","refresh","add-schema"]);kk.enum;function P$(e){switch(e){case"create":return"Create";case"expand":return"Expand";case"refresh":return"Refresh";case"add-schema":return"Add schema"}}const wk=A(["gsc","competitor-evidence","both"]);wk.enum;const Sk=A(["high","medium","low"]);Sk.enum;const EO=A(["blog-post","comparison","listicle","how-to","guide","glossary"]);EO.enum;const jk=A(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);jk.enum;const ch=A(["ownable","ceded"]);ch.enum;const TO=p({url:o(),gscImpressions:m().nonnegative(),gscClicks:m().nonnegative(),gscAvgPosition:m().nonnegative().nullable(),organicSessions:m().nonnegative()}),RO=p({domain:o(),url:o(),title:o(),citationCount:m().int().nonnegative()}),OO=p({demand:m(),competitor:m(),absence:m(),gapSeverity:m()}),BO=p({actionId:o(),state:jk,lastUpdated:o()}),Ak=p({targetRef:o(),query:o(),action:kk,ourBestPage:TO.nullable(),winningCompetitor:RO.nullable(),score:m(),scoreBreakdown:OO,drivers:y(o()),demandSource:wk,actionConfidence:Sk,existingAction:BO.nullable(),winnabilityClass:ch,winnability:m().min(0).max(1).nullable()});p({targets:y(Ak),contextMetrics:p({totalAiReferralSessions:m().int().nonnegative(),latestRunId:o(),runTimestamp:o()})});const qO=p({targetRef:o(),addressedUrl:o().nullable(),note:o().nullable(),dismissedAt:o()});p({dismissals:y(qO)});p({targetRef:o().min(1),addressedUrl:o().url().optional(),note:o().max(500).optional()});p({targetRef:o(),promptVersion:o(),provider:o(),model:o(),responseText:o(),costMillicents:m().int().nonnegative(),generatedAt:o()});p({provider:o().optional(),model:o().optional(),forceRefresh:_().optional()});const MO=p({targetQuery:o().trim().min(1),winnabilityClass:ch,angle:o().trim().min(1),whyWinnable:o().trim().min(1),schemaHookup:o().trim().min(1),controllableSurfaceRationale:o().trim().min(1)});p({targetRef:o(),promptVersion:o(),provider:o(),model:o(),brief:MO,costMillicents:m().int().nonnegative(),generatedAt:o()});const PO=p({domain:o(),competitorType:Du,hits:m().int().nonnegative(),updatedAt:o()});p({classifications:y(PO)});const IO=p({uri:o(),title:o(),domain:o(),isOurDomain:_(),isCompetitor:_(),citationCount:m().int().nonnegative(),providers:y(ft)}),Ck=p({query:o(),groundingSources:y(IO)});p({sources:y(Ck),latestRunId:o()});const Nk=p({query:o(),competitorDomains:y(o()),competitorCount:m().int().nonnegative(),missRate:m().min(0).max(1),lastSeenInRunId:o()});p({gaps:y(Nk),latestRunId:o()});const _k=A(["ok","warn","fail","skipped"]);_k.enum;const uh=A(["global","project"]);uh.enum;const zk=A(["auth","config","providers","integrations","database","schedules","agent"]);zk.enum;const VO=p({id:o(),category:zk,scope:uh,title:o(),status:_k,code:o().describe('Stable machine-readable code (e.g. "google.token.refresh-failed"). Use this for filtering and remediation logic.'),summary:o(),remediation:o().nullable().optional().describe('Operator-facing next step. Null when status is "ok" or no specific remediation applies.'),details:Ie(o(),ya()).optional().describe("Structured context — principal email, redirect URI, missing scopes, etc. Stable per check id."),durationMs:m().int().nonnegative().describe("How long the check took to execute.")});p({scope:uh,project:o().nullable().describe('Project name when scope is "project", null otherwise.'),generatedAt:o().describe("ISO-8601 timestamp when this doctor run started."),durationMs:m().int().nonnegative(),summary:p({total:m().int().nonnegative(),ok:m().int().nonnegative(),warn:m().int().nonnegative(),fail:m().int().nonnegative(),skipped:m().int().nonnegative()}),checks:y(VO)});const LO=p({provider:o(),citationState:Pn,cited:_(),mentioned:_(),runId:o(),runCreatedAt:o()}),UO=p({queryId:o(),query:o(),providers:y(LO),citedCount:m().int().nonnegative(),mentionedCount:m().int().nonnegative(),totalProviders:m().int().nonnegative()}),GO=p({queryId:o(),query:o(),provider:o(),citingCompetitors:y(o()),runId:o(),runCreatedAt:o()}),$O=p({providersConfigured:m().int().nonnegative(),providersCiting:m().int().nonnegative(),providersMentioning:m().int().nonnegative(),totalQueries:m().int().nonnegative(),queriesCitedAndMentioned:m().int().nonnegative(),queriesCitedOnly:m().int().nonnegative(),queriesMentionedOnly:m().int().nonnegative(),queriesInvisible:m().int().nonnegative(),latestRunId:o().nullable(),latestRunAt:o().nullable()});p({summary:$O,byQuery:y(UO),competitorGaps:y(GO),status:A(["ready","no-data"]),reason:A(["no-runs-yet","no-queries"]).optional()});const I$=[7,14,30,90],V$=30;Ve([O(7),O(14),O(30),O(90)]).describe("Report window in days (7, 14, 30, or 90). Defaults to 30 when omitted.");const HO=A(["prompt","request-param","browser-geo","ignored"]),KO=p({label:o(),city:o(),region:o(),country:o(),otherConfiguredLabels:y(o())}),QO=p({provider:o(),treatment:HO,description:o()}),ZO=p({generatedAt:o(),project:p({id:o(),name:o(),displayName:o(),canonicalDomain:o(),country:o(),language:o()}),location:KO.nullable(),providerLocationHandling:y(QO),periodStart:o().nullable(),periodEnd:o().nullable(),periodDays:m().int().positive()}),FO=p({citationRate:m(),citedQueryCount:m(),totalQueryCount:m(),mentionRate:m(),mentionedQueryCount:m(),trend:A(["up","down","flat","unknown"]),queryCount:m(),competitorCount:m(),providerCount:m(),gsc:p({clicks:m(),impressions:m(),ctr:m(),avgPosition:m(),periodStart:o(),periodEnd:o()}).nullable(),ga:p({sessions:m(),users:m(),periodStart:o(),periodEnd:o()}).nullable(),findings:y(p({title:o(),detail:o(),tone:A(["positive","caution","negative","neutral"])}))}),YO=p({citationState:A(["cited","not-cited","pending"]),answerMentioned:_().nullable(),model:o().nullable()}),XO=p({queries:y(o()),providers:y(o()),matrix:y(y(YO.nullable())),providerRates:y(p({provider:o(),citedCount:m(),mentionedCount:m(),totalCount:m(),citationRate:m(),mentionRate:m()}))}),JO=p({domain:o(),citationCount:m(),totalCount:m(),pressureLabel:A(["High","Moderate","Low","None"]),citedQueries:y(o()),sharePct:m(),theirCitedPages:y(p({url:o(),citedFor:y(o())}))}),WO=p({projectCitationCount:m(),competitors:y(JO)}),eB=p({domain:o(),mentionCount:m(),totalCount:m(),pressureLabel:A(["High","Moderate","Low","None"]),mentionedQueries:y(o()),sharePct:m().nullable()}),vp=p({projectMentionCount:m(),totalAnswerSnapshots:m(),competitors:y(eB)}),tB=vp.extend({scope:A(["non-brand","pooled"]),nonBrand:vp,branded:vp}),aB=p({category:o(),label:o(),count:m(),sharePct:m()}),nB=p({categories:y(aB),topDomains:y(p({domain:o(),count:m(),isCompetitor:_()}))}),iB=p({query:o(),clicks:m(),impressions:m(),ctr:m(),avgPosition:m(),category:A(["brand","lead-gen","industry","other"])}),sB=p({periodStart:o(),periodEnd:o(),totalClicks:m(),totalImpressions:m(),ctr:m(),avgPosition:m(),topQueries:y(iB),categoryBreakdown:y(p({category:A(["brand","lead-gen","industry","other"]),clicks:m(),impressions:m(),sharePct:m()})),trend:y(p({date:o(),clicks:m(),impressions:m()})),trackedButNoGsc:y(o()),gscButNotTracked:y(o())}),oB=p({totalSessions:m(),totalUsers:m(),totalOrganicSessions:m(),periodStart:o(),periodEnd:o(),topLandingPages:y(p({page:o(),sessions:m(),users:m(),organicSessions:m()})),channelBreakdown:y(p({channel:o(),sessions:m(),sharePct:m()}))}),rB=p({totalSessions:m(),organicSessions:m(),paidSessions:m(),channels:y(p({channelGroup:o(),sessions:m(),sharePct:m()})),topCampaigns:y(p({source:o(),medium:o(),sessions:m()}))}),lB=p({totalSessions:m(),paidSessions:m(),organicSessions:m(),totalUsers:m().optional(),paidUsers:m().optional(),organicUsers:m().optional(),bySource:y(p({source:o(),sessions:m(),users:m().optional(),paidSessions:m(),organicSessions:m(),sharePct:m()})),trend:y(p({date:o(),sessions:m()})),topLandingPages:y(p({page:o(),sessions:m(),users:m().optional()}))}),cB=p({windowStart:o(),windowEnd:o(),hasData:_(),verifiedCrawlerHits:p({current:m(),prior:m(),deltaPct:m().nullable()}),unverifiedCrawlerHits:p({current:m(),prior:m(),deltaPct:m().nullable()}),aiUserFetchHits:p({current:m(),prior:m(),deltaPct:m().nullable()}),referralArrivals:p({current:m(),prior:m(),deltaPct:m().nullable()}),referralArrivalsByClass:p({paid:p({current:m(),prior:m(),deltaPct:m().nullable()}),organic:p({current:m(),prior:m(),deltaPct:m().nullable()}),unclassified:p({current:m(),prior:m(),deltaPct:m().nullable()})}),referralArrivalsClassSummary:o(),byOperator:y(p({operator:o(),verifiedHits:m(),unverifiedHits:m(),userFetchHits:m(),referralArrivals:m(),deltaPct:m().nullable()})),topCrawledPaths:y(p({path:o(),verifiedHits:m(),distinctOperators:m()})),referralProducts:y(p({product:o(),arrivals:m(),distinctLandingPaths:m()})),dailyTrend:y(p({date:o(),verifiedCrawlerHits:m(),userFetchHits:m(),referralArrivals:m()})),topReferralLandingPaths:y(p({path:o(),arrivals:m(),distinctProducts:m()}))}),uB=p({provider:A(["google","bing"]).nullable(),total:m(),indexed:m(),notIndexed:m(),deindexed:m(),unknown:m(),indexedPct:m()}),dB=p({runId:o(),date:o(),citationRate:m(),citedQueryCount:m(),totalQueryCount:m(),mentionRate:m(),mentionedQueryCount:m(),providerRates:y(p({provider:o(),citationRate:m(),mentionRate:m()}))}),t0=p({id:o(),type:A(["regression","gain","opportunity"]),severity:A(["critical","high","medium","low"]),title:o(),query:o(),provider:o(),recommendation:o().nullable(),createdAt:o(),instanceCount:m()}),mB=p({horizon:A(["immediate","short-term","medium-term"]),title:o(),rationale:o()}),co=p({current:m(),prior:m(),deltaAbs:m(),deltaPct:m().nullable(),direction:A(["up","down","flat"]),window:m().optional()}),pB=p({provider:o(),current:m(),prior:m(),deltaAbs:m(),direction:A(["up","down","flat"])}),hB=p({enoughHistory:_(),headline:o(),citationRate:co.nullable(),mentionRate:co.nullable(),citedQueryCount:co.nullable(),mentionedQueryCount:co.nullable(),gscClicksDelta:co.nullable(),aiReferralsDelta:co.nullable(),comparisonWindowDays:m().int().positive(),providerMovements:y(pB),wins:y(t0),regressions:y(t0)});A(["agency","client"]);const fB=A(["agency","client","both"]),gB=A(["immediate","short-term","medium-term"]),yB=A(["high","medium","low"]);A(["positive","caution","negative","neutral"]);const bB=A(["content","competitors","provider","search-demand","indexing","location","monitoring"]),dh=p({audience:fB,priority:m(),horizon:gB,category:bB,title:o(),action:o(),why:y(o()),evidence:y(o()),successMetric:o(),confidence:yB,targetRef:o().optional()}),vB=p({headline:o(),overview:o(),actionItems:y(dh),confidenceNotes:y(o())}),xB=p({title:o(),detail:o(),severity:A(["positive","caution","negative","neutral"]),evidence:y(o())}),kB=p({priorities:y(dh),diagnostics:y(xB)});function L$(e){return e.horizon==="immediate"?"negative":e.confidence==="high"?"caution":e.confidence==="low"?"neutral":"caution"}function U$(e){switch(e){case"critical":return"Critical";case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}function G$(e){switch(e){case"immediate":return"Immediate";case"short-term":return"Short term";case"medium-term":return"Medium term"}}function $$(e){switch(e){case"content":return"Content";case"competitors":return"Competitors";case"provider":return"Provider";case"search-demand":return"Search demand";case"indexing":return"Indexing";case"location":return"Location";case"monitoring":return"Monitoring"}}function H$(e){switch(e){case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}p({meta:ZO,executiveSummary:FO,citationScorecard:XO,competitorLandscape:WO,mentionLandscape:tB,aiSourceOrigin:nB,gsc:sB.nullable(),ga:oB.nullable(),socialReferrals:rB.nullable(),aiReferrals:lB.nullable(),serverActivity:cB.nullable(),indexingHealth:uB.nullable(),citationsTrend:y(dB),whatsChanged:hB,insights:y(t0),recommendedNextSteps:y(mB),actionPlan:y(dh),clientSummary:vB,agencyDiagnostics:kB,contentOpportunities:y(Ak),contentGaps:y(Nk),groundingSources:y(Ck)});const wB=Ve([O(60),O(90)]),SB=A(["earliest","middle","prior","latest"]),uo=p({clicks:m().int().nonnegative(),impressions:m().int().nonnegative()}),Dk=p({name:SB,startDate:o(),endDate:o()}),jB=Dk.extend({totals:uo}),AB=Dk.extend({organicSessions:m().int().nonnegative()}),xp=p({startDate:o(),endDate:o(),observedDays:m().int().nonnegative()}),Vc=p({verified:m().int().nonnegative(),claimedUnverified:m().int().nonnegative(),unknownAiLike:m().int().nonnegative()}),Qb=p({total:m().int().nonnegative(),paid:m().int().nonnegative(),organic:m().int().nonnegative(),unknown:m().int().nonnegative()});p({contractVersion:O("organic-evidence/v1"),periodDays:wB,asOfDate:o().nullable(),coverage:p({gsc:_(),ga4:_(),server:_(),visibility:_()}),sourceCoverage:p({gsc:xp.nullable(),ga4:xp.nullable(),server:xp.nullable(),visibility:p({completedAt:o(),ageDays:m().nonnegative()}).nullable()}),gsc:p({propertyTotals:uo,namedBrand:uo,namedNonBrand:uo,suppressedOrUnreportedResidual:uo,cohorts:y(jB)}).nullable(),ga4:p({organicSessions:m().int().nonnegative(),cohorts:y(AB)}).nullable(),gaAiReferrals:p({paidSessions:m().int().nonnegative(),organicSessions:m().int().nonnegative()}).nullable(),server:p({crawlerHits:Vc,userFetchHits:Vc,referralSessions:Qb}).nullable(),visibility:p({runId:o(),completedAt:o(),ageDays:m().nonnegative(),answerPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative()}).nullable(),measurement:K_,pages:y(p({path:o(),gsc:uo,ga4OrganicSessions:m().int().nonnegative(),server:p({crawlerHits:Vc,userFetchHits:Vc,referralSessions:Qb})})),findings:y(p({tone:A(["positive","caution","neutral"]),title:o(),detail:o()})),limitations:y(p({code:o(),detail:o()}))});const CB=A(["claude","codex"]);CB.enum;const NB=A(["claude","codex","all"]);NB.enum;const Ek=p({content:m().int().nonnegative(),sitemap:m().int().nonnegative(),robots:m().int().nonnegative(),asset:m().int().nonnegative(),other:m().int().nonnegative()}),_B=A(["content","sitemap","robots","asset","other"]),mh=A(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);mh.enum;const zB=A(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);zB.enum;const DB=A(["raw-request","aggregate-bucket"]),EB=DB.enum,TB=A(["observed","provider-aggregated","inferred"]),RB=TB.enum,OB=p({type:o().nullable(),labels:Ie(o(),o())}),BB=p({sourceType:mh,evidenceKind:O(EB["raw-request"]),confidence:O(RB.observed),eventId:o().min(1),observedAt:o().min(1),method:o().nullable(),requestUrl:o().nullable(),host:o().nullable(),path:o().min(1),queryString:o().nullable(),status:m().int().nullable(),userAgent:o().nullable(),remoteIp:o().nullable(),referer:o().nullable(),latencyMs:m().nullable(),requestSizeBytes:m().int().nullable(),responseSizeBytes:m().int().nullable(),providerResource:OB,providerLabels:Ie(o(),o())});p({events:y(BB),rawEntryCount:m().int().nonnegative(),skippedEntryCount:m().int().nonnegative(),nextPageToken:o().optional(),filter:o()});const Tk=A(["connected","paused","error","archived"]),K$=Tk.enum,Rk=A(["oauth","service-account"]);Rk.enum;const qB=A(["verified","claimed_unverified","unknown_ai_like"]),Q$=qB.enum,MB=p({id:o().min(1),source:o().min(1),version:o().min(1)}),Ok=p({manifestId:o().min(1),manifest:MB.nullable(),hits:m().int().nonnegative()});p({gcpProjectId:o().min(1),serviceName:o().nullable().optional(),location:o().nullable().optional(),authMode:Rk});p({baseUrl:o().url(),username:o().min(1)});const ph=A(["production","preview"]);ph.enum;p({projectId:o().min(1),teamId:o().min(1),environment:ph});const Bk=p({id:o(),projectId:o(),sourceType:mh,displayName:o(),status:Tk,lastSyncedAt:o().nullable(),lastCursor:o().nullable(),lastError:o().nullable(),skippedThroughAt:o().nullable(),queueBacklogCount:m().int().nonnegative().nullable(),queueBacklogObservedAt:o().nullable(),archivedAt:o().nullable(),config:Ie(o(),ya()),createdAt:o(),updatedAt:o()});p({gcpProjectId:o().min(1),serviceName:o().min(1).optional(),location:o().min(1).optional(),displayName:o().min(1).optional(),keyJson:o().optional()});p({baseUrl:o().url(),username:o().min(1),applicationPassword:o().min(1),displayName:o().min(1).optional()});p({projectId:o().min(1),teamId:o().min(1),token:o().min(1),environment:ph.optional(),displayName:o().min(1).optional()});const PB=A(["direct-push","queue-pull"]),Mo=PB.enum,hh=o().regex(/^(?=.{1,63}$)[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,"Cloudflare Queue name must be 1-63 characters, use only letters, numbers, or dashes, and start and end with a letter or number"),qk=p({schemaVersion:O(1),workerVersion:o().min(1),expectedBotListVersion:o().min(1),zoneId:o().nullable()}),IB=qk.extend({deliveryMode:O(Mo["direct-push"]),accountId:o().nullable()}),VB=qk.extend({deliveryMode:O(Mo["queue-pull"]),accountId:o().min(1),queueId:o().min(1),queueName:hh,retentionSeconds:m().int().min(60).max(1209600)});function Mk(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;const n=e;return"deliveryMode"in n?e:{...n,deliveryMode:"direct-push"}}A0(Mk,Be("deliveryMode",[IB,VB]));const Pk=p({displayName:o().min(1).optional(),zoneId:o().min(1).optional()}),LB=Pk.extend({deliveryMode:O(Mo["direct-push"]),accountId:o().min(1).optional()}),UB=Pk.extend({deliveryMode:O(Mo["queue-pull"]),accountId:o().min(1),queueId:o().min(1),queueName:hh,retentionSeconds:m().int().min(60).max(1209600),apiToken:o().min(1)});A0(Mk,Be("deliveryMode",[LB,UB]));const Ik=p({sourceId:o().min(1),workerScript:o().min(1),wranglerToml:o().min(1),workerVersion:o().min(1),instructions:o().min(1)}),GB=Ik.extend({deliveryMode:O(Mo["direct-push"]),activationRequired:_().default(!1)}),$B=Ik.extend({deliveryMode:O(Mo["queue-pull"]),activationRequired:_().default(!1),accountId:o().min(1),queueId:o().min(1),queueName:hh,retentionSeconds:m().int().min(60).max(1209600)});Be("deliveryMode",[GB,$B]);const HB=p({eventId:o().min(1),observedAt:o().datetime(),method:o().nullable(),host:o().nullable(),path:o().min(1),queryString:o().nullable(),status:m().int().nullable(),userAgent:o().nullable(),remoteIp:o().nullable(),referer:o().nullable(),cf:p({verifiedBot:_().nullable(),botScore:m().int().nullable(),country:o().nullable(),asn:m().int().nullable(),asOrganization:o().nullable()}).nullable()});p({schemaVersion:O(1),workerVersion:o().min(1),events:y(HB).min(1).max(100)});p({acceptedEvents:m().int(),droppedEvents:m().int(),workerVersionAck:o(),crawlerBucketRows:m().int(),aiUserFetchBucketRows:m().int(),aiReferralBucketRows:m().int(),sampleRows:m().int()});p({sourceId:o(),runId:o(),syncedAt:o(),pulledEvents:m().int().nonnegative(),selfTrafficExcluded:m().int().nonnegative(),crawlerHits:m().int().nonnegative(),aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),unknownHits:m().int().nonnegative(),crawlerBucketRows:m().int().nonnegative(),aiUserFetchBucketRows:m().int().nonnegative(),aiReferralBucketRows:m().int().nonnegative(),sampleRows:m().int().nonnegative(),remainingBacklogCount:m().int().nonnegative().optional(),windowStart:o(),windowEnd:o()});p({days:m().int().positive().optional()});p({advanceToNow:O(!0)});p({sourceId:o(),runId:o(),status:en,windowStart:o(),windowEnd:o(),daysRequested:m().int().positive(),daysApplied:m().int().positive()});const KB=p({crawlerHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),crawlerInfraHits:m().int().nonnegative(),crawlerSegments:Ek,aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),sampleCount:m().int().nonnegative()});p({sources:y(Bk)});const QB=Bk.extend({totals24h:KB,latestRun:p({runId:o(),status:en,startedAt:o().nullable(),finishedAt:o().nullable(),error:o().nullable()}).nullable()});p({sources:y(QB)});const ZB=A(["crawler","ai-user-fetch","ai-referral"]),fh=ZB.enum,Vk=A(["hour","day"]);Vk.enum;const FB=p({bucket:o(),crawlerHits:m().int().nonnegative(),aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative()}),YB=p({kind:O(fh.crawler),sourceId:o(),tsHour:o(),botId:o(),operator:o(),verificationStatus:o(),verificationManifests:y(Ok).optional(),verificationUnattributedHits:m().int().nonnegative().optional(),pathNormalized:o(),pathClass:_B,status:m().int(),hits:m().int().nonnegative()}),XB=p({kind:O(fh["ai-user-fetch"]),sourceId:o(),tsHour:o(),botId:o(),operator:o(),verificationStatus:o(),verificationManifests:y(Ok).optional(),verificationUnattributedHits:m().int().nonnegative().optional(),pathNormalized:o(),status:m().int(),hits:m().int().nonnegative()}),JB=p({kind:O(fh["ai-referral"]),sourceId:o(),tsHour:o(),product:o(),operator:o(),sourceDomain:o(),evidenceType:o(),landingPathNormalized:o(),status:m().int(),hits:m().int().nonnegative(),paidHits:m().int().nonnegative(),organicHits:m().int().nonnegative(),unknownHits:m().int().nonnegative()}),WB=Be("kind",[YB,XB,JB]);p({windowStart:o(),windowEnd:o(),series:p({granularity:Vk,points:y(FB)}),totals:p({crawlerHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),crawlerInfraHits:m().int().nonnegative(),crawlerSegments:Ek,aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralPaidHits:m().int().nonnegative(),aiReferralOrganicHits:m().int().nonnegative(),aiReferralUnknownHits:m().int().nonnegative()}),eventRows:p({total:m().int().nonnegative(),returned:m().int().nonnegative(),truncated:_()}),events:y(WB)});const Lk=A(["queued","running","completed","partial","failed"]),Z$=Lk.enum,Uk=A(["queued","running","completed","failed"]),F$=Uk.enum;p({queries:y(o().trim().min(1).max(4e3)).min(1).max(50),provider:o().trim().min(1).optional(),model:o().trim().min(1).max(200).optional(),location:la.nullable().optional(),idempotencyKey:o().trim().min(1).max(128).optional()}).superRefine((e,n)=>{e.model&&!e.provider&&n.addIssue({code:Ye.custom,path:["provider"],message:"provider is required when model is supplied"})});const Gk=p({id:o(),projectId:o(),status:Lk,provider:o(),requestedModel:o().nullable(),resolvedModel:o(),location:la.nullable(),totalQueries:m().int(),completedQueries:m().int(),failedQueries:m().int(),error:o().nullable(),startedAt:o().nullable(),finishedAt:o().nullable(),createdAt:o()}),eq=p({id:o(),position:m().int(),query:o(),status:Uk,requestedModel:o().nullable(),resolvedModel:o(),servedModel:o().nullable(),answerText:o().nullable(),groundingSources:y(Cu),citedDomains:y(o()),searchQueries:y(o()),namedCompetitors:y(o()).default([]),citedCompetitorDomains:y(o()).default([]),answerMentioned:_().nullable(),citationState:Pn.nullable(),error:o().nullable(),startedAt:o().nullable(),finishedAt:o().nullable(),createdAt:o()});Gk.extend({queries:y(eq)});p({runs:y(Gk)});p({apiKey:o().min(1)});p({id:o(),name:o(),status:o(),currencyCode:o().nullable(),timezone:o().nullable(),url:o().nullable(),reviewStatus:o().nullable(),integrityReviewStatus:o().nullable(),integrityDecision:o().nullable()});p({q:o().trim().min(1).max(200),limit:m().int().min(1).max(100).default(20)});const tq=p({id:o(),type:o(),canonicalName:o(),countryCode:o(),name:o(),regionCode:o().nullable()});p({count:m().int().nonnegative(),query:o(),results:y(tq)});const aq=p({id:o(),clientType:o().optional(),name:o().optional(),pixelId:o().optional()});p({pixels:y(aq)});const nq=p({id:o(),name:o().optional()}),iq=p({id:o(),name:o().optional(),eventType:o().optional(),customEventName:o().nullable().optional(),attributionWindowDays:m().int().positive().optional(),adAccountId:o().optional(),sourceIds:y(o()).optional(),sources:y(nq).optional(),archived:_().optional(),version:m().int().nonnegative().optional()});p({eventSettings:y(iq)});p({connected:_(),adAccountId:o().nullable().optional(),displayName:o().nullable().optional(),currencyCode:o().nullable().optional(),timezone:o().nullable().optional(),status:o().nullable().optional(),reviewStatus:o().nullable().optional(),integrityReviewStatus:o().nullable().optional(),integrityDecision:o().nullable().optional(),lastSyncedAt:o().nullable().optional(),conversionTrackingConfigured:_().optional()});p({disconnected:_()});p({runId:o(),status:o()});const sq=p({type:o().nullable().optional(),title:o().nullable().optional(),body:o().nullable().optional(),targetUrl:o().nullable().optional(),fileId:o().nullable().optional()}),ul=A(["impressions","clicks"]),oq=ul.enum,dl=A(["impression","click"]);dl.enum;const rq=p({id:o(),adGroupId:o(),name:o(),status:o(),reviewStatus:o().nullable().optional(),creative:sq.nullable().optional(),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:o().optional()}),lq=p({id:o(),campaignId:o(),name:o(),description:o().nullable().optional(),status:o(),billingEventType:Ve([dl,ce()]).optional(),maxBidMicros:m().int().nullable().optional(),contextHints:y(o()).default([]),ads:y(rq).default([]),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:o().optional()}),cq=p({id:o(),name:o(),description:o().nullable().optional(),status:o(),startTime:m().int().nullable().optional(),endTime:m().int().nullable().optional(),biddingType:Ve([ul,ce()]).optional(),dailySpendLimitMicros:m().int().nullable().optional(),lifetimeSpendLimitMicros:m().int().nullable().optional(),conversionEventSettingIds:y(o()).default([]),locationIds:y(o()).optional(),adGroups:y(lq).default([]),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:o().optional()});p({campaigns:y(cq)});const $k=A(["campaign","ad_group"]);$k.enum;const uq=p({level:$k,entityId:o(),date:o(),impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int(),ctr:m().nullable(),cpcMicros:m().int().nullable(),inProgress:_()});p({rows:y(uq),currencyCode:o().nullable().optional()});const Hk=p({from:o().nullable(),to:o().nullable(),inProgressDate:o().nullable()}),Kk=p({impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int(),ctr:m().nullable(),cpcMicros:m().int().nullable()});p({connected:_(),displayName:o().nullable().optional(),currencyCode:o().nullable().optional(),lastSyncedAt:o().nullable().optional(),campaignCount:m().int(),adGroupCount:m().int(),adCount:m().int(),window:Hk,totals:Kk});const Qk=A(["unavailable","partial","complete"]);Qk.enum;const Zk=A(["no_ads_connection","connection_not_synced","no_ads_sync","entity_rows_missing_sync_run_id","entity_rows_span_multiple_sync_runs","source_sync_missing","source_sync_not_ads_sync","source_sync_not_completed"]);Zk.enum;const Fk=A(["unavailable","reported"]);Fk.enum;const dq={storedSnapshot:"stored_ads_snapshot"},Yk=A(["unavailable","partial_snapshot","metrics_unavailable","observed_activity","no_observed_activity"]);Yk.enum;const mq=p({id:o(),name:o(),status:o(),reviewStatus:o().nullable()}),pq=p({id:o(),name:o(),status:o(),billingEventType:Ve([dl,ce()]),maxBidMicros:m().int().nullable(),contextHints:y(o()),ads:y(mq)}),hq=p({id:o(),name:o(),status:o(),biddingType:Ve([ul,ce()]),dailySpendLimitMicros:m().int().nullable(),lifetimeSpendLimitMicros:m().int().nullable(),conversionEventSettingIds:y(o()),adGroups:y(pq)});p({snapshot:p({status:Qk,issue:Ve([Zk,ce()]),lastSyncedAt:o().nullable(),campaignCount:m().int().nonnegative(),adGroupCount:m().int().nonnegative(),adCount:m().int().nonnegative(),sourceSync:p({runId:o(),status:en}).nullable()}),historicalCampaignRollups:p({status:Fk,window:Hk,totals:Kk.nullable()}),storedConfiguration:p({basis:O(dq.storedSnapshot),connection:p({status:o().nullable(),reviewStatus:o().nullable(),integrityReviewStatus:o().nullable(),integrityDecision:o().nullable(),conversionTrackingConfigured:_()}).nullable(),campaigns:y(hq)}),assessment:p({state:Yk})});const Un=o().min(8).max(128).regex(/^[\w.:-]+$/,"operationKey may contain letters, numbers, dot, underscore, colon, and hyphen"),vt=o().min(1).max(200),fs=o().min(3).max(1e3).refine(e=>e.trim().length>0),Ao=m().int().min(946684800).max(4102444800),Co=m().int().positive().max(Number.MAX_SAFE_INTEGER),gh=o().regex(/^[a-f0-9]{64}$/),Xk=y(vt).max(100).refine(e=>new Set(e).size===e.length,"conversionEventSettingIds must be unique"),Jk=o().url().refine(e=>new URL(e).protocol==="https:",{message:"URL must use https"}),Wk=A(["image_upload","campaign_create","campaign_update","campaign_pause","campaign_tree_activate","ad_group_create","ad_group_update","ad_group_pause","ad_create","ad_update","ad_pause"]);Wk.enum;const e3=A(["pending","reconciling","succeeded","failed","unknown"]),yo=e3.enum,t3=A(["known_entity","create_fingerprint","manual_only"]);t3.enum;const a3=A([yo.pending,yo.unknown,yo.reconciling]);a3.enum;const n3=A(["active","paused","archived"]);n3.enum;const i3=A(["file","campaign","ad_group","ad"]);i3.enum;const s3=A(["campaign","ad_group","ad"]);s3.enum;const yh=p({id:vt,expectedUpdatedAt:m().int().nonnegative()}).strict(),fq=yh,ru=100,gq=yh.extend({ads:y(fq).min(1).max(ru-1)}).strict(),yq=yh.extend({adGroups:y(gq).min(1).max(ru-1)}).strict();function bq(e,n){return e<n?-1:e>n?1:0}function Zb(e,n,s){for(let r=1;r<e.length;r+=1)if(bq(e[r-1].id,e[r].id)>=0){s.addIssue({code:"custom",path:n,message:"Activation manifest entities must be uniquely sorted by id"});return}}const o3=p({campaign:yq}).strict().superRefine((e,n)=>{1+e.campaign.adGroups.reduce((u,f)=>u+1+f.ads.length,0)>ru&&n.addIssue({code:"custom",path:["campaign"],message:`Activation manifests may contain at most ${ru} entities`}),Zb(e.campaign.adGroups,["campaign","adGroups"],n);const r=new Set;for(let u=0;u<e.campaign.adGroups.length;u+=1){const f=e.campaign.adGroups[u];Zb(f.ads,["campaign","adGroups",u,"ads"],n);for(let g=0;g<f.ads.length;g+=1){const b=f.ads[g];r.has(b.id)&&n.addIssue({code:"custom",path:["campaign","adGroups",u,"ads",g,"id"],message:"An ad may appear only once in an activation manifest"}),r.add(b.id)}}}),r3=gh,vq=A(["approved","executing","consumed","revoked","expired","unknown"]),Mn=vq.enum,xq=A(["pending","executing","active","failed","rollback_executing","rolled_back","rollback_failed","unknown"]),Di=xq.enum,kq=p({name:fs.optional(),description:o().max(4e3).nullable().optional(),status:n3.optional(),startTime:Ao.nullable().optional(),endTime:Ao.nullable().optional(),lifetimeSpendLimitMicros:Co.min(1e6).optional(),locationIds:y(vt).max(100).optional(),biddingType:ul.optional(),conversionEventSettingIds:Xk.optional(),campaignId:vt.optional(),contextHints:y(o().min(1).max(1e3)).max(100).optional(),maxBidMicros:Co.max(1e8).optional(),billingEventType:dl.optional(),adGroupId:vt.optional(),creativeFingerprint:gh.optional()}).strict();p({operationKey:Un,imageUrl:Jk});p({operationKey:Un,name:fs,description:o().max(4e3).optional(),startTime:Ao.optional(),endTime:Ao.optional(),lifetimeSpendLimitMicros:Co.min(1e6),locationIds:y(vt).min(1).max(100),biddingType:ul.optional(),conversionEventSettingIds:Xk.optional()}).superRefine((e,n)=>{e.startTime!==void 0&&e.endTime!==void 0&&e.endTime<=e.startTime&&n.addIssue({code:"custom",path:["endTime"],message:"endTime must be after startTime"}),e.biddingType===oq.clicks&&(e.conversionEventSettingIds===void 0||e.conversionEventSettingIds.length===0)&&n.addIssue({code:"custom",path:["conversionEventSettingIds"],message:"conversionEventSettingIds must be non-empty when biddingType is clicks"})});p({operationKey:Un,campaignId:vt,name:fs,description:o().max(4e3).optional(),contextHints:y(o().min(1).max(1e3)).min(1).max(100),maxBidMicros:Co.max(1e8),billingEventType:dl.optional()});const l3=p({title:o().min(3).max(50),body:o().min(1).max(100),targetUrl:Jk,fileId:vt});p({operationKey:Un,adGroupId:vt,name:fs,creative:l3});function bh(e){return Object.keys(e).some(n=>n!=="operationKey"&&n!=="expectedUpdatedAt")}p({operationKey:Un,expectedUpdatedAt:m().int().nonnegative(),name:fs.optional(),description:o().max(4e3).nullable().optional(),startTime:Ao.nullable().optional(),endTime:Ao.nullable().optional(),lifetimeSpendLimitMicros:Co.min(1e6).optional(),locationIds:y(vt).min(1).max(100).optional()}).refine(bh,{message:"At least one campaign field must be updated"});p({operationKey:Un,expectedUpdatedAt:m().int().nonnegative(),name:fs.optional(),description:o().max(4e3).nullable().optional(),contextHints:y(o().min(1).max(1e3)).min(1).max(100).optional(),maxBidMicros:Co.max(1e8).optional()}).refine(bh,{message:"At least one ad group field must be updated"});p({operationKey:Un,expectedUpdatedAt:m().int().nonnegative(),name:fs.optional(),creative:l3.optional()}).refine(bh,{message:"At least one ad field must be updated"});p({operationKey:Un});const Ru=p({id:o(),adAccountId:o().nullable(),operationKey:o(),kind:Wk,state:e3,entityType:Ve([i3,ce()]),entityId:o().nullable(),upstreamUpdatedAt:m().int().nullable(),errorCode:o().nullable(),errorMessage:o().nullable(),reconcileStrategy:Ve([t3,ce()]),reconcileParentId:vt.nullable(),reconcileFingerprint:gh.nullable(),reconcileFields:kq.nullable(),reconcileAttempts:m().int().nonnegative(),lastReconciledAt:o().nullable(),createdAt:o(),updatedAt:o()});p({operation:Ru,replayed:_()});const ht=Gx({offset:!0}),Po={id:vt,projectId:vt,adAccountId:vt,manifestHash:r3,manifest:o3,executorApiKeyId:vt,approverApiKeyId:vt,expiresAt:ht,approvedAt:ht,createdAt:ht,updatedAt:ht,revocationRequestedAt:ht.nullable()},wq=p({...Po,state:O(Mn.approved),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),Sq=p({...Po,state:O(Mn.executing),operationId:vt,executionStartedAt:ht,consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),jq=p({...Po,state:O(Mn.consumed),operationId:vt,executionStartedAt:ht,consumedAt:ht,revokedAt:ce(),expiredAt:ce()}).strict(),Aq=p({...Po,state:O(Mn.revoked),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:ht,expiredAt:ce()}).strict(),Cq=p({...Po,state:O(Mn.expired),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:ce(),expiredAt:ht}).strict(),Nq=p({...Po,state:O(Mn.unknown),operationId:vt,executionStartedAt:ht,consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),c3=Be("state",[wq,Sq,jq,Aq,Cq,Nq]).superRefine((e,n)=>{e.executorApiKeyId===e.approverApiKeyId&&n.addIssue({code:"custom",path:["executorApiKeyId"],message:"The activation executor must use a different API key from the approver"}),e.revocationRequestedAt!==null&&e.state!==Mn.executing&&e.state!==Mn.unknown&&e.state!==Mn.consumed&&n.addIssue({code:"custom",path:["revocationRequestedAt"],message:"Only an executing, cancelled, or unresolved activation can carry a cancellation request"})}),Ei={id:vt,operationId:vt,ordinal:m().int().nonnegative(),entityType:s3,entityId:vt,expectedUpdatedAt:m().int().nonnegative(),createdAt:ht,updatedAt:ht},ml={errorCode:ce(),errorMessage:ce()},vh={errorCode:o().min(1).max(100),errorMessage:o().min(1).max(500),remediation:o().min(1).max(500)},_q=p({...Ei,...ml,state:O(Di.pending),providerUpdatedAt:ce(),remediation:ce(),startedAt:ce(),finishedAt:ce()}).strict(),zq=p({...Ei,...ml,state:O(Di.executing),providerUpdatedAt:ce(),remediation:ce(),startedAt:ht,finishedAt:ce()}).strict(),Dq=p({...Ei,...ml,state:O(Di.active),providerUpdatedAt:m().int().nonnegative(),remediation:ce(),startedAt:ht,finishedAt:ht}).strict(),Eq=p({...Ei,...vh,state:O(Di.failed),providerUpdatedAt:Ve([m().int().nonnegative(),ce()]),startedAt:ht,finishedAt:ht}).strict(),Tq=p({...Ei,...ml,state:O(Di.rollback_executing),providerUpdatedAt:m().int().nonnegative(),remediation:o().min(1).max(500),startedAt:ht,finishedAt:ce()}).strict(),Rq=p({...Ei,...ml,state:O(Di.rolled_back),providerUpdatedAt:m().int().nonnegative(),remediation:o().min(1).max(500),startedAt:ht,finishedAt:ht}).strict(),Oq=p({...Ei,...vh,state:O(Di.rollback_failed),providerUpdatedAt:m().int().nonnegative(),startedAt:ht,finishedAt:ht}).strict(),Bq=p({...Ei,...vh,state:O(Di.unknown),providerUpdatedAt:Ve([m().int().nonnegative(),ce()]),startedAt:ht,finishedAt:ht}).strict(),qq=Be("state",[_q,zq,Dq,Eq,Tq,Rq,Oq,Bq]),a0={exact:"exact",refreshSemanticallyUnchanged:"refresh_semantically_unchanged"},Mq=A([a0.exact,a0.refreshSemanticallyUnchanged]);p({manifest:o3,executorApiKeyId:vt,expiresAt:ht,versionPolicy:Mq.default(a0.exact)}).strict();p({grant:c3}).strict();p({}).strict();p({operationKey:Un,grantId:vt,manifestHash:r3}).strict();p({grant:c3,operation:Ru,steps:y(qq)}).strict();const Pq=[yo.pending,yo.unknown,yo.reconciling];function Iq(e){if(e===void 0||e==="")return Pq;if(Array.isArray(e)){const n=[];for(const s of e)typeof s=="string"?n.push(...s.split(",")):n.push(s);return n}return typeof e=="string"?e.split(",").filter(Boolean):e}p({state:A0(Iq,y(a3).min(1).max(3).refine(e=>new Set(e).size===e.length,"state values must be unique")),limit:Yx().int().min(1).max(200).default(100),cursor:o().min(1).max(1e3).optional()});p({operations:y(Ru),count:m().int().nonnegative(),nextCursor:o().nullable()});p({}).strict();p({operation:Ru,resolved:_()});p({campaignId:o().min(1).max(200).optional(),lookbackDays:Yx().int().min(1).max(30).default(7)});const u3=A(["campaign","ad_group","ad"]);u3.enum;const d3=A(["both","live-only","stored-only"]);d3.enum;const Vq=O("live-provider-read"),Lq=p({date:o().nullable(),startTime:m().nullable(),endTime:m().nullable(),impressions:m().nullable(),clicks:m().nullable(),spend:m().nullable(),conversions:m().nullable(),ctr:m().nullable(),cpc:m().nullable(),cpm:m().nullable()}),Fb=p({impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int()}),Uq=p({date:o(),live:Fb.nullable(),stored:Fb.nullable(),drifted:_()}),Gq=p({field:o(),live:o().nullable(),stored:o().nullable()}),$q=p({name:o().nullable(),status:o(),reviewStatus:o().nullable(),mode:o().nullable(),updatedAt:m().nullable()}),Hq=p({name:o(),status:o(),reviewStatus:o().nullable(),upstreamUpdatedAt:m().nullable(),syncedAt:o()}),Kq=p({entityType:u3,id:o(),parentId:o().nullable(),presence:d3,live:$q.nullable(),stored:Hq.nullable(),fieldDeltas:y(Gq),liveMetrics:y(Lq).nullable(),metricDeltas:y(Uq).nullable(),drifted:_()}),Qq=p({surface:o(),entityId:o().nullable(),upstreamStatus:m().int().nullable()});p({basis:Vq,fetchedAt:o(),adAccountId:o(),storedSnapshotSyncedAt:o().nullable(),metricsWindow:p({lookbackDays:m().int().positive()}),bounds:p({maxCampaigns:m().int().positive(),maxAdGroupsPerCampaign:m().int().positive(),maxAdsPerAdGroup:m().int().positive(),maxReaderCalls:m().int().positive(),readerCalls:m().int().nonnegative(),maxPagesPerReaderCall:m().int().positive(),maxUpstreamHttpRequests:m().int().positive(),truncated:_()}),entities:y(Kq),drift:p({entitiesCompared:m().int().nonnegative(),driftedEntities:m().int().nonnegative(),statusDrifted:m().int().nonnegative(),metricsDrifted:m().int().nonnegative()}),errors:y(Qq)});const m3=A(["admin","viewer"]),Zq=/^[a-z\d][\w.-]{0,63}$/i,Fq=o().regex(Zq,"A name may use letters, digits, dots, dashes and underscores, and must start with a letter or digit."),Yb=12,Yq=o().min(Yb,`A password must be at least ${Yb} characters.`),p3=p({id:o(),name:o(),role:m3,createdAt:o(),lastLoginAt:o().nullable()});p({users:y(p3)});p({name:Fq,password:Yq,role:m3});p({name:o().min(1),password:o().min(1)});p({authRequired:_(),user:p3.pick({name:!0,role:!0}).nullable()});const zt=1,kp=A(["system","project","queries","competitors","run"]),wp=A(["0","1","2-3","4-5","6-10","11+"]);function cn(e){return!Number.isFinite(e)||e<=0?"0":e<2?"1":e<4?"2-3":e<6?"4-5":e<11?"6-10":"11+"}const Xb=A(["api_unavailable","database_unavailable","worker_unavailable","no_provider","no_queries","provider_save_failed","project_create_failed","query_save_failed","run_rejected","run_failed","run_cancelled","unknown"]),Lc=p({eventId:o().uuid(),flowVersion:O(zt),onboardingSessionId:o().uuid()});Be("event",[Lc.extend({event:O("onboarding.started"),step:kp,resumed:_()}).strict(),Lc.extend({event:O("onboarding.step_completed"),step:kp,method:A(["existing","inline","manual","generated","skipped","automatic"]),countBucket:wp.optional()}).strict(),Lc.extend({event:O("onboarding.blocked"),step:kp,action:A(["continue","configure_provider","generate_queries","save","launch_run","retry_run"]),reasonCode:Xb}).strict(),Lc.extend({event:O("run.requested"),origin:O("dashboard_setup"),result:A(["queued","rejected"]),providerCountBucket:wp,queryCountBucket:wp,reasonCode:Xb.optional()}).strict()]);p({accepted:_()});const Xq=4;function Jq(e){return e.length<Xq}var Wq=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(Wq||{});const Y$={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},X$={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},eM=J0;function tM(e){const n=[];if(e.message&&n.push(e.message),e.providers)for(const[s,r]of Object.entries(e.providers)){const u=`[${s}] ${r.message}`;r.raw!==void 0?n.push(`${u}
|
|
52
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const g of e.seen.entries()){const b=g[1];if(n===g[0]){f(g);continue}if(e.external){const k=e.external.registry.get(g[0])?.id;if(n!==g[0]&&k){f(g);continue}}if(e.metadataRegistry.get(g[0])?.id){f(g);continue}if(b.cycle){f(g);continue}if(b.count>1&&e.reused==="ref"){f(g);continue}}}function Lx(e,n){const s=e.seen.get(n);if(!s)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=g=>{const b=e.seen.get(g);if(b.ref===null)return;const x=b.def??b.schema,k={...x},S=b.ref;if(b.ref=null,S){r(S);const j=e.seen.get(S),E=j.schema;if(E.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(x.allOf=x.allOf??[],x.allOf.push(E)):Object.assign(x,E),Object.assign(x,k),g._zod.parent===S)for(const q in x)q==="$ref"||q==="allOf"||q in k||delete x[q];if(E.$ref&&j.def)for(const q in x)q==="$ref"||q==="allOf"||q in j.def&&JSON.stringify(x[q])===JSON.stringify(j.def[q])&&delete x[q]}const C=g._zod.parent;if(C&&C!==S){r(C);const j=e.seen.get(C);if(j?.schema.$ref&&(x.$ref=j.schema.$ref,j.def))for(const E in x)E==="$ref"||E==="allOf"||E in j.def&&JSON.stringify(x[E])===JSON.stringify(j.def[E])&&delete x[E]}e.override({zodSchema:g,jsonSchema:x,path:b.path??[]})};for(const g of[...e.seen.entries()].reverse())r(g[0]);const u={};if(e.target==="draft-2020-12"?u.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?u.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?u.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const g=e.external.registry.get(n)?.id;if(!g)throw new Error("Schema is missing an `id` property");u.$id=e.external.uri(g)}Object.assign(u,s.def??s.schema);const f=e.external?.defs??{};for(const g of e.seen.entries()){const b=g[1];b.def&&b.defId&&(f[b.defId]=b.def)}e.external||Object.keys(f).length>0&&(e.target==="draft-2020-12"?u.$defs=f:u.definitions=f);try{const g=JSON.parse(JSON.stringify(u));return Object.defineProperty(g,"~standard",{value:{...n["~standard"],jsonSchema:{input:Jc(n,"input",e.processors),output:Jc(n,"output",e.processors)}},enumerable:!1,writable:!1}),g}catch{throw new Error("Error converting schema to JSON.")}}function ia(e,n){const s=n??{seen:new Set};if(s.seen.has(e))return!1;s.seen.add(e);const r=e._zod.def;if(r.type==="transform")return!0;if(r.type==="array")return ia(r.element,s);if(r.type==="set")return ia(r.valueType,s);if(r.type==="lazy")return ia(r.getter(),s);if(r.type==="promise"||r.type==="optional"||r.type==="nonoptional"||r.type==="nullable"||r.type==="readonly"||r.type==="default"||r.type==="prefault")return ia(r.innerType,s);if(r.type==="intersection")return ia(r.left,s)||ia(r.right,s);if(r.type==="record"||r.type==="map")return ia(r.keyType,s)||ia(r.valueType,s);if(r.type==="pipe")return ia(r.in,s)||ia(r.out,s);if(r.type==="object"){for(const u in r.shape)if(ia(r.shape[u],s))return!0;return!1}if(r.type==="union"){for(const u of r.options)if(ia(u,s))return!0;return!1}if(r.type==="tuple"){for(const u of r.items)if(ia(u,s))return!0;return!!(r.rest&&ia(r.rest,s))}return!1}const J8=(e,n={})=>s=>{const r=Ix({...s,processors:n});return Mt(e,r),Vx(r,e),Lx(r,e)},Jc=(e,n,s={})=>r=>{const{libraryOptions:u,target:f}=r??{},g=Ix({...u??{},target:f,io:n,processors:s});return Mt(e,g),Vx(g,e),Lx(g,e)},W8={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},e7=(e,n,s,r)=>{const u=s;u.type="string";const{minimum:f,maximum:g,format:b,patterns:x,contentEncoding:k}=e._zod.bag;if(typeof f=="number"&&(u.minLength=f),typeof g=="number"&&(u.maxLength=g),b&&(u.format=W8[b]??b,u.format===""&&delete u.format,b==="time"&&delete u.format),k&&(u.contentEncoding=k),x&&x.size>0){const S=[...x];S.length===1?u.pattern=S[0].source:S.length>1&&(u.allOf=[...S.map(C=>({...n.target==="draft-07"||n.target==="draft-04"||n.target==="openapi-3.0"?{type:"string"}:{},pattern:C.source}))])}},t7=(e,n,s,r)=>{const u=s,{minimum:f,maximum:g,format:b,multipleOf:x,exclusiveMaximum:k,exclusiveMinimum:S}=e._zod.bag;typeof b=="string"&&b.includes("int")?u.type="integer":u.type="number",typeof S=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(u.minimum=S,u.exclusiveMinimum=!0):u.exclusiveMinimum=S),typeof f=="number"&&(u.minimum=f,typeof S=="number"&&n.target!=="draft-04"&&(S>=f?delete u.minimum:delete u.exclusiveMinimum)),typeof k=="number"&&(n.target==="draft-04"||n.target==="openapi-3.0"?(u.maximum=k,u.exclusiveMaximum=!0):u.exclusiveMaximum=k),typeof g=="number"&&(u.maximum=g,typeof k=="number"&&n.target!=="draft-04"&&(k<=g?delete u.maximum:delete u.exclusiveMaximum)),typeof x=="number"&&(u.multipleOf=x)},a7=(e,n,s,r)=>{s.type="boolean"},n7=(e,n,s,r)=>{n.target==="openapi-3.0"?(s.type="string",s.nullable=!0,s.enum=[null]):s.type="null"},i7=(e,n,s,r)=>{s.not={}},s7=(e,n,s,r)=>{},o7=(e,n,s,r)=>{const u=e._zod.def,f=bx(u.entries);f.every(g=>typeof g=="number")&&(s.type="number"),f.every(g=>typeof g=="string")&&(s.type="string"),s.enum=f},r7=(e,n,s,r)=>{const u=e._zod.def,f=[];for(const g of u.values)if(g===void 0){if(n.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof g=="bigint"){if(n.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");f.push(Number(g))}else f.push(g);if(f.length!==0)if(f.length===1){const g=f[0];s.type=g===null?"null":typeof g,n.target==="draft-04"||n.target==="openapi-3.0"?s.enum=[g]:s.const=g}else f.every(g=>typeof g=="number")&&(s.type="number"),f.every(g=>typeof g=="string")&&(s.type="string"),f.every(g=>typeof g=="boolean")&&(s.type="boolean"),f.every(g=>g===null)&&(s.type="null"),s.enum=f},l7=(e,n,s,r)=>{if(n.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},c7=(e,n,s,r)=>{if(n.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},u7=(e,n,s,r)=>{const u=s,f=e._zod.def,{minimum:g,maximum:b}=e._zod.bag;typeof g=="number"&&(u.minItems=g),typeof b=="number"&&(u.maxItems=b),u.type="array",u.items=Mt(f.element,n,{...r,path:[...r.path,"items"]})},d7=(e,n,s,r)=>{const u=s,f=e._zod.def;u.type="object",u.properties={};const g=f.shape;for(const k in g)u.properties[k]=Mt(g[k],n,{...r,path:[...r.path,"properties",k]});const b=new Set(Object.keys(g)),x=new Set([...b].filter(k=>{const S=f.shape[k]._zod;return n.io==="input"?S.optin===void 0:S.optout===void 0}));x.size>0&&(u.required=Array.from(x)),f.catchall?._zod.def.type==="never"?u.additionalProperties=!1:f.catchall?f.catchall&&(u.additionalProperties=Mt(f.catchall,n,{...r,path:[...r.path,"additionalProperties"]})):n.io==="output"&&(u.additionalProperties=!1)},m7=(e,n,s,r)=>{const u=e._zod.def,f=u.inclusive===!1,g=u.options.map((b,x)=>Mt(b,n,{...r,path:[...r.path,f?"oneOf":"anyOf",x]}));f?s.oneOf=g:s.anyOf=g},p7=(e,n,s,r)=>{const u=e._zod.def,f=Mt(u.left,n,{...r,path:[...r.path,"allOf",0]}),g=Mt(u.right,n,{...r,path:[...r.path,"allOf",1]}),b=k=>"allOf"in k&&Object.keys(k).length===1,x=[...b(f)?f.allOf:[f],...b(g)?g.allOf:[g]];s.allOf=x},h7=(e,n,s,r)=>{const u=s,f=e._zod.def;u.type="object";const g=f.keyType,x=g._zod.bag?.patterns;if(f.mode==="loose"&&x&&x.size>0){const S=Mt(f.valueType,n,{...r,path:[...r.path,"patternProperties","*"]});u.patternProperties={};for(const C of x)u.patternProperties[C.source]=S}else(n.target==="draft-07"||n.target==="draft-2020-12")&&(u.propertyNames=Mt(f.keyType,n,{...r,path:[...r.path,"propertyNames"]})),u.additionalProperties=Mt(f.valueType,n,{...r,path:[...r.path,"additionalProperties"]});const k=g._zod.values;if(k){const S=[...k].filter(C=>typeof C=="string"||typeof C=="number");S.length>0&&(u.required=S)}},f7=(e,n,s,r)=>{const u=e._zod.def,f=Mt(u.innerType,n,r),g=n.seen.get(e);n.target==="openapi-3.0"?(g.ref=u.innerType,s.nullable=!0):s.anyOf=[f,{type:"null"}]},g7=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType},y7=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType,s.default=JSON.parse(JSON.stringify(u.defaultValue))},b7=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType,n.io==="input"&&(s._prefault=JSON.parse(JSON.stringify(u.defaultValue)))},v7=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType;let g;try{g=u.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}s.default=g},x7=(e,n,s,r)=>{const u=e._zod.def,f=n.io==="input"?u.in._zod.def.type==="transform"?u.out:u.in:u.out;Mt(f,n,r);const g=n.seen.get(e);g.ref=f},k7=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType,s.readOnly=!0},Ux=(e,n,s,r)=>{const u=e._zod.def;Mt(u.innerType,n,r);const f=n.seen.get(e);f.ref=u.innerType},w7=Q("ZodISODateTime",(e,n)=>{vN.init(e,n),At.init(e,n)});function Gx(e){return C8(w7,e)}const S7=Q("ZodISODate",(e,n)=>{xN.init(e,n),At.init(e,n)});function $x(e){return N8(S7,e)}const j7=Q("ZodISOTime",(e,n)=>{kN.init(e,n),At.init(e,n)});function A7(e){return _8(j7,e)}const C7=Q("ZodISODuration",(e,n)=>{wN.init(e,n),At.init(e,n)});function N7(e){return z8(C7,e)}const _7=(e,n)=>{wx.init(e,n),e.name="ZodError",Object.defineProperties(e,{format:{value:s=>dC(e,s)},flatten:{value:s=>uC(e,s)},addIssue:{value:s=>{e.issues.push(s),e.message=JSON.stringify(e.issues,Bp,2)}},addIssues:{value:s=>{e.issues.push(...s),e.message=JSON.stringify(e.issues,Bp,2)}},isEmpty:{get(){return e.issues.length===0}}})},La=Q("ZodError",_7,{Parent:Error}),z7=k0(La),D7=w0(La),E7=pu(La),T7=hu(La),R7=hC(La),O7=fC(La),B7=gC(La),q7=yC(La),M7=bC(La),P7=vC(La),I7=xC(La),V7=kC(La),St=Q("ZodType",(e,n)=>(kt.init(e,n),Object.assign(e["~standard"],{jsonSchema:{input:Jc(e,"input"),output:Jc(e,"output")}}),e.toJSONSchema=J8(e,{}),e.def=n,e.type=n.type,Object.defineProperty(e,"_def",{value:n}),e.check=(...s)=>e.clone(Ni(n,{checks:[...n.checks??[],...s.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0}),e.with=e.check,e.clone=(s,r)=>_i(e,s,r),e.brand=()=>e,e.register=((s,r)=>(s.add(e,r),e)),e.parse=(s,r)=>z7(e,s,r,{callee:e.parse}),e.safeParse=(s,r)=>E7(e,s,r),e.parseAsync=async(s,r)=>D7(e,s,r,{callee:e.parseAsync}),e.safeParseAsync=async(s,r)=>T7(e,s,r),e.spa=e.safeParseAsync,e.encode=(s,r)=>R7(e,s,r),e.decode=(s,r)=>O7(e,s,r),e.encodeAsync=async(s,r)=>B7(e,s,r),e.decodeAsync=async(s,r)=>q7(e,s,r),e.safeEncode=(s,r)=>M7(e,s,r),e.safeDecode=(s,r)=>P7(e,s,r),e.safeEncodeAsync=async(s,r)=>I7(e,s,r),e.safeDecodeAsync=async(s,r)=>V7(e,s,r),e.refine=(s,r)=>e.check(R_(s,r)),e.superRefine=s=>e.check(O_(s)),e.overwrite=s=>e.check(Eo(s)),e.optional=()=>Yy(e),e.exactOptional=()=>x_(e),e.nullable=()=>Xy(e),e.nullish=()=>Yy(Xy(e)),e.nonoptional=s=>C_(e,s),e.array=()=>y(e),e.or=s=>Ve([e,s]),e.and=s=>f_(e,s),e.transform=s=>Pp(e,Qx(s)),e.default=s=>S_(e,s),e.prefault=s=>A_(e,s),e.catch=s=>__(e,s),e.pipe=s=>Pp(e,s),e.readonly=()=>E_(e),e.describe=s=>{const r=e.clone();return Ur.add(r,{description:s}),r},Object.defineProperty(e,"description",{get(){return Ur.get(e)?.description},configurable:!0}),e.meta=(...s)=>{if(s.length===0)return Ur.get(e);const r=e.clone();return Ur.add(r,s[0]),r},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=s=>s(e),e)),Hx=Q("_ZodString",(e,n)=>{S0.init(e,n),St.init(e,n),e._zod.processJSONSchema=(r,u,f)=>e7(e,r,u);const s=e._zod.bag;e.format=s.format??null,e.minLength=s.minimum??null,e.maxLength=s.maximum??null,e.regex=(...r)=>e.check(M8(...r)),e.includes=(...r)=>e.check(V8(...r)),e.startsWith=(...r)=>e.check(L8(...r)),e.endsWith=(...r)=>e.check(U8(...r)),e.min=(...r)=>e.check(Xc(...r)),e.max=(...r)=>e.check(Mx(...r)),e.length=(...r)=>e.check(Px(...r)),e.nonempty=(...r)=>e.check(Xc(1,...r)),e.lowercase=r=>e.check(P8(r)),e.uppercase=r=>e.check(I8(r)),e.trim=()=>e.check($8()),e.normalize=(...r)=>e.check(G8(...r)),e.toLowerCase=()=>e.check(H8()),e.toUpperCase=()=>e.check(K8()),e.slugify=()=>e.check(Q8())}),L7=Q("ZodString",(e,n)=>{S0.init(e,n),Hx.init(e,n),e.email=s=>e.check(s8(U7,s)),e.url=s=>e.check(u8(G7,s)),e.jwt=s=>e.check(A8(i_,s)),e.emoji=s=>e.check(d8($7,s)),e.guid=s=>e.check($y(Zy,s)),e.uuid=s=>e.check(o8(Tc,s)),e.uuidv4=s=>e.check(r8(Tc,s)),e.uuidv6=s=>e.check(l8(Tc,s)),e.uuidv7=s=>e.check(c8(Tc,s)),e.nanoid=s=>e.check(m8(H7,s)),e.guid=s=>e.check($y(Zy,s)),e.cuid=s=>e.check(p8(K7,s)),e.cuid2=s=>e.check(h8(Q7,s)),e.ulid=s=>e.check(f8(Z7,s)),e.base64=s=>e.check(w8(t_,s)),e.base64url=s=>e.check(S8(a_,s)),e.xid=s=>e.check(g8(F7,s)),e.ksuid=s=>e.check(y8(Y7,s)),e.ipv4=s=>e.check(b8(X7,s)),e.ipv6=s=>e.check(v8(J7,s)),e.cidrv4=s=>e.check(x8(W7,s)),e.cidrv6=s=>e.check(k8(e_,s)),e.e164=s=>e.check(j8(n_,s)),e.datetime=s=>e.check(Gx(s)),e.date=s=>e.check($x(s)),e.time=s=>e.check(A7(s)),e.duration=s=>e.check(N7(s))});function o(e){return i8(L7,e)}const At=Q("ZodStringFormat",(e,n)=>{wt.init(e,n),Hx.init(e,n)}),U7=Q("ZodEmail",(e,n)=>{uN.init(e,n),At.init(e,n)}),Zy=Q("ZodGUID",(e,n)=>{lN.init(e,n),At.init(e,n)}),Tc=Q("ZodUUID",(e,n)=>{cN.init(e,n),At.init(e,n)}),G7=Q("ZodURL",(e,n)=>{dN.init(e,n),At.init(e,n)}),$7=Q("ZodEmoji",(e,n)=>{mN.init(e,n),At.init(e,n)}),H7=Q("ZodNanoID",(e,n)=>{pN.init(e,n),At.init(e,n)}),K7=Q("ZodCUID",(e,n)=>{hN.init(e,n),At.init(e,n)}),Q7=Q("ZodCUID2",(e,n)=>{fN.init(e,n),At.init(e,n)}),Z7=Q("ZodULID",(e,n)=>{gN.init(e,n),At.init(e,n)}),F7=Q("ZodXID",(e,n)=>{yN.init(e,n),At.init(e,n)}),Y7=Q("ZodKSUID",(e,n)=>{bN.init(e,n),At.init(e,n)}),X7=Q("ZodIPv4",(e,n)=>{SN.init(e,n),At.init(e,n)}),J7=Q("ZodIPv6",(e,n)=>{jN.init(e,n),At.init(e,n)}),W7=Q("ZodCIDRv4",(e,n)=>{AN.init(e,n),At.init(e,n)}),e_=Q("ZodCIDRv6",(e,n)=>{CN.init(e,n),At.init(e,n)}),t_=Q("ZodBase64",(e,n)=>{NN.init(e,n),At.init(e,n)}),a_=Q("ZodBase64URL",(e,n)=>{zN.init(e,n),At.init(e,n)}),n_=Q("ZodE164",(e,n)=>{DN.init(e,n),At.init(e,n)}),i_=Q("ZodJWT",(e,n)=>{TN.init(e,n),At.init(e,n)}),j0=Q("ZodNumber",(e,n)=>{Tx.init(e,n),St.init(e,n),e._zod.processJSONSchema=(r,u,f)=>t7(e,r,u),e.gt=(r,u)=>e.check(Ky(r,u)),e.gte=(r,u)=>e.check(ip(r,u)),e.min=(r,u)=>e.check(ip(r,u)),e.lt=(r,u)=>e.check(Hy(r,u)),e.lte=(r,u)=>e.check(np(r,u)),e.max=(r,u)=>e.check(np(r,u)),e.int=r=>e.check(Fy(r)),e.safe=r=>e.check(Fy(r)),e.positive=r=>e.check(Ky(0,r)),e.nonnegative=r=>e.check(ip(0,r)),e.negative=r=>e.check(Hy(0,r)),e.nonpositive=r=>e.check(np(0,r)),e.multipleOf=(r,u)=>e.check(Qy(r,u)),e.step=(r,u)=>e.check(Qy(r,u)),e.finite=()=>e;const s=e._zod.bag;e.minValue=Math.max(s.minimum??Number.NEGATIVE_INFINITY,s.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(s.maximum??Number.POSITIVE_INFINITY,s.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(s.format??"").includes("int")||Number.isSafeInteger(s.multipleOf??.5),e.isFinite=!0,e.format=s.format??null});function m(e){return D8(j0,e)}const s_=Q("ZodNumberFormat",(e,n)=>{RN.init(e,n),j0.init(e,n)});function Fy(e){return T8(s_,e)}const o_=Q("ZodBoolean",(e,n)=>{ON.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>a7(e,s,r)});function _(e){return R8(o_,e)}const r_=Q("ZodNull",(e,n)=>{BN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>n7(e,s,r)});function ce(e){return O8(r_,e)}const l_=Q("ZodUnknown",(e,n)=>{qN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>s7()});function ya(){return B8(l_)}const c_=Q("ZodNever",(e,n)=>{MN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>i7(e,s,r)});function u_(e){return q8(c_,e)}const d_=Q("ZodArray",(e,n)=>{PN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>u7(e,s,r,u),e.element=n.element,e.min=(s,r)=>e.check(Xc(s,r)),e.nonempty=s=>e.check(Xc(1,s)),e.max=(s,r)=>e.check(Mx(s,r)),e.length=(s,r)=>e.check(Px(s,r)),e.unwrap=()=>e.element});function y(e,n){return Z8(d_,e,n)}const m_=Q("ZodObject",(e,n)=>{VN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>d7(e,s,r,u),it(e,"shape",()=>n.shape),e.keyof=()=>A(Object.keys(e._zod.def.shape)),e.catchall=s=>e.clone({...e._zod.def,catchall:s}),e.passthrough=()=>e.clone({...e._zod.def,catchall:ya()}),e.loose=()=>e.clone({...e._zod.def,catchall:ya()}),e.strict=()=>e.clone({...e._zod.def,catchall:u_()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=s=>sC(e,s),e.safeExtend=s=>oC(e,s),e.merge=s=>rC(e,s),e.pick=s=>nC(e,s),e.omit=s=>iC(e,s),e.partial=(...s)=>lC(Zx,e,s[0]),e.required=(...s)=>cC(Fx,e,s[0])});function p(e,n){const s={type:"object",shape:e??{},...ze(n)};return new m_(s)}const Kx=Q("ZodUnion",(e,n)=>{Bx.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>m7(e,s,r,u),e.options=n.options});function Ve(e,n){return new Kx({type:"union",options:e,...ze(n)})}const p_=Q("ZodDiscriminatedUnion",(e,n)=>{Kx.init(e,n),LN.init(e,n)});function Be(e,n,s){return new p_({type:"union",options:n,discriminator:e,...ze(s)})}const h_=Q("ZodIntersection",(e,n)=>{UN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>p7(e,s,r,u)});function f_(e,n){return new h_({type:"intersection",left:e,right:n})}const g_=Q("ZodRecord",(e,n)=>{GN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>h7(e,s,r,u),e.keyType=n.keyType,e.valueType=n.valueType});function Ie(e,n,s){return new g_({type:"record",keyType:e,valueType:n,...ze(s)})}const Mp=Q("ZodEnum",(e,n)=>{$N.init(e,n),St.init(e,n),e._zod.processJSONSchema=(r,u,f)=>o7(e,r,u),e.enum=n.entries,e.options=Object.values(n.entries);const s=new Set(Object.keys(n.entries));e.extract=(r,u)=>{const f={};for(const g of r)if(s.has(g))f[g]=n.entries[g];else throw new Error(`Key ${g} not found in enum`);return new Mp({...n,checks:[],...ze(u),entries:f})},e.exclude=(r,u)=>{const f={...n.entries};for(const g of r)if(s.has(g))delete f[g];else throw new Error(`Key ${g} not found in enum`);return new Mp({...n,checks:[],...ze(u),entries:f})}});function A(e,n){const s=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new Mp({type:"enum",entries:s,...ze(n)})}const y_=Q("ZodLiteral",(e,n)=>{HN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>r7(e,s,r),e.values=new Set(n.values),Object.defineProperty(e,"value",{get(){if(n.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return n.values[0]}})});function O(e,n){return new y_({type:"literal",values:Array.isArray(e)?e:[e],...ze(n)})}const b_=Q("ZodTransform",(e,n)=>{KN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>c7(e,s),e._zod.parse=(s,r)=>{if(r.direction==="backward")throw new gx(e.constructor.name);s.addIssue=f=>{if(typeof f=="string")s.issues.push(Yr(f,s.value,n));else{const g=f;g.fatal&&(g.continue=!1),g.code??(g.code="custom"),g.input??(g.input=s.value),g.inst??(g.inst=e),s.issues.push(Yr(g))}};const u=n.transform(s.value,s);return u instanceof Promise?u.then(f=>(s.value=f,s)):(s.value=u,s)}});function Qx(e){return new b_({type:"transform",transform:e})}const Zx=Q("ZodOptional",(e,n)=>{qx.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>Ux(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function Yy(e){return new Zx({type:"optional",innerType:e})}const v_=Q("ZodExactOptional",(e,n)=>{QN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>Ux(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function x_(e){return new v_({type:"optional",innerType:e})}const k_=Q("ZodNullable",(e,n)=>{ZN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>f7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function Xy(e){return new k_({type:"nullable",innerType:e})}const w_=Q("ZodDefault",(e,n)=>{FN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>y7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function S_(e,n){return new w_({type:"default",innerType:e,get defaultValue(){return typeof n=="function"?n():xx(n)}})}const j_=Q("ZodPrefault",(e,n)=>{YN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>b7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function A_(e,n){return new j_({type:"prefault",innerType:e,get defaultValue(){return typeof n=="function"?n():xx(n)}})}const Fx=Q("ZodNonOptional",(e,n)=>{XN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>g7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function C_(e,n){return new Fx({type:"nonoptional",innerType:e,...ze(n)})}const N_=Q("ZodCatch",(e,n)=>{JN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>v7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function __(e,n){return new N_({type:"catch",innerType:e,catchValue:typeof n=="function"?n:()=>n})}const z_=Q("ZodPipe",(e,n)=>{WN.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>x7(e,s,r,u),e.in=n.in,e.out=n.out});function Pp(e,n){return new z_({type:"pipe",in:e,out:n})}const D_=Q("ZodReadonly",(e,n)=>{e8.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>k7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function E_(e){return new D_({type:"readonly",innerType:e})}const T_=Q("ZodCustom",(e,n)=>{t8.init(e,n),St.init(e,n),e._zod.processJSONSchema=(s,r,u)=>l7(e,s)});function R_(e,n={}){return F8(T_,e,n)}function O_(e){return Y8(e)}function A0(e,n){return Pp(Qx(e),n)}const Ye={custom:"custom"};function Yx(e){return E8(j0,e)}const Xx=p({id:o(),name:o(),keyPrefix:o(),scopes:y(o()),projectId:o().nullable(),projectName:o().nullable(),readOnly:_(),createdAt:o(),lastUsedAt:o().nullable(),revokedAt:o().nullable()});p({keys:y(Xx)});p({name:o().min(1).max(100),scopes:y(o()).min(1).optional(),projectId:o().optional()});Xx.extend({key:o()});const B_=p({maxConcurrency:m().int().positive(),maxRequestsPerMinute:m().int().positive(),maxRequestsPerDay:m().int().positive()}),ft=o().min(1),C0=Ie(o(),o().trim().min(1));o().min(1);const la=p({label:o().min(1),city:o().min(1),region:o().min(1),country:o().length(2),timezone:o().optional()}),N0=A(["citation.lost","citation.gained","run.completed","run.failed","insight.critical","insight.high","health.degraded","health.recovered"]);p({id:o(),projectId:o(),channel:O("webhook"),url:o().url(),urlDisplay:o(),urlHost:o(),events:y(N0),enabled:_().default(!0),source:o().optional(),webhookSecret:o().optional(),createdAt:o(),updatedAt:o()});p({channel:O("webhook"),url:o().url(),events:y(N0).min(1),source:o().optional()});function q_(e){if(e instanceof Error)return e.message;if(typeof e=="string")return e;if(e==null)return"unknown error";try{const n=JSON.stringify(e);if(n!==void 0)return n}catch{}try{return String(e)}catch{return"unknown error"}}function sp(e,n=!1){const s=new Set,r=[];for(const u of e){const f=n?u.toLowerCase():u;s.has(f)||(s.add(f),r.push(u))}return r}function Jy(e){try{const n=e.includes("://"),s=new URL(n?e:`https://${e}`);if(!n&&(s.pathname!=="/"||s.search||s.hash)||s.username||s.password||s.port)return null;const r=s.hostname.trim().toLowerCase().replace(/^www\./,"");return!r||r.includes("/")||r.includes("?")||r.includes("#")?null:r}catch{return null}}const M_=o().trim().min(1).refine(e=>Jy(e)!==null,{message:"Marketing hosts must be valid hostnames without credentials or ports"}).overwrite(e=>Jy(e)??e),P_=o().trim().min(1),I_=o().trim().regex(/^[a-z]\w{0,39}$/i,{message:"GA4 event names must start with a letter and contain only letters, numbers, or underscores"}),_0=p({marketingHosts:y(M_).overwrite(e=>sp(e,!0)),brandTerms:y(P_).overwrite(e=>sp(e,!0)),leadEventNames:y(I_).overwrite(e=>sp(e))});function V_(){return{marketingHosts:[],brandTerms:[],leadEventNames:["generate_lead"]}}const op=Object.freeze({marketingHosts:Object.freeze([]),brandTerms:Object.freeze([]),leadEventNames:Object.freeze(["generate_lead"])}),Jx=()=>V_(),Wy=A(["never-synced","ready","error"]),L_=A(["landing-page","channel"]),U_=A(["30d","60d","90d"]),G_=A(["marketing","all"]),Gr=$x(),nl=p({label:A(["earliest","middle","previous","latest"]),startDate:Gr,endDate:Gr}),rp=nl.extend({sessions:m().int().nonnegative()}),eb=nl.extend({eventCount:m().int().nonnegative()}),tb=nl.extend({clicks:m().int().nonnegative(),impressions:m().int().nonnegative()}),$_=nl.extend({propertyClicks:m().int().nonnegative(),propertyImpressions:m().int().nonnegative(),reportedQueryClicks:m().int().nonnegative(),reportedQueryImpressions:m().int().nonnegative(),brandedClicks:m().int().nonnegative(),brandedImpressions:m().int().nonnegative(),nonBrandedClicks:m().int().nonnegative(),nonBrandedImpressions:m().int().nonnegative(),unreportedClicks:m().int().nonnegative(),unreportedImpressions:m().int().nonnegative()}),H_=nl.extend({sessions:m().int().nonnegative(),engagementRate:m().min(0).max(1).nullable(),dailyTotalUsers:m().int().nonnegative().nullable(),dailyNewUsers:m().int().nonnegative().nullable(),metricsAvailable:_(),daysInPeriod:m().int().nonnegative(),daysWithEngagementRate:m().int().nonnegative(),daysWithUserSplit:m().int().nonnegative()}),K_=p({window:U_,bucketDays:O(30),filters:p({hostScope:G_,marketingHosts:y(o()),pathPrefix:o().nullable(),brandTerms:y(o()),queryMixScope:O("property")}),acquisition:p({status:Wy,error:o().nullable(),syncedAt:o().datetime().nullable(),periods:y(rp),channels:y(p({channelGroup:o(),periods:y(rp)})),pages:y(p({hostName:o(),landingPage:o(),periods:y(rp)}))}),leads:p({status:Wy,error:o().nullable(),syncedAt:o().datetime().nullable(),attributionScope:L_.nullable(),hostAndPathFiltersApplied:_(),periods:y(eb),channels:y(p({channelGroup:o(),periods:y(eb)}))}),engagement:p({status:A(["ready","unavailable"]),availableFromDate:Gr.nullable(),latestDate:Gr.nullable(),periods:y(H_)}),searchDemand:p({status:A(["ready","unavailable"]),periods:y($_),queries:y(p({query:o(),classification:A(["branded","non-branded"]),periods:y(tb)})),pages:y(p({hostName:o(),landingPage:o(),periods:y(tb)})),latestDate:Gr.nullable()})}),Q_=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Z_=/[\0-\x1F\x7F-\x9F]/,F_=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B4E\u1B4F\u1B5A-\u1B60\u1B7D-\u1B7F\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDD6E\uDEAD\uDED0\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9\uDFD4\uDFD5\uDFD7\uDFD8]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09\uDFE1]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDD6D-\uDD6F\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD839\uDDFF|\uD83A[\uDD5E\uDD5F]/,Y_=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;var X_=class{src_Any=Q_.source;src_Cc=Z_.source;src_Z=Y_.source;src_P=F_.source;src_ZPCc=[this.src_Z,this.src_P,this.src_Cc].join("|");src_ZCc=[this.src_Z,this.src_Cc].join("|");cache={};opts={maxLength:1e4,urlAuth:!1,schema_names:[]};constructor(e={}){this.opts={...this.opts,...e}}set(e={}){return this.opts={...this.opts,...e},this.cache={},this}escapeRE(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}nestedPairRE(e,n,s=4){const r=this.escapeRE(e),u=this.escapeRE(n),f=`(?:(?!${this.src_ZCc}|${r}|${u}).)`;let g=`${r}${f}{0,1000}${u}`;for(let b=2;b<=s;b++)g=`${r}(?:${f}|${g}){0,1000}${u}`;return g}get_text_separators(){return this.cache.text_separators??=/[><\uff5c]/}get_pseudo_letter(){return this.cache.src_pseudo_letter??=new RegExp(`(?:(?!${this.get_text_separators().source}|${this.src_ZPCc})${this.src_Any})`)}get_ipv4_addr(){return this.cache.src_ip4??=new RegExp("(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])[.]){3}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])")}get_ipv6_addr(){const e="[0-9A-Fa-f]{1,4}",n=`(?:(?:${e}:${e})|${this.get_ipv4_addr().source})`;return this.cache.src_ip6_addr??=new RegExp(`(?:(?:${e}:){6}${n}|::(?:${e}:){5}${n}|(?:${e})?::(?:${e}:){4}${n}|(?:(?:${e}:){0,1}${e})?::(?:${e}:){3}${n}|(?:(?:${e}:){0,2}${e})?::(?:${e}:){2}${n}|(?:(?:${e}:){0,3}${e})?::${e}:${n}|(?:(?:${e}:){0,4}${e})?::${n}|(?:(?:${e}:){0,5}${e})?::${e}|(?:(?:${e}:){0,6}${e})?::)`)}get_ipv6_url_host(){return this.cache.src_ip6_host??=new RegExp(`\\[${this.get_ipv6_addr().source}\\]`)}get_ipv6_mail_host(){return this.cache.src_ipv6_mail_host??=new RegExp(`\\[IPv6:${this.get_ipv6_addr().source}\\]`)}get_auth(){return this.cache.src_auth??=new RegExp(`(?:(?:(?!${this.src_ZCc}|[@/\\[\\]()]).){1,50}@)?`)}get_port(){return this.cache.src_port??=new RegExp("(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?")}get_host_terminator(){return this.cache.src_host_terminator??=new RegExp(`(?=$|${this.get_text_separators().source}|${this.src_ZPCc})(?!${this.opts["---"]?"-(?!--)|":"-|"}_|:\\d|\\.-|\\.(?!$|${this.src_ZPCc}))`)}get_path_terminator(){return this.cache.src_path_terminator??=new RegExp(`${this.src_ZPCc}|${this.get_text_separators().source}`)}get_path(){return this.cache.src_path??=new RegExp(`(?:[/?#](?:${this.nestedPairRE("[","]")}|${this.nestedPairRE("(",")")}|${this.nestedPairRE("{","}")}|\\"(?:(?!${this.src_ZCc}|["]).){1,100}\\"|\\'(?:(?!${this.src_ZCc}|[']).){1,100}\\'|\\'(?=${this.get_pseudo_letter().source}|[-])|\\.{2,20}[:]?[a-zA-Z0-9%/&]|\\.(?!${this.src_ZCc}|[.]|$)|`+(this.opts["---"]?"\\-(?!--(?:[^-]|$))(?:-{0,19})|":"\\-{1,20}|")+`,(?!${this.src_ZCc}|$)|;(?!${this.src_ZCc}|$)|\\!{1,20}(?!${this.src_ZCc}|[!]|$)|\\?(?!${this.src_ZCc}|[?]|$)|`+this.get_path_extra().source+`[\\\\/:%@#&=_~*]|(?!${this.get_path_terminator().source}).){1,${this.opts.maxLength}}|\\/)?`)}get_mail_name(){return this.cache.src_mail_name??=new RegExp("[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9](?:[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9]|[.](?=[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9])){0,63}")}get_xn(){return this.cache.src_xn??=new RegExp("xn--[a-z0-9\\-]{1,59}")}get_tld(){if(this.cache.tld)return this.cache.tld;const e=[...new Set(this.opts.tlds||[])].sort().reverse().join("|");return this.cache.tld=new RegExp(`${e||"$#none#$"}|${this.get_xn().source}`),this.cache.tld}get_domain_root(){return this.cache.src_domain_root??=new RegExp("(?:"+this.get_xn().source+`|${this.get_pseudo_letter().source}{1,63})`)}get_domain(){return this.cache.src_domain??=new RegExp("(?:"+this.get_xn().source+`|(?:${this.get_pseudo_letter().source})|(?:${this.get_pseudo_letter().source}(?:-|${this.get_pseudo_letter().source}){0,61}${this.get_pseudo_letter().source}))`)}get_url_host_port(){return this.cache.url_host_port??=new RegExp("(?:"+this.get_ipv6_url_host().source+`|(?:(?:(?:${this.get_domain().source})\\.){0,10}${this.get_domain().source}))`+this.get_port().source+this.get_host_terminator().source)}get_fuzzy_url_host_port(){return this.cache.fuzzy_url_host_port??=new RegExp("(?:"+(this.opts.fuzzyIP?this.get_ipv4_addr().source+"|":"")+`(?:(?:(?:${this.get_domain().source})\\.){1,10}(?:${this.get_tld().source})))`+this.get_host_terminator().source)}get_mail_host(){return this.cache.src_mail_host??=new RegExp("(?:"+this.get_ipv6_mail_host().source+`|(?:(?:(?:${this.get_domain().source})\\.){0,4}${this.get_domain().source}))`+this.get_host_terminator().source)}get_fuzzy_mail_host(){return this.cache.src_fuzzy_mail_host??=new RegExp("(?:"+this.get_ipv6_mail_host().source+`|(?:(?:(?:${this.get_domain().source})[.]){1,4}${this.get_domain_root().source}))`+this.get_host_terminator().source)}get_path_extra(){return this.cache.src_path_extra??=new RegExp("")}get_fuzzy_mail_host_search(){return this.cache.mail_fuzzy_host_search??=new RegExp(`@${this.get_fuzzy_mail_host().source}`,"ig")}get_fuzzy_link_search(){return this.cache.link_fuzzy_search??=new RegExp(`(^|(?![.:/\\-_@])(?:[$+<=>^\`||]|${this.src_ZPCc}))(?:(?![$+<=>^\`||])${this.get_fuzzy_url_host_port().source}${this.get_path().source})`,"ig")}get_http_validator(){return this.cache.http_validator??=new RegExp("\\/\\/"+(this.opts.urlAuth?this.get_auth().source:"")+this.get_url_host_port().source+this.get_path().source,"iy")}get_relative_proto_validator(){return this.cache.relative_proto_validator??=new RegExp((this.opts.urlAuth?this.get_auth().source:"")+`(?:localhost|${this.get_ipv6_url_host().source}|(?:(?:${this.get_domain().source})[.]){1,10}${this.get_domain_root().source})`+this.get_port().source+this.get_host_terminator().source+this.get_path().source,"iy")}get_mail_name_validator(){return this.cache.mail_name_validator??=new RegExp(`(?:^|${this.get_text_separators().source}|"|\\(|${this.src_ZCc})(${this.get_mail_name().source})$`)}get_mailto_validator(){return this.cache.mailto_validator??=new RegExp(`${this.get_mail_name().source}@${this.get_mail_host().source}`,"iy")}get_schema_names(){return this.cache.schema_names??=new RegExp((this.opts.schema_names||[]).map(e=>this.escapeRE(e)).join("|"))}get_schema_search(){return this.cache.schema_search??=new RegExp(`(^|(?!_)(?:[><|]|${this.src_ZPCc}))(${this.get_schema_names().source})`,"ig")}get_schema_at_start(){return this.cache.schema_at_start??=new RegExp(`^${this.get_schema_search().source}`,"i")}},lp={validate:(e,n,s)=>{const r=s.re.get_http_validator();r.lastIndex=n;const u=r.exec(e);return u?u[0].length:0},normalize:(e,n)=>n.normalize(e)},J_={"http:":lp,"https:":lp,"ftp:":lp,"//":{validate:function(e,n,s){const r=s.re.get_relative_proto_validator();r.lastIndex=n;const u=r.exec(e);return u?n>=3&&e[n-3]===":"||n>=3&&e[n-3]==="/"?0:u[0].length:0},normalize:(e,n)=>n.normalize(e)},"mailto:":{validate:function(e,n,s){const r=s.re.get_mailto_validator();r.lastIndex=n;const u=r.exec(e);return u?u[0].length:0},normalize:(e,n)=>n.normalize(e)}},W_="a:cdefgilmnoqrstuwxz|b:abdefghijmnorstvwyz|c:acdfghiklmnoruvwxyz|d:ejkmoz|e:cegrstu|f:ijkmor|g:abdefghilmnpqrstuwy|h:kmnrtu|i:delmnoqrst|j:emop|k:eghimnprwyz|l:abcikrstuvy|m:acdeghklmnopqrstuvwxyz|n:acefgilopruz|o:m|p:aefghklmnrstwy|q:a|r:eosuw|s:abcdeghijklmnortuvxyz|t:cdfghjklmnortvwz|u:agksyz|v:aceginu|w:fs|y:et|z:amw",ez="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";function tz(){const e=ez.split("|");return W_.split("|").forEach(n=>{const s=n.indexOf(":"),r=n.slice(0,s);for(const u of n.slice(s+1))e.push(r+u)}),e}var az={fuzzyLink:!1,fuzzyEmail:!0,fuzzyIP:!1,"---":!1,tlds:tz(),urlAuth:!1,maxLength:1e4},ab=class{schema;index;lastIndex;raw;text;url;constructor(e,n,s,r){const u=e.slice(s,r);this.schema=n.toLowerCase(),this.index=s,this.lastIndex=r,this.raw=u,this.text=u,this.url=u}},nz=class{__opts__;__schemas__;re;constructor(e={}){const{rebuilder:n,...s}=e;this.__opts__={...az,...s},this.__schemas__={...J_},this.re=n||new X_,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)})}add(e,n=null){if(!n)delete this.__schemas__[e];else{const s={normalize:(r,u)=>u.normalize(r),...n};this.__schemas__[e]=s}return this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}set(e={}){return this.__opts__={...this.__opts__,...e},this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}test(e){if(!e.length)return!1;let n,s;for(s=this.re.get_schema_search(),s.lastIndex=0;(n=s.exec(e))!==null;)if(this.testSchemaAt(e,n[2],s.lastIndex))return!0;if(this.__opts__.fuzzyLink&&this.__schemas__["http:"]&&(s=this.re.get_fuzzy_link_search(),s.lastIndex=0,s.exec(e)!==null))return!0;if(this.__opts__.fuzzyEmail&&this.__schemas__["mailto:"]&&e.indexOf("@")>=0){const r=this.re.get_fuzzy_mail_host_search(),u=this.re.get_mail_name_validator();for(r.lastIndex=0;(n=r.exec(e))!==null;){const f=e.slice(Math.max(0,n.index-65),n.index);if(u.test(f))return!0}}return!1}testSchemaAt(e,n,s){return this.__schemas__[n.toLowerCase()]?this.__schemas__[n.toLowerCase()].validate(e.slice(0,s+this.__opts__.maxLength),s,this):0}match(e){const n=[],s=this.re.get_schema_search();let r,u,f,g,b,x,k=!1,S=!1,C=!1,j=0;if(!e.length)return null;for(s.lastIndex=0,this.__opts__.fuzzyLink&&this.__schemas__["http:"]&&(r=this.re.get_fuzzy_link_search(),r.lastIndex=0),this.__opts__.fuzzyEmail&&this.__schemas__["mailto:"]&&(u=this.re.get_fuzzy_mail_host_search(),u.lastIndex=0,f=this.re.get_mail_name_validator());;){const E=Math.max(j-1,0);if(u&&f&&!C&&(!b||b.index<j))for(u.lastIndex<E&&(u.lastIndex=E);;){const te=u.exec(e);if(!te){C=!0,b=void 0;break}const X=f.exec(e.slice(Math.max(0,te.index-65),te.index));if(X){if(b={schema:"mailto:",index:te.index-X[1].length,lastIndex:te.index+te[0].length},b.index>=j)break;u.lastIndex<E&&(u.lastIndex=E)}}if(r&&!S&&(!g||g.index<j))for(r.lastIndex<E&&(r.lastIndex=E);;){const te=r.exec(e);if(!te){S=!0,g=void 0;break}if(g={schema:"",index:te.index+te[1].length,lastIndex:te.index+te[0].length},g.index>=j)break;r.lastIndex<E&&(r.lastIndex=E)}let B=b;(!B||g&&(g.index<B.index||g.index===B.index&&g.lastIndex>B.lastIndex))&&(B=g);let q;if(!k)for(;;){if(!x){s.lastIndex<E&&(s.lastIndex=E);const ae=s.exec(e);if(!ae){k=!0;break}x={schema:ae[2],index:ae.index+ae[1].length,lastIndex:ae.index+ae[0].length}}if(x.index<j){x=void 0;continue}if(B&&x.index>B.index)break;const te=x;x=void 0;const X=this.testSchemaAt(e,te.schema,te.lastIndex);if(X){q={schema:te.schema,index:te.index,lastIndex:te.lastIndex+X};break}}let U=q;if((!U||b&&(b.index<U.index||b.index===U.index&&b.lastIndex>U.lastIndex))&&(U=b),(!U||g&&(g.index<U.index||g.index===U.index&&g.lastIndex>U.lastIndex))&&(U=g),!U)break;U===b?b=void 0:U===g&&(g=void 0);const G=new ab(e,U.schema,U.index,U.lastIndex);G.schema?this.__schemas__[G.schema].normalize(G,this):this.normalize(G),n.push(G),j=U.lastIndex}return n.length?n:null}matchAtStart(e){if(!e.length)return null;const n=this.re.get_schema_at_start().exec(e);if(!n)return null;const s=this.testSchemaAt(e,n[2],n[0].length);if(!s)return null;const r=new ab(e,n[2],n.index+n[1].length,n.index+n[0].length+s);return this.__schemas__[r.schema].normalize(r,this),r}tlds(e,n=!1){return e=Array.isArray(e)?e:[e],n?this.__opts__.tlds=this.__opts__.tlds.concat(e):this.__opts__.tlds=e,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}normalize(e){e.schema||(e.url=`http://${e.url}`),e.schema==="mailto:"&&!/^mailto:/i.test(e.url)&&(e.url=`mailto:${e.url}`)}};const iz=JSON.parse('["aaa","aarp","abb","abbott","abbvie","abc","able","abogado","abudhabi","ac","academy","accenture","accountant","accountants","aco","actor","ad","ads","adult","ae","aeg","aero","aetna","af","afl","africa","ag","agakhan","agency","ai","aig","airbus","airforce","airtel","akdn","al","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","am","amazon","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","ao","aol","apartments","app","apple","aq","aquarelle","ar","arab","aramco","archi","army","arpa","art","arte","as","asda","asia","associates","at","athleta","attorney","au","auction","audi","audible","audio","auspost","author","auto","autos","aw","aws","ax","axa","az","azure","ba","baby","baidu","banamex","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bb","bbc","bbt","bbva","bcg","bcn","bd","be","beats","beauty","beer","berlin","best","bestbuy","bet","bf","bg","bh","bharti","bi","bible","bid","bike","bing","bingo","bio","biz","bj","black","blackfriday","blockbuster","blog","bloomberg","blue","bm","bms","bmw","bn","bnpparibas","bo","boats","boehringer","bofa","bom","bond","boo","book","booking","bosch","bostik","boston","bot","boutique","box","br","bradesco","bridgestone","broadway","broker","brother","brussels","bs","bt","build","builders","business","buy","buzz","bv","bw","by","bz","bzh","ca","cab","cafe","cal","call","calvinklein","cam","camera","camp","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","casa","case","cash","casino","cat","catering","catholic","cba","cbn","cbre","cc","cd","center","ceo","cern","cf","cfa","cfd","cg","ch","chanel","channel","charity","chase","chat","cheap","chintai","christmas","chrome","church","ci","cipriani","circle","cisco","citadel","citi","citic","city","ck","cl","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","cm","cn","co","coach","codes","coffee","college","cologne","com","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cool","coop","corsica","country","coupon","coupons","courses","cpa","cr","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","cu","cuisinella","cv","cw","cx","cy","cymru","cyou","cz","dad","dance","data","date","dating","datsun","day","dclk","dds","de","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dj","dk","dm","dnp","do","docs","doctor","dog","domains","dot","download","drive","dtv","dubai","dupont","durban","dvag","dvr","dz","earth","eat","ec","eco","edeka","edu","education","ee","eg","email","emerck","energy","engineer","engineering","enterprises","epson","equipment","er","ericsson","erni","es","esq","estate","et","eu","eurovision","eus","events","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fi","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","fj","fk","flickr","flights","flir","florist","flowers","fly","fm","fo","foo","food","football","ford","forex","forsale","forum","foundation","fox","fr","free","fresenius","frl","frogans","frontier","ftr","fujitsu","fun","fund","furniture","futbol","fyi","ga","gal","gallery","gallo","gallup","game","games","gap","garden","gay","gb","gbiz","gd","gdn","ge","gea","gent","genting","george","gf","gg","ggee","gh","gi","gift","gifts","gives","giving","gl","glass","gle","global","globo","gm","gmail","gmbh","gmo","gmx","gn","godaddy","gold","goldpoint","golf","goo","goodyear","goog","google","gop","got","gov","gp","gq","gr","grainger","graphics","gratis","green","gripe","grocery","group","gs","gt","gu","gucci","guge","guide","guitars","guru","gw","gy","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hiphop","hisamitsu","hitachi","hiv","hk","hkt","hm","hn","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","horse","hospital","host","hosting","hot","hotels","hotmail","house","how","hr","hsbc","ht","hu","hughes","hyatt","hyundai","ibm","icbc","ice","icu","id","ie","ieee","ifm","ikano","il","im","imamat","imdb","immo","immobilien","in","inc","industries","infiniti","info","ing","ink","institute","insurance","insure","int","international","intuit","investments","io","ipiranga","iq","ir","irish","is","ismaili","ist","istanbul","it","itau","itv","jaguar","java","jcb","je","jeep","jetzt","jewelry","jio","jll","jm","jmp","jnj","jo","jobs","joburg","jot","joy","jp","jpmorgan","jprs","juegos","juniper","kaufen","kddi","ke","kerryhotels","kerryproperties","kfh","kg","kh","ki","kia","kids","kim","kindle","kitchen","kiwi","km","kn","koeln","komatsu","kosher","kp","kpmg","kpn","kr","krd","kred","kuokgroup","kw","ky","kyoto","kz","la","lacaixa","lamborghini","lamer","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lb","lc","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","li","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","link","live","living","lk","llc","llp","loan","loans","locker","locus","lol","london","lotte","lotto","love","lpl","lplfinancial","lr","ls","lt","ltd","ltda","lu","lundbeck","luxe","luxury","lv","ly","ma","madrid","maif","maison","makeup","man","management","mango","map","market","marketing","markets","marriott","marshalls","mattel","mba","mc","mckinsey","md","me","med","media","meet","melbourne","meme","memorial","men","menu","merckmsd","mg","mh","miami","microsoft","mil","mini","mint","mit","mitsubishi","mk","ml","mlb","mls","mm","mma","mn","mo","mobi","mobile","moda","moe","moi","mom","monash","money","monster","mormon","mortgage","moscow","moto","motorcycles","mov","movie","mp","mq","mr","ms","msd","mt","mtn","mtr","mu","museum","music","mv","mw","mx","my","mz","na","nab","nagoya","name","navy","nba","nc","ne","nec","net","netbank","netflix","network","neustar","new","news","next","nextdirect","nexus","nf","nfl","ng","ngo","nhk","ni","nico","nike","nikon","ninja","nissan","nissay","nl","no","nokia","norton","now","nowruz","nowtv","np","nr","nra","nrw","ntt","nu","nyc","nz","obi","observer","office","okinawa","olayan","olayangroup","ollo","om","omega","one","ong","onl","online","ooo","open","oracle","orange","org","organic","origins","osaka","otsuka","ott","ovh","pa","page","panasonic","paris","pars","partners","parts","party","pay","pccw","pe","pet","pf","pfizer","pg","ph","pharmacy","phd","philips","phone","photo","photography","photos","physio","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","pk","pl","place","play","playstation","plumbing","plus","pm","pn","pnc","pohl","poker","politie","porn","post","pr","praxi","press","prime","pro","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","ps","pt","pub","pw","pwc","py","qa","qpon","quebec","quest","racing","radio","re","read","realestate","realtor","realty","recipes","red","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","ril","rio","rip","ro","rocks","rodeo","rogers","room","rs","rsvp","ru","rugby","ruhr","run","rw","rwe","ryukyu","sa","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sarl","sas","save","saxo","sb","sbi","sbs","sc","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scot","sd","se","search","seat","secure","security","seek","select","sener","services","seven","sew","sex","sexy","sfr","sg","sh","shangrila","sharp","shell","shia","shiksha","shoes","shop","shopping","shouji","show","si","silk","sina","singles","site","sj","sk","ski","skin","sky","skype","sl","sling","sm","smart","smile","sn","sncf","so","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","spa","space","sport","spot","sr","srl","ss","st","stada","staples","star","statebank","statefarm","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","su","sucks","supplies","supply","support","surf","surgery","suzuki","sv","swatch","swiss","sx","sy","sydney","systems","sz","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tc","tci","td","tdk","team","tech","technology","tel","temasek","tennis","teva","tf","tg","th","thd","theater","theatre","tiaa","tickets","tienda","tips","tires","tirol","tj","tjmaxx","tjx","tk","tkmaxx","tl","tm","tmall","tn","to","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","tr","trade","trading","training","travel","travelers","travelersinsurance","trust","trv","tt","tube","tui","tunes","tushu","tv","tvs","tw","tz","ua","ubank","ubs","ug","uk","unicom","university","uno","uol","ups","us","uy","uz","va","vacations","vana","vanguard","vc","ve","vegas","ventures","verisign","vermögensberater","vermögensberatung","versicherung","vet","vg","vi","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","viva","vivo","vlaanderen","vn","vodka","volvo","vote","voting","voto","voyage","vu","wales","walmart","walter","wang","wanggou","watch","watches","weather","weatherchannel","webcam","weber","website","wed","wedding","weibo","weir","wf","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","ws","wtc","wtf","xbox","xerox","xihuan","xin","xxx","xyz","yachts","yahoo","yamaxun","yandex","ye","yodobashi","yoga","yokohama","you","youtube","yt","yun","za","zappos","zara","zero","zip","zm","zone","zuerich","zw","ελ","ευ","бг","бел","дети","ею","католик","ком","мкд","мон","москва","онлайн","орг","рус","рф","сайт","срб","укр","қаз","հայ","ישראל","קום","ابوظبي","ارامكو","الاردن","البحرين","الجزائر","السعودية","العليان","المغرب","امارات","ایران","بارت","بازار","بيتك","بھارت","تونس","سودان","سورية","شبكة","عراق","عرب","عمان","فلسطين","قطر","كاثوليك","كوم","مصر","مليسيا","موريتانيا","موقع","همراه","پاکستان","ڀارت","कॉम","नेट","भारत","भारतम्","भारोत","संगठन","বাংলা","ভারত","ভাৰত","ਭਾਰਤ","ભારત","ଭାରତ","இந்தியா","இலங்கை","சிங்கப்பூர்","భారత్","ಭಾರತ","ഭാരതം","ලංකා","คอม","ไทย","ລາວ","გე","みんな","アマゾン","クラウド","グーグル","コム","ストア","セール","ファッション","ポイント","世界","中信","中国","中國","中文网","亚马逊","企业","佛山","信息","健康","八卦","公司","公益","台湾","台灣","商城","商店","商标","嘉里","嘉里大酒店","在线","大拿","天主教","娱乐","家電","广东","微博","慈善","我爱你","手机","招聘","政务","政府","新加坡","新闻","时尚","書籍","机构","淡马锡","游戏","澳門","点看","移动","组织机构","网址","网店","网站","网络","联通","谷歌","购物","通販","集团","電訊盈科","飞利浦","食品","餐厅","香格里拉","香港","닷넷","닷컴","삼성","한국"]');function sz(e,n){return e.endsWith(n)?e.length===n.length||e[e.length-n.length-1]===".":!1}function oz(e,n){const s=e.length-n.length-2,r=e.lastIndexOf(".",s);return r===-1?e:e.slice(r+1)}function rz(e,n,s){if(s.validHosts!==null){const u=s.validHosts;for(const f of u)if(sz(n,f))return f}let r=0;if(n.startsWith("."))for(;r<n.length&&n[r]===".";)r+=1;return e.length===n.length-r?null:oz(n,e)}function lz(e,n){return e.slice(0,-n.length-1)}const cp=/[\t\n\r]/g;let Ip=!1;function nb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function ib(e,n,s){const r=s-n,u=e.charCodeAt(n)|32;if(r===2)return u===119&&(e.charCodeAt(n+1)|32)===115?1:0;if(r===3){const f=e.charCodeAt(n+1)|32,g=e.charCodeAt(n+2)|32;return u===119&&f===115&&g===115||u===102&&f===116&&g===112?1:0}else if(r===4){const f=e.charCodeAt(n+1)|32,g=e.charCodeAt(n+2)|32,b=e.charCodeAt(n+3)|32;return u===104&&f===116&&g===116&&b===112?1:u===102&&f===105&&g===108&&b===101?2:0}else if(r===5)return u===104&&(e.charCodeAt(n+1)|32)===116&&(e.charCodeAt(n+2)|32)===116&&(e.charCodeAt(n+3)|32)===112&&(e.charCodeAt(n+4)|32)===115?1:0;return 0}function $r(e,n,s=!1){let r=0,u=e.length,f=!1,g=!1;if(Ip=!1,!n){if(e.startsWith("data:"))return null;for(;r<e.length&&e.charCodeAt(r)<=32;)r+=1;for(;u>r+1&&e.charCodeAt(u-1)<=32;)u-=1;if(e.charCodeAt(r)===47&&e.charCodeAt(r+1)===47)r+=2;else{const U=e.indexOf(":/",r);if(U!==-1){const G=ib(e,r,U);if(G===1)for(g=!0,r=U+2;e.charCodeAt(r)===47||e.charCodeAt(r)===92;)r+=1;else if(G===2){g=!0,r=U+1;let te=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&te<2;)r+=1,te+=1;if(te<2)return null}else{for(let te=r;te<U;te+=1){const X=e.charCodeAt(te)|32;if(!(X>=97&&X<=122||X>=48&&X<=57||X===46||X===45||X===43)){const ae=e.charCodeAt(te);return ae===9||ae===10||ae===13?$r(e.replace(cp,""),n,s):null}}if(e.charCodeAt(U+2)===47)r=U+3;else return null}}else if(e.charCodeAt(r)!==91){let G=-1;for(let te=r;te<u;te+=1){const X=e.charCodeAt(te);if(X===9||X===10||X===13)return $r(e.replace(cp,""),n,s);if(X===58){G=te;break}if(X===47||X===92||X===63||X===35)break}if(G!==-1){let te=!1;for(let X=G+1;X<u;X+=1){const ae=e.charCodeAt(X);if(ae===47||ae===92||ae===63||ae===35)break;if(ae===64){te=!0;break}}if(!te){let X=!0,ae=G+1;for(;ae<u;ae+=1){const oe=e.charCodeAt(ae);if(oe===47||oe===92||oe===63||oe===35)break;if(oe<48||oe>57){X=!1;break}}if(ae===G+1&&(X=!1),!X){const oe=ib(e,r,G);if(oe===0){let ge=!1;for(let M=G+1;M<u;M+=1){const J=e.charCodeAt(M);if(J===47||J===92||J===63||J===35)break;if(J===58){ge=!0;break}}if(!ge)return null}else if(g=!0,r=G+1,oe===2){let ge=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&ge<2;)r+=1,ge+=1;if(ge<2)return null}else for(;e.charCodeAt(r)===47||e.charCodeAt(r)===92;)r+=1}}}}}let x=-1,k=-1,S=-1,C=-1,j=!1,E=s,B=r-1,q=-1;if(s&&r<u){const U=e.charCodeAt(r);(!(nb(U)||U===46||U===95)||U===45)&&(E=!1)}for(let U=r;U<u;U+=1){const G=e.charCodeAt(U);if(G<64)if(G===47||G===35||G===63){u=U;break}else G===58?(C===-1&&(C=U),S=U):G===9||G===10||G===13?j=!0:s&&(G===46?((U-B>64||q===46||q===45)&&(E=!1),B=U):(G<48||G>57)&&(G!==45||q===46)&&(E=!1));else if(g&&G===92){u=U;break}else G===64?(x=U,C=-1):G===93?k=U:G>=65&&G<=90?f=!0:s&&!nb(G)&&(E=!1);s&&(q=G)}if(j)return $r(e.replace(cp,""),n,s);if(x!==-1&&x>=r&&x<u&&(r=x+1),e.charCodeAt(r)===91)return k!==-1?e.slice(r+1,k).toLowerCase():null;if(S!==-1&&S>r&&S<u&&C===S&&(u=S),r>=u)return null;s&&E&&x===-1&&S===-1&&k===-1&&e.charCodeAt(u-1)!==46&&u-r<=255&&u-B-1<=63&&q!==45&&(Ip=!0)}for(;u>r+1&&e.charCodeAt(u-1)===46;)u-=1;const b=r!==0||u!==e.length?e.slice(r,u):e;return f?b.toLowerCase():b}function cz(e){if(e.length<7||e.length>15)return!1;let n=0;for(let s=0;s<e.length;s+=1){const r=e.charCodeAt(s);if(r===46)n+=1;else if(r<48||r>57)return!1}return n===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function uz(e){if(e.length<3)return!1;let n=e.startsWith("[")?1:0,s=e.length;if(e[s-1]==="]"&&(s-=1),s-n>39)return!1;let r=!1;for(;n<s;n+=1){const u=e.charCodeAt(n);if(u===58)r=!0;else if(!(u>=48&&u<=57||u>=97&&u<=102||u>=65&&u<=70))return!1}return r}function dz(e){return uz(e)||cz(e)}const mz=["test","localhost","invalid","example","example.com","example.net","example.org","local","onion","alt","home.arpa","ipv4only.arpa","resolver.arpa","service.arpa","6tisch.arpa","eap.arpa"];function pz(e){for(const n of mz)if(e.endsWith(n)&&(e.length===n.length||e.charCodeAt(e.length-n.length-1)===46))return!0;return!1}function sb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function ob(e){if(e.length>255||e.length===0||!sb(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let n=-1,s=-1;const r=e.length;for(let u=0;u<r;u+=1){const f=e.charCodeAt(u);if(f===46){if(u-n>64||s===46||s===45)return!1;n=u}else if(!(sb(f)||f===45||f===95)||f===45&&s===46)return!1;s=f}return r-n-1<=63&&s!==45}function Wx({allowIcannDomains:e=!0,allowPrivateDomains:n=!1,detectIp:s=!0,detectSpecialUse:r=!1,extractHostname:u=!0,mixedInputs:f=!0,validHosts:g=null,validateHostname:b=!0}){return{allowIcannDomains:e,allowPrivateDomains:n,detectIp:s,detectSpecialUse:r,extractHostname:u,mixedInputs:f,validHosts:g,validateHostname:b}}const hz=Wx({});function fz(e){return e===void 0?hz:Wx(e)}function gz(e,n){return n.length===e.length?"":e.slice(0,-n.length-1)}function yz(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function e2(e){e.domain=null,e.domainWithoutSuffix=null,e.hostname=null,e.isIcann=null,e.isIp=null,e.isPrivate=null,e.isSpecialUse=null,e.publicSuffix=null,e.subdomain=null}function t2(e,n,s,r,u){const f=fz(r);if(typeof e!="string")return u;let g=!1;return f.extractHostname?f.mixedInputs?(g=ob(e),u.hostname=$r(e,g,f.validateHostname)):u.hostname=$r(e,!1,f.validateHostname):u.hostname=e,f.detectIp&&u.hostname!==null&&(u.isIp=dz(u.hostname),u.isIp)?u:f.validateHostname&&f.extractHostname&&u.hostname!==null&&!(g&&u.hostname===e)&&!Ip&&!ob(u.hostname)?(u.hostname=null,u):(n===0||u.hostname===null||(n===5&&f.detectSpecialUse&&(u.isSpecialUse=pz(u.hostname)),s(u.hostname,f,u),n===2||u.publicSuffix===null)||(u.domain=rz(u.publicSuffix,u.hostname,f),n===3||u.domain===null)||(u.subdomain=gz(u.hostname,u.domain),n===4)||(u.domainWithoutSuffix=lz(u.domain,u.publicSuffix)),u)}function bz(e,n,s){if(!n.allowPrivateDomains&&e.length>3){const r=e.length-1,u=e.charCodeAt(r),f=e.charCodeAt(r-1),g=e.charCodeAt(r-2),b=e.charCodeAt(r-3);if(u===109&&f===111&&g===99&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="com",!0;if(u===103&&f===114&&g===111&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="org",!0;if(u===117&&f===100&&g===101&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="edu",!0;if(u===118&&f===111&&g===103&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="gov",!0;if(u===116&&f===101&&g===110&&b===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="net",!0;if(u===101&&f===100&&g===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="de",!0}return!1}const ls=new Uint8Array([1,2,1,1,1,1,1,1,1,1,1,1,0,2,2,2,0,2,2,0,2,0,0,1,0,0,2,1,1,1,1,1,1,0,0,0,1,0,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,1,0,2,0,0,0,0,0,0,0,2,0,2,2,0,0,2,2,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,2,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,2,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,1,0,2,2,0,0,0,2,0,1,1,0,2,0,2,2,0,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,0,0,0,0,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,2,2,0,2,2,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,2,0,2,2,2,2,0,0,0,0,2,0,0,0,0,0,0,2,2,0,0,0,2,2,1,1,1,1,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,2,2,0,0,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,2,2,1,2,1,1,1,2,1,1,1,1,1,0,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0]),Wc=new Uint16Array([0,0,0,10,11,18,106,111,117,124,130,136,145,146,147,148,149,150,151,153,154,155,157,159,226,239,241,242,243,258,265,266,269,270,271,274,276,295,296,298,307,312,313,331,332,335,337,338,340,374,375,377,380,381,385,387,391,394,426,429,442,443,451,452,454,464,478,479,480,489,490,527,532,548,568,574,615,616,643,670,671,819,825,828,829,830,835,840,849,871,872,873,874,875,876,877,895,897,898,901,903,904,906,908,923,938,943,944,946,947,948,949,950,952,955,960,961,962,964,965,968,971,972,973,986,988,1e3,1011,1019,1021,1061,1064,1068,1069,1071,1074,1085,1087,1097,1099,1105,1107,1108,1110,1113,1114,1115,1167,1169,1171,1191,1192,1193,1194,1196,1207,1238,1249,1261,1270,1277,1282,1295,1306,1319,1320,1331,1365,1366,1367,1382,1397,1469,1470,1472,1473,1507,1508,1509,1512,1516,1518,1547,1548,1556,1557,1558,1560,1562,1563,1565,1566,1567,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1594,1595,1596,1598,2053,2056,2057,2059,2066,2073,2083,2087,2098,2099,2100,2112,2113,2115,2117,2118,2125,2126,2128,2129,2131,2132,2133,2134,2135,2209,2211,2232,2233,2234,2236,2262,2263,2314,2315,2317,2324,2330,2340,2350,2403,2404,2405,2415,2429,2430,2433,2440,2441,2449,2450,2451,2452,2453,2464,2465,2466,2468,2469,2470,2471,2473,2483,2495,2501,2533,2537,2539,2540,2542,2543,2554,2555,2557,2565,2572,2578,2583,2584,2590,2593,2599,2606,2607,2614,2622,2623,2624,2662,2668,2683,2684,2689,2707,2738,2756,2758,2761,2769,2771,2778,2830,2854,2855,2856,2857,2858,2859,2860,2861,2868,2869,2870,2871,2872,2873,2875,2876,2880,2964,2977,2978,3414,3418,3432,3484,3512,3534,3592,3614,3629,3692,3743,3781,3817,3842,3984,4030,4081,4100,4134,4149,4169,4199,4230,4253,4284,4314,4346,4373,4448,4470,4508,4518,4552,4571,4597,4639,4689,4715,4784,4785,4787,4810,4833,4869,4900,4917,4974,4987,5011,5040,5042,5076,5092,5120,5425,5434,5443,5450,5467,5471,5477,5516,5518,5525,5532,5541,5548,5549,5560,5563,5578,5579,5588,5589,5598,5607,5613,5615,5616,5617,5653,5654,5656,5664,5671,5684,5688,5690,5691,5697,5704,5718,5728,5733,5741,5749,5755,5756,5760,5762,5763,5775,5776,5777,5778,5780,5781,5784,5786,5789,5793,5794,5800,5801,5802,5804,5806,5808,5809,5810,5813,5815,5818,5819,5821,6019,6026,6027,6037,6042,6059,6073,6082,6083,6084,6088,6089,6091,6093,6099,6100,6103,6104,6106,6107,6108,7008,7009,7013,7031,7040,7043,7050,7051,7053,7054,7055,7057,7109,7110,7113,7114,7231,7232,7243,7254,7261,7264,7273,7274,7275,7290,7345,7536,7538,7539,7541,7546,7559,7574,7581,7590,7593,7596,7603,7611,7615,7616,7617,7631,7635,7644,7645,7646,7650,7685,7686,7703,7710,7718,7719,7724,7732,7776,7777,7783,7786,7797,7802,7803,7806,7839,7840,7846,7853,7854,7863,7872,7887,7891,7943,7944,7949,7951,7954,7956,7957,7958,7967,7981,7989,8003,8015,8016,8018,8020,8042,8053,8059,8060,8072,8084,8171,8183,8185,8194,8197,8203,8228,8231,8232,8233,8235,8238,8241,8252,8254,8256,8284,8358,8365,8369,8370,8379,8401,8402,8407,8408,8487,8489,8491,8500,8504,8510,8516,8522,8532,8537,8538,8556,8567,8572,8577,8587,8593,8597,8603,8609,10217,10218,10219,10226,10228]),eu=new Uint8Array([3,3,3,3,3,3,3,3,5,8,8,2,2,3,3,3,3,3,8,5,5,5,5,5,3,3,5,5,9,12,19,8,19,8,11,9,9,8,7,7,6,8,9,16,10,7,7,11,8,6,6,9,7,11,7,14,4,4,4,4,4,4,10,7,6,6,6,6,10,10,6,10,10,22,11,9,10,10,10,9,10,8,7,7,7,8,21,13,11,11,9,10,9,13,10,8,8,9,12,9,7,10,7,7,13,7,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,8,6,3,3,3,3,3,3,2,5,3,3,3,7,2,2,2,2,2,2,3,3,3,1,1,7,8,5,2,2,7,2,2,1,4,1,11,9,9,5,5,8,5,5,5,5,5,5,5,3,3,3,3,3,5,11,9,9,13,7,14,7,6,6,6,7,6,6,6,6,6,10,7,11,9,4,4,4,4,4,4,6,6,6,6,6,8,7,10,9,9,9,8,9,8,10,6,9,9,8,10,10,7,8,1,9,10,12,12,12,10,9,9,10,10,9,9,1,1,5,3,3,3,3,3,3,3,3,3,3,3,3,6,6,6,4,3,3,3,7,4,4,4,3,3,6,7,3,4,1,2,2,2,6,1,2,2,2,2,2,12,5,3,8,9,13,4,4,13,9,9,11,7,3,12,9,2,2,2,3,3,3,3,3,8,2,2,3,3,3,3,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,4,4,3,7,10,15,7,15,15,20,15,9,10,10,12,14,14,14,12,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,9,7,8,6,8,8,6,8,13,8,8,6,13,8,11,13,8,6,13,8,6,9,10,10,12,14,14,14,12,12,12,12,14,14,10,10,10,10,9,9,9,10,14,14,11,13,13,9,9,9,9,9,9,2,6,9,2,2,3,3,3,3,3,3,3,3,3,4,4,4,2,3,3,3,3,3,3,7,7,2,3,2,2,5,3,3,3,3,3,3,4,2,2,2,2,2,2,3,3,3,3,3,3,3,4,5,7,2,2,12,8,10,8,10,7,18,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,2,2,3,3,3,5,5,3,8,8,6,8,6,6,4,6,7,7,7,10,11,2,5,5,3,3,3,3,3,3,5,5,6,11,10,7,7,7,4,4,4,2,3,3,3,3,3,2,7,5,5,3,3,3,3,3,3,3,3,7,7,7,11,7,6,9,6,6,8,10,8,6,8,13,4,4,4,4,4,10,8,11,8,8,8,10,10,7,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,7,10,13,7,8,7,11,8,8,6,9,8,8,6,6,6,8,8,6,6,6,6,6,9,7,6,4,4,4,4,4,4,4,6,6,6,9,7,8,10,8,8,2,3,3,3,3,3,2,8,9,9,2,2,2,3,3,3,2,3,3,3,9,2,2,3,3,3,3,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,5,5,3,5,4,2,3,2,4,3,9,2,2,2,2,2,5,5,3,8,8,13,6,10,9,4,7,9,11,2,3,7,3,3,4,1,3,4,2,9,3,3,12,5,3,7,10,10,7,4,4,6,14,7,9,7,13,2,2,2,2,2,2,3,3,3,3,3,8,15,4,4,2,3,3,3,7,4,9,9,2,3,3,3,5,3,2,2,7,2,7,6,6,7,2,4,2,2,2,2,2,2,8,8,8,9,5,2,3,3,3,3,3,3,10,7,4,4,4,4,3,4,2,3,3,3,3,3,10,7,4,4,4,4,2,3,3,3,3,10,7,4,4,4,4,3,9,6,6,6,9,13,9,2,2,2,8,7,9,5,3,3,3,5,5,12,9,10,7,8,7,6,8,6,11,12,7,9,10,4,4,7,8,11,6,7,9,8,7,10,8,9,15,7,8,5,4,7,2,3,3,3,2,14,10,2,14,10,2,14,3,9,13,13,10,14,16,17,11,2,14,2,14,3,9,13,10,14,16,17,11,14,10,14,2,7,3,10,7,14,10,2,14,10,9,9,17,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,10,10,10,12,9,4,10,11,8,8,8,7,9,5,3,3,3,3,3,3,3,3,5,8,4,4,4,4,4,4,6,16,3,3,14,3,14,2,14,9,13,10,10,14,16,17,11,6,9,10,10,12,14,14,14,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,9,9,9,9,9,9,2,14,9,13,10,10,14,16,17,11,6,2,14,9,17,13,10,10,14,16,17,11,6,2,14,9,13,10,14,16,17,11,2,14,9,13,10,16,11,2,14,10,19,7,2,14,9,13,10,19,10,7,14,16,17,11,6,2,14,9,13,10,19,7,14,16,17,11,2,14,9,13,17,13,10,10,14,16,17,11,6,3,2,14,9,13,10,10,14,16,17,11,6,9,10,12,14,14,14,12,12,12,12,12,14,14,14,10,10,10,14,9,9,9,9,14,14,14,13,13,14,9,9,9,9,9,9,4,11,2,14,9,13,17,13,10,19,10,7,14,16,17,11,6,2,14,9,13,17,13,10,19,10,7,14,16,17,11,6,2,9,10,10,7,17,3,3,12,12,16,15,15,12,14,14,14,20,20,13,12,12,12,12,12,12,20,25,14,14,12,12,10,10,10,10,9,9,9,25,4,9,17,10,7,14,16,21,13,13,14,20,14,13,17,24,9,12,13,25,13,21,20,17,9,9,9,9,9,9,12,17,4,4,9,9,9,10,10,12,14,14,14,12,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,9,1,8,7,11,11,1,3,3,3,4,8,9,10,14,14,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,7,4,4,4,4,4,4,4,4,4,4,9,12,6,14,4,12,7,2,2,1,2,7,6,4,4,4,6,8,8,7,4,5,6,3,3,3,3,4,16,8,3,5,4,3,3,3,5,2,2,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,12,7,7,13,9,10,12,8,9,7,8,5,12,10,13,14,5,5,5,13,5,5,5,3,3,3,5,16,5,5,5,5,5,7,12,14,8,12,8,10,12,9,11,7,9,7,10,7,13,9,7,12,8,17,7,7,16,10,13,13,8,10,10,14,17,7,16,16,15,8,10,10,12,17,7,17,14,7,10,17,8,7,7,7,8,15,15,7,14,10,10,10,11,11,7,7,13,8,10,7,16,7,8,7,14,17,12,10,11,21,8,9,7,13,9,8,13,6,12,7,6,13,10,10,10,8,18,9,17,13,10,12,6,13,6,11,8,13,10,13,18,13,11,13,8,16,7,10,8,16,12,10,8,8,6,14,11,8,15,8,8,7,7,12,7,8,9,14,15,8,9,10,9,15,7,8,8,12,13,9,10,15,15,13,7,10,10,20,7,6,9,6,6,14,11,14,11,12,9,10,16,16,12,7,11,28,8,11,10,7,21,8,7,9,4,4,4,17,7,8,6,9,6,6,13,6,6,6,6,18,20,14,8,11,12,9,10,13,15,19,8,9,12,7,10,16,12,9,9,9,14,12,11,9,12,11,18,9,9,9,10,7,7,16,8,9,7,13,12,10,18,7,8,11,7,7,8,8,13,7,7,7,11,15,13,11,7,8,15,11,7,8,18,14,13,18,15,10,12,12,9,7,11,11,8,7,10,8,14,12,10,18,7,10,9,7,8,13,10,14,9,10,8,8,23,7,7,11,12,12,17,7,7,11,11,17,16,16,7,8,11,14,14,8,10,7,7,16,16,13,9,11,9,15,15,11,11,7,7,14,7,9,7,7,16,10,13,10,11,14,7,11,10,11,7,11,10,11,15,11,15,10,12,17,10,14,13,11,11,12,13,10,7,13,10,16,12,21,9,10,10,7,11,14,17,7,7,8,11,12,8,15,14,14,8,17,12,10,10,7,9,11,7,10,7,11,18,7,11,7,12,11,8,8,14,12,7,8,15,3,7,7,5,2,9,2,2,2,2,2,2,2,3,3,3,3,3,3,3,2,5,3,3,3,3,3,3,4,4,3,3,3,3,3,3,5,11,6,4,7,10,7,7,11,1,10,2,2,3,3,3,3,3,3,3,3,5,7,3,5,6,3,3,5,2,2,5,3,4,13,11,3,3,6,3,5,14,2,2,3,8,2,2,12,5,18,5,3,3,3,16,5,5,5,10,7,13,12,13,9,12,14,19,9,9,21,9,9,10,6,9,6,15,10,6,12,8,6,10,15,4,4,6,6,9,9,12,16,14,23,7,7,7,14,9,7,7,11,14,10,7,10,10,10,12,6,11,10,13,11,15,11,7,12,10,3,7,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,4,3,7,2,5,5,3,3,5,5,5,5,7,6,6,6,4,4,4,4,4,4,6,6,6,6,6,7,10,2,2,2,5,5,5,5,3,3,3,3,3,5,5,10,9,11,8,7,12,8,9,7,6,13,11,6,13,7,9,9,4,4,4,4,4,4,6,10,7,8,13,8,8,9,14,8,10,7,7,7,9,6,9,7,2,12,5,3,3,13,4,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,4,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,8,4,4,4,4,4,4,4,4,4,4,4,4,9,3,3,3,3,3,3,3,3,3,3,4,2,2,2,5,3,3,3,3,3,3,3,3,4,4,1,7,6,4,12,3,3,3,3,3,8,7,3,3,3,3,3,3,4,4,11,14,2,8,3,5,5,8,10,8,6,4,7,17,7,4,5,2,6,3,5,2,4,4,2,12,5,5,3,15,13,10,8,11,2,2,3,3,3,3,3,3,3,3,4,4,5,3,3,3,3,4,18,2,12,5,3,3,3,3,3,5,16,8,8,9,6,6,4,4,4,4,31,6,6,10,11,21,10,9,7,10,7,7,2,4,4,4,4,6,5,3,3,4,3,3,3,3,3,3,3,3,3,6,6,6,2,2,2,5,3,3,3,7,7,4,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,8,2,3,3,3,3,3,5,9,11,3,3,3,3,4,4,3,3,3,3,3,5,10,9,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,11,10,10,10,10,10,11,10,11,10,11,10,9,9,11,3,3,3,3,3,3,5,3,7,8,8,7,6,6,11,4,4,4,7,8,9,9,2,3,7,4,4,2,5,5,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,2,2,5,5,5,5,5,3,3,5,5,5,7,7,6,6,6,4,4,4,4,4,4,4,4,4,4,6,6,8,8,1,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4,6,9,12,3,7,10,7,2,2,3,3,3,3,3,4,3,3,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,8,8,6,6,8,6,7,4,4,4,4,4,4,6,7,5,5,20,19,8,10,9,7,10,6,8,11,6,6,6,6,13,12,8,6,7,14,11,9,2,5,3,3,6,2,3,2,2,2,2,2,2,2,5,4,3,7,6,4,7,4,3,6,4,7,2,7,7,7,5,5,5,5,3,3,3,3,3,3,3,3,3,3,5,9,10,10,8,11,7,8,20,7,8,9,8,12,6,6,6,8,9,8,12,6,6,8,13,10,12,6,6,7,7,8,9,6,4,4,4,4,4,4,4,10,6,6,6,7,14,11,10,7,8,10,8,11,14,11,11,9,7,9,8,11,9,17,10,9,2,2,2,9,3,3,3,3,15,14,9,5,5,2,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,15,12,22,19,17,18,18,19,21,7,16,16,5,5,5,5,5,5,5,5,5,5,5,7,5,5,5,5,5,5,5,5,5,5,5,9,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,7,16,11,11,7,7,7,7,17,7,8,12,15,9,19,7,19,8,16,21,11,12,19,14,22,7,7,7,7,7,7,7,7,7,7,7,16,16,19,24,12,7,14,7,12,7,8,10,10,13,7,12,12,7,7,10,18,15,12,16,7,14,12,17,10,16,17,12,17,25,7,7,7,13,6,9,6,9,18,6,6,11,20,10,6,6,6,6,6,6,6,17,6,6,6,15,6,6,6,6,6,8,14,11,12,15,13,19,17,21,7,18,8,13,13,8,12,8,6,6,13,6,15,15,16,6,6,16,6,6,6,14,6,18,6,6,6,17,18,9,13,15,8,19,8,15,15,18,14,16,4,4,4,4,4,4,4,4,4,4,4,4,6,11,10,11,6,21,23,12,17,12,11,14,13,22,15,15,11,12,14,12,7,12,8,14,12,18,10,8,16,19,17,12,14,15,8,9,19,17,12,13,13,15,18,13,23,24,23,21,17,24,8,21,8,14,14,16,14,8,8,15,20,8,19,21,9,8,13,12,13,15,11,8,11,9,9,8,11,8,21,14,21,15,15,13,7,19,7,7,7,7,7,7,16,12,17,18,7,7,11,11,7,9,9,2,2,3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,4,5,5,5,5,5,5,5,5,3,3,10,10,7,9,7,7,7,6,8,6,6,6,6,6,6,6,7,6,8,6,6,9,7,7,7,4,4,4,4,4,4,4,4,8,9,8,7,8,7,8,10,7,5,5,5,5,5,5,3,9,7,7,8,6,6,6,6,6,6,6,6,9,6,6,9,11,13,7,8,9,9,5,5,5,7,8,6,6,6,6,6,6,6,7,8,9,7,10,9,10,7,8,5,5,5,5,5,5,7,7,9,8,7,7,6,6,6,6,6,6,10,6,6,6,6,6,6,6,6,6,6,6,9,10,4,4,4,4,8,7,7,10,10,9,8,8,15,9,8,8,8,8,8,9,10,9,10,7,8,13,5,5,5,5,5,3,3,7,7,8,6,6,6,4,4,11,9,7,8,9,10,7,5,5,5,5,5,3,3,7,6,6,13,7,9,8,7,5,5,5,5,5,5,5,5,3,3,3,3,7,8,7,8,13,6,6,6,6,6,6,6,6,6,6,6,6,6,6,8,8,6,6,6,6,7,6,7,6,6,9,7,4,4,4,4,4,4,4,7,8,7,8,9,8,8,8,7,10,7,8,5,5,5,5,5,5,5,5,3,7,7,7,7,9,7,10,9,6,6,6,6,6,8,8,6,6,6,7,6,6,6,9,9,4,4,13,7,10,9,9,12,7,8,8,10,8,8,8,8,8,8,5,5,5,5,3,7,7,11,7,9,8,8,6,6,10,6,8,8,8,6,7,6,6,12,4,4,4,4,4,4,4,4,4,9,8,8,16,8,9,8,7,5,5,5,5,5,3,3,7,7,7,10,15,8,9,8,9,9,6,6,6,6,6,6,7,4,8,7,8,8,7,8,11,8,5,5,5,5,5,3,7,7,6,11,16,7,6,4,4,4,4,9,9,8,8,8,13,12,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,7,8,8,9,13,7,7,7,9,8,8,9,12,7,12,7,12,8,7,10,12,9,9,6,6,8,8,6,6,6,6,6,6,6,9,8,9,11,8,6,6,6,6,6,12,7,6,6,6,9,7,7,6,6,6,6,6,11,9,6,6,6,6,6,7,9,4,4,4,4,4,4,4,4,9,9,9,9,7,7,7,7,7,11,7,7,8,8,8,8,8,8,9,8,9,9,7,7,11,11,7,12,8,8,8,8,8,7,8,8,8,8,8,13,12,8,8,8,8,7,7,7,9,5,5,5,5,5,5,5,3,3,7,7,11,7,8,8,8,6,6,6,6,6,6,6,6,6,6,6,10,11,6,7,9,4,4,4,4,4,4,9,9,8,9,8,8,8,7,7,5,5,5,5,5,5,5,5,5,5,3,3,11,7,7,7,9,6,6,11,8,10,6,6,6,12,8,8,7,6,6,8,7,4,4,4,4,4,4,4,4,9,10,9,9,8,10,9,11,8,5,5,5,7,6,6,8,7,4,4,4,4,8,7,7,8,7,8,8,5,5,5,5,7,7,8,8,8,6,6,6,6,6,10,8,9,13,6,7,6,6,8,7,8,4,4,4,4,11,8,8,8,10,5,5,8,7,8,13,8,7,6,8,6,9,7,8,7,5,5,5,5,5,5,3,3,7,8,9,6,4,8,10,10,8,12,9,13,2,7,5,5,5,5,5,7,7,10,6,6,6,6,6,6,6,8,4,4,9,8,8,8,14,8,8,8,9,8,5,5,5,5,5,3,3,9,6,6,6,6,10,12,6,6,6,6,6,6,6,4,4,4,4,11,8,7,8,8,8,5,5,3,3,3,3,7,7,6,8,6,8,11,7,6,6,6,7,4,8,11,9,10,5,5,5,3,3,3,7,7,8,9,8,15,9,6,6,6,6,6,6,11,11,4,4,4,4,4,7,9,9,10,8,7,5,5,5,5,5,5,3,3,8,6,6,6,6,6,6,6,6,6,9,7,4,4,4,4,4,9,9,8,8,10,13,5,5,5,3,17,7,7,7,7,7,8,6,8,13,6,6,6,6,6,6,6,6,4,4,4,9,10,8,8,8,5,5,5,5,3,7,7,7,8,8,6,6,6,8,8,8,9,10,8,4,8,10,9,8,8,8,9,13,10,5,5,5,5,5,5,5,5,5,5,3,3,7,8,9,9,7,7,7,10,9,9,8,9,8,8,8,6,6,6,6,6,6,6,6,6,6,6,6,6,8,12,6,6,6,6,6,6,6,6,6,12,4,4,4,4,4,4,4,4,4,4,4,11,8,8,9,9,10,8,9,7,7,5,5,5,5,5,5,3,7,8,7,6,6,8,6,6,10,4,7,8,9,12,8,7,7,5,5,5,5,5,5,3,3,7,14,7,9,8,8,6,6,8,12,12,6,6,7,7,10,4,4,4,4,4,9,9,14,9,13,8,7,5,5,5,6,6,6,7,4,8,7,5,5,5,5,5,5,5,5,3,3,7,7,7,8,6,6,6,6,6,6,12,6,6,6,6,4,4,9,9,8,8,11,7,7,7,5,5,5,3,9,8,6,6,7,4,4,4,4,4,4,8,8,11,5,5,5,7,7,7,9,6,6,6,6,6,6,9,8,4,4,4,4,7,12,9,8,8,8,7,10,10,5,5,5,5,5,5,5,3,11,14,8,7,8,8,6,6,6,6,6,8,7,6,6,6,7,6,8,9,4,4,4,7,8,9,7,9,7,7,9,8,5,5,5,5,5,5,5,5,5,11,3,9,7,7,12,14,8,6,6,12,11,8,6,6,6,6,6,6,6,6,6,15,7,4,4,4,16,9,9,9,8,9,9,9,9,9,8,8,8,13,11,8,5,5,5,5,3,7,6,6,8,8,8,6,6,7,10,7,4,4,4,4,9,7,8,7,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,7,7,7,9,6,6,6,6,6,8,8,7,7,9,6,6,6,7,6,6,6,6,6,15,4,4,4,4,4,8,8,7,8,12,9,8,8,8,8,8,9,8,8,10,8,8,8,8,16,9,10,2,5,5,5,5,5,5,5,9,7,6,8,9,4,4,4,4,4,7,8,8,8,9,8,11,10,5,5,5,5,3,7,8,6,6,6,6,6,8,6,6,6,6,4,12,10,12,7,7,7,7,7,7,7,5,5,5,5,3,3,7,7,10,8,9,7,6,10,7,6,6,4,4,8,9,7,9,9,9,9,8,8,8,8,10,5,5,5,5,5,5,8,7,6,6,6,10,6,7,10,7,4,4,4,4,4,4,4,12,9,10,7,7,10,8,10,5,12,9,6,6,6,6,6,7,6,4,4,4,10,9,9,8,7,7,5,5,5,5,5,5,3,3,13,7,7,9,7,7,7,8,9,9,7,8,6,6,6,6,6,6,6,6,6,6,6,6,6,7,13,9,15,15,4,4,4,4,4,10,10,9,8,9,8,8,9,7,8,7,8,5,5,7,6,6,6,4,4,4,7,8,11,8,5,5,5,5,5,5,5,7,6,6,6,6,6,6,9,11,10,7,4,4,4,9,8,8,5,5,5,5,5,9,9,6,6,6,6,6,6,6,9,9,4,4,4,4,8,8,8,9,9,8,8,8,13,2,4,2,7,5,5,5,5,5,5,9,9,6,6,6,6,10,8,8,8,6,6,6,4,4,9,8,10,8,9,8,8,8,9,8,8,5,3,3,3,11,6,6,6,7,6,6,6,4,4,9,8,5,5,5,5,5,3,11,8,6,6,6,6,6,9,7,4,4,14,10,9,8,12,8,8,8,11,15,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,11,11,10,10,7,7,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,5,5,5,3,3,3,7,11,7,7,11,11,7,8,9,10,7,7,9,9,9,9,7,7,10,8,13,8,8,8,8,11,10,6,6,8,10,11,14,14,6,6,6,6,6,6,9,11,7,7,6,8,12,11,11,6,6,10,6,6,6,6,6,10,7,7,6,6,11,6,6,6,11,8,9,7,6,10,11,9,10,11,7,11,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,6,6,8,9,10,9,6,6,6,10,6,6,6,6,11,10,11,10,9,8,7,7,7,7,11,14,8,10,9,9,8,8,7,11,8,8,8,11,11,10,10,9,10,8,11,10,8,11,9,12,8,10,8,11,8,9,9,11,11,10,11,13,8,7,8,8,9,7,8,8,8,8,7,8,2,2,2,2,2,2,2,4,4,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,4,2,3,3,3,3,3,3,3,3,8,6,4,4,4,11,7,11,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,5,3,3,3,3,8,7,7,8,8,4,8,7,7,7,9,7,8,9,8,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,6,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,4,5,5,3,8,8,6,9,4,4,10,7,3,3,3,2,5,3,3,3,3,3,3,3,3,3,3,3,3,4,3,2,2,2,3,3,3,3,3,4,10,2,3,3,3,3,3,3,3,4,2,3,3,3,3,3,3,3,3,2,2,3,3,3,5,2,4,2,6,2,2,9,5,5,3,3,3,3,3,3,3,5,5,5,9,8,7,6,6,11,4,4,4,4,4,4,4,4,6,6,7,7,11,8,8,6,5,11,2,3,3,3,3,3,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,3,6,4,4,4,4,3,3,3,3,5,7,2,3,3,3,3,3,8,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,6,4,4,4,4,2,2,3,3,3,3,3,3,3,4,3,3,3,3,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,3,2,3,3,3,3,3,6,3,3,8,10,3,4,4,1,1,1,1,1,1,1,8,9,10,7,7,1,1,3,8,7,7,8,8,8,1,6,1,1,6,3,3,4,7,3,5,5,4,4,4,4,4,2,7,7,8,12,3,4,5,1,3,4,4,10,4,3,3,3,8,7,7,2,2,2,2,2,2,2,2,2,12,9,20,7,5,5,5,9,13,5,5,5,5,5,3,3,3,16,5,5,5,13,7,8,8,11,8,7,9,7,11,12,9,9,8,8,11,10,14,7,12,10,11,13,7,9,11,17,17,14,13,7,8,7,10,10,7,16,13,7,8,17,12,9,8,6,7,10,6,6,12,6,8,10,8,8,8,6,8,6,14,6,6,6,13,6,10,6,6,7,14,8,6,6,10,11,10,9,9,7,7,6,6,6,9,9,7,9,10,9,13,12,4,4,4,4,4,4,4,4,4,6,6,6,8,8,6,8,9,10,9,7,10,10,8,7,8,7,10,12,9,8,15,8,7,8,8,7,7,15,13,7,10,9,14,18,16,7,24,7,8,10,11,16,8,14,7,9,9,9,11,13,19,14,15,14,11,7,13,9,10,7,13,9,10,11,12,8,9,2,3,5,8,7,4,4,10,5,3,3,3,3,3,5,4,4,4,2,2,2,2,2,1,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,2,2,2,3,3,3,3,3,3,3,3,3,3,4,2,12,5,3,8,10,15,6,7,2,3,2,5,5,12,2,5,5,5,5,2,2,5,5,12,9,5,2,2,9,5,5,12,12,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,12,5,8,8,9,5,5,5,8,19,7,16,15,14,9,9,9,9,7,11,11,11,7,14,10,10,5,5,5,5,5,5,5,5,5,15,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,14,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,15,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,12,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,9,12,9,9,12,12,12,15,7,11,7,14,11,18,13,8,18,15,18,12,14,12,8,8,8,8,9,9,9,12,7,10,10,8,8,12,12,12,7,12,12,9,7,7,7,7,7,8,15,12,9,10,10,7,10,10,13,11,10,9,22,11,9,8,8,8,8,8,13,18,13,9,15,19,9,7,7,10,7,7,7,11,8,13,17,7,7,10,10,10,7,20,16,7,7,7,7,7,7,11,21,12,12,13,11,14,16,8,8,13,11,7,7,13,7,7,14,15,15,6,6,6,6,6,6,6,6,6,6,13,10,18,6,6,6,6,6,6,6,6,6,11,8,8,12,12,11,11,8,12,9,9,9,13,13,9,9,9,9,9,9,6,10,12,6,6,6,6,17,11,7,7,7,7,14,14,12,6,7,7,6,6,15,10,13,10,6,8,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,13,9,9,15,13,6,12,12,6,19,11,10,7,7,16,8,19,17,9,9,9,9,9,6,6,6,10,8,16,8,6,6,9,6,6,6,6,6,6,6,6,8,8,8,6,7,6,6,6,6,6,6,6,6,6,6,6,14,6,6,6,6,20,6,9,6,14,9,9,9,6,9,8,8,12,9,8,8,8,8,7,8,12,7,8,8,8,6,8,6,6,6,6,6,6,6,9,8,8,6,6,13,9,12,13,12,14,13,12,11,11,6,8,8,8,6,13,12,11,11,12,6,11,12,11,13,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,15,6,6,6,6,6,6,6,13,6,6,6,6,6,6,6,6,6,6,6,6,6,8,8,8,8,6,18,6,12,13,13,13,9,10,15,9,12,6,6,6,6,6,6,6,6,9,15,10,9,10,13,9,19,8,18,17,10,10,8,8,6,6,6,6,6,6,10,14,8,16,16,9,8,15,8,8,10,12,14,7,7,8,8,7,7,7,7,8,13,13,11,9,9,9,12,10,17,8,11,9,7,7,14,8,14,14,7,7,7,7,7,7,14,7,7,7,7,7,10,10,8,14,7,7,7,7,8,8,8,8,8,17,9,7,15,7,8,12,7,9,14,7,7,7,9,13,8,14,7,16,18,13,15,14,12,13,10,15,9,7,7,7,10,13,15,15,9,9,9,9,19,11,7,11,11,13,8,8,8,8,7,12,19,17,9,9,13,7,7,7,9,7,7,7,12,13,15,10,8,8,14,15,12,13,13,8,12,14,7,11,7,14,15,13,12,8,8,8,8,11,13,15,15,8,13,12,8,8,8,13,10,16,14,11,8,8,12,12,9,15,15,12,12,13,8,8,9,12,13,9,8,8,8,8,8,8,8,8,8,8,8,11,12,11,7,14,7,13,13,13,12,18,16,7,12,11,10,10,15,9,9,9,21,7,7,7,11,16,8,8,11,11,7,7,7,7,7,19,7,7,7,7,7,7,7,7,7,12,8,9,12,14,11,9,9,9,22,12,3,8,8,15,4,2,2,5,5,3,3,3,3,3,3,6,6,4,4,4,12,7,10,2,3,3,3,3,3,3,3,6,7,3,7,5,14,4,4,7,8,10,4,1,3,3,6,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,4,2,2,5,3,4,2,2,2,2,2,2,11,5,5,5,11,5,5,3,5,5,5,5,11,14,13,9,11,9,12,8,11,11,8,11,16,9,9,7,10,9,12,8,15,6,7,6,6,13,10,8,11,8,6,6,6,12,16,6,11,7,8,9,18,6,6,9,4,4,6,13,6,6,6,6,8,8,9,16,7,7,14,7,8,8,8,7,7,7,7,7,7,15,13,7,10,7,7,10,12,16,15,7,9,9,14,11,11,10,9,10,8,12,7,8,7,7,10,12,7,12,8,7,2,3,3,3,3,3,3,3,3,3,3,5,3,3,5,5,5,10,4,8,7,10,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,7,4,5,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,9,8,2,2,2,8,12,7,7,5,5,5,5,5,5,5,5,5,5,5,5,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,7,11,9,8,8,8,7,8,9,7,7,9,7,7,7,10,7,7,10,9,10,6,6,6,6,6,6,15,7,8,9,9,8,6,6,10,9,6,8,13,9,7,6,6,6,6,6,6,12,6,6,7,6,7,6,6,6,10,10,7,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,14,6,6,7,7,9,6,6,6,6,9,9,8,9,10,9,8,9,12,7,7,7,8,7,10,12,11,9,10,7,7,7,9,10,10,8,12,9,7,7,9,8,8,8,10,7,7,8,9,9,7,7,7,8,2,4,6,3,4,2,3,3,3,3,2,3,3,3,3,3,3,3,3,4,4,4,4,5,5,3,3,3,3,3,3,3,3,5,8,6,4,7,3,3,3,3,3,3,3,12,3,3,3,3,3,3,4,4,2,3,5,3,4,7,3,3,3,3,3,3,4,3,3,3,3,3,3,3,4,3,3,6,4,3,4,2,2,2,5,3,3,3,3,3,5,4,4,4,4,7,6,8,9,2,2,2,2,3,3,3,5,7,2,3,3,8,7,7,2,2,8,5,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,8,8,7,7,6,10,6,9,7,11,4,6,8,8,7,8,4,5,5,5,3,3,11,8,9,6,6,8,7,4,4,7,8,7,2,2,3,3,3,3,4,3,3,3,3,3,3,3,3,7,2,2,5,3,3,2,3,3,3,3,3,3,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,12,5,5,3,3,3,5,10,12,6,15,4,6,6,7,14,9,3,3,3,3,3,8,2,2,3,5,3,3,3,3,3,3,8,8,8,7,5,8,4,6,11,2,2,6,7,2,9,8,5,5,3,3,5,5,7,7,6,6,10,6,6,8,9,7,4,4,4,4,7,6,6,7,7,10,9,8,11,8,3,3,3,3,3,4,4,2,3,3,3,3,3,7,6,2,5,6,7,6,4,8,9,11,2,2,3,3,3,3,3,3,3,2,2,5,3,3,3,3,3,9,9,6,4,8,7,7,5,9,8,6,8,7,8,5,5,5,5,5,3,3,3,16,8,7,7,7,8,7,7,7,7,9,6,9,6,10,7,7,7,6,10,8,9,11,11,8,4,4,10,8,8,6,9,6,11,8,8,8,15,7,8,9,5,3,3,3,3,3,5,11,2,2,3,8,9,10,3,2,2,2,2,2,2,3,6,4,2,2,3,3,3,3,3,3,3,3,3,3,4,4,2,3,3,3,3,3,3,3,11,5,3,3,3,3,3,3,3,3,6,7,4,4,2,3,3,3,3,3,3,3,3,12,7,4,12,4,6,5,4,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,2,3,3,3,3,3,3,3,3,4,4,11,10,6,4,6,10,8,3,3,3,3,3,3,3,3,5,4,4,4,2,2,2,2,2,2,2,2,5,3,4,4,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,5,5,5,5,5,5,3,3,3,3,3,3,3,3,7,8,8,7,13,12,10,10,8,8,7,7,9,12,11,6,6,8,8,9,7,7,7,10,15,10,4,4,4,4,4,11,8,8,9,7,9,14,14,12,2,2,2,2,2,2,2,3,3,3,3,3,2,2,12,5,5,5,8,11,10,7,9,3,8,7,3,15,13,11,4,4,2,2,2,19,7,5,5,3,3,3,3,3,3,3,5,22,18,6,14,17,4,4,19,16,18,2,3,3,2,3,2,3,3,6,4,2,3,3,2,5,3,3,3,3,3,3,3,9,9,2,3,2,2,2,3,3,3,5,7,14,7,7,12,9,13,6,11,6,10,9,7,7,8,12,12,8,8,8,10,7,7,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,5,8,10,7,8,11,8,12,9,4,7,7,9,13,2,3,3,3,3,3,3,2,3,3,3,1,2,2,3,3,3,3,3,3,5,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,8,4,4,4,3,2,3,3,3,3,5,2,2,2,2,5,5,5,5,3,3,3,3,3,3,3,3,3,7,7,7,7,7,8,8,8,8,8,12,9,8,8,9,8,6,17,6,6,6,8,8,6,6,6,6,6,6,6,6,6,6,6,7,4,4,8,8,9,9,9,7,7,7,7,7,7,7,9,9,9,7,8,8,8,10,7,13,10,8,9,3,3,5,13,3,3,3,3,3,7,7,6,6,10,13,11,11,8,8,9,8,9,9,10,10,10,11,10,10,13,13,16,15,11,12,9,9,10,9,11,10,9,9,14,7,8,3,10,7,7,3,2,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,6,7,2,2,3,3,3,3,3,3,3,3,4,11,6,7,4,6,2,2,3,3,3,1,3,3,3,3,3,3,6,4,4,2,2,2,3,3,3,3,4,4,6,6,6,6,5,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,11,6,10,9,12,7,7,11,14,9,7,12,3,3,7,12,11,12,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,5,5,5,5,5,5,5,5,11,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,3,3,3,5,5,5,5,5,5,5,5,5,5,5,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,5,5,5,5,5,5,5,5,5,5,5,5,5,3,10,3,3,3,11,3,5,9,11,8,12,14,9,7,8,7,7,11,11,7,7,10,9,8,10,9,7,7,7,7,7,7,8,8,7,11,8,8,8,7,7,10,8,7,13,12,7,17,10,8,8,11,7,11,11,14,7,11,7,8,6,9,20,8,7,9,16,7,10,6,11,10,8,9,7,16,11,11,9,8,9,8,8,8,11,8,15,8,8,9,7,8,8,11,10,7,5,7,10,10,15,7,7,7,8,7,8,8,10,11,10,10,10,11,11,7,8,6,8,8,8,10,6,8,6,6,7,8,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,16,6,15,6,7,11,11,7,9,10,11,13,10,6,16,8,10,12,11,6,6,6,6,6,6,6,10,6,10,7,7,7,7,11,7,11,6,6,6,6,6,6,17,7,7,6,6,12,22,6,6,6,6,6,8,6,6,6,6,7,6,6,5,6,6,8,11,6,9,14,11,9,11,7,7,8,6,6,6,8,10,9,6,6,6,6,9,7,6,6,6,6,6,15,6,4,4,4,6,4,17,8,11,6,6,9,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,6,6,6,6,10,6,10,6,6,6,6,12,8,6,6,6,6,6,6,6,6,6,9,6,6,6,6,18,6,6,6,8,9,10,7,8,9,10,11,7,13,6,8,8,6,6,14,7,7,7,7,10,7,14,9,6,6,9,15,9,7,14,6,11,14,13,7,12,8,7,7,7,7,7,12,7,10,9,16,6,8,6,5,17,6,8,10,4,6,4,10,15,17,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,4,4,11,7,4,4,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,19,17,6,10,11,6,6,6,6,18,6,6,11,4,4,4,5,6,6,6,9,5,6,4,6,6,4,6,6,6,6,10,6,6,4,6,6,10,6,10,6,6,6,6,11,6,6,10,6,6,8,6,6,6,8,6,11,4,11,9,10,9,11,4,8,4,11,12,7,9,8,6,7,7,8,12,12,11,13,10,11,7,7,7,9,7,11,10,7,7,7,16,11,10,11,17,9,9,8,8,7,7,7,9,7,7,7,14,7,13,9,11,10,14,10,10,12,11,10,7,10,5,14,8,8,8,9,7,8,7,7,9,8,7,8,7,7,7,7,7,7,7,11,8,10,8,7,8,14,11,8,9,9,9,8,24,10,10,12,7,7,15,11,8,8,12,11,8,9,9,7,8,9,10,11,10,11,7,12,7,7,11,9,8,14,13,12,8,11,10,8,8,7,7,14,9,10,8,9,11,7,14,8,8,13,8,8,12,7,10,14,14,11,9,10,9,9,7,7,11,11,13,9,13,5,5,5,7,9,5,11,12,14,8,7,7,11,10,9,7,8,8,7,10,11,11,5,5,7,5,5,5,7,7,15,7,7,8,7,15,12,12,10,7,8,7,11,7,7,7,23,11,8,8,11,10,7,8,11,7,19,7,7,6,9,9,9,11,3,4,7,8,6,6,4,10,8,2,2]),rb=new Uint16Array([0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,1,1,1,1,1,17,1,1,1,12,1,12,1,12,13,1,1,1,1,12,1,12,1,1,1,1,1,14,21,1,1,1,1,1,1,1,19,12,1,1,1,1,1,1,1,20,1,1,1,16,1,18,1,1,15,1,1,1,1,12,1,1,1,1,1,1,22,1,1,1,12,1,1,1,1,1,1,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,1,24,25,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,12,12,12,12,1,32,0,0,0,1,1,1,1,35,34,1,1,1,1,1,33,1,1,1,1,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,38,0,0,0,0,39,40,0,0,0,41,0,12,1,1,12,1,1,1,1,44,45,45,45,44,45,44,44,46,45,44,45,44,44,44,44,44,44,46,44,44,44,44,44,44,45,47,47,45,44,44,44,44,44,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,50,52,50,50,50,52,50,51,50,53,50,51,51,50,50,50,51,53,51,53,50,51,51,12,55,55,54,56,51,53,50,50,48,49,57,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,60,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,67,1,12,1,1,66,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0,0,0,0,0,76,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,12,1,1,1,1,89,1,91,1,1,1,1,1,1,1,1,94,1,1,1,1,1,1,1,1,1,1,1,1,0,1,97,97,1,1,12,1,100,1,1,1,1,1,1,1,98,1,99,1,101,1,1,1,1,1,102,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,110,111,1,1,1,1,1,1,113,113,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,121,122,1,1,1,1,1,1,1,1,1,1,1,1,1,122,1,1,1,1,1,1,1,1,1,1,122,1,1,1,1,1,1,1,1,1,126,123,125,120,1,124,1,1,114,1,1,1,1,117,1,127,1,1,1,1,1,119,1,108,1,109,1,12,128,106,1,112,1,1,1,1,1,107,115,1,12,12,12,118,116,1,1,1,1,1,1,0,0,0,0,1,12,12,1,1,1,1,1,12,134,1,1,1,1,1,1,1,1,1,1,1,12,136,1,1,1,1,1,1,1,1,137,138,12,12,135,133,45,45,140,50,50,139,142,141,1,1,0,0,0,0,0,0,0,0,0,0,0,0,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,0,0,0,0,1,0,144,132,1,0,1,12,12,1,1,1,1,1,0,0,0,0,0,0,0,1,148,147,20,1,1,12,12,1,20,12,12,1,1,1,1,1,134,1,1,152,1,1,1,1,153,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,1,136,1,1,152,1,1,1,1,153,1,1,134,1,1,1,152,1,1,1,1,153,1,1,134,1,1,1,1,1,1,1,1,134,1,1,1,1,1,1,1,1,1,1,1,160,1,1,1,152,1,1,1,1,1,153,1,1,160,1,1,1,1,1,1,1,1,1,1,134,1,1,1,1,152,1,1,1,1,153,1,1,1,134,1,1,152,1,1,1,1,164,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,167,1,1,160,1,1,1,1,1,152,1,1,1,1,1,153,1,1,160,1,1,1,1,1,152,1,1,1,1,1,153,1,154,158,158,12,1,12,166,1,1,1,1,1,158,158,158,154,1,1,1,157,158,161,165,1,1,1,1,157,157,1,1,156,154,154,157,170,156,170,1,1,168,1,156,155,157,1,1,1,1,157,1,159,1,1,1,12,1,162,1,162,1,1,1,162,161,163,169,156,154,1,1,1,1,1,1,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,173,172,173,172,172,172,172,174,174,172,173,172,173,172,172,12,12,12,12,12,1,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,193,1,1,1,1,12,199,200,201,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,151,1,1,1,1,1,1,1,1,1,1,1,196,1,1,1,184,1,210,1,1,1,208,1,1,205,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,12,1,1,1,1,1,1,1,1,190,1,1,1,186,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,182,1,1,1,1,1,1,1,191,1,1,1,1,195,1,1,1,1,171,1,1,189,1,1,1,192,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,180,1,12,1,1,12,1,1,1,1,183,1,1,1,188,1,203,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,209,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,194,1,1,1,1,1,12,1,1,1,1,1,1,1,1,176,12,1,1,1,178,12,1,1,1,1,1,1,1,198,1,1,1,1,1,1,1,1,1,1,177,1,1,1,1,1,1,204,1,1,1,181,1,1,1,187,1,12,1,1,12,1,1,1,1,1,1,1,1,1,1,191,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,175,1,1,1,1,1,1,1,1,1,1,185,1,1,1,1,1,1,1,1,1,1,1,206,1,1,1,1,1,1,1,1,1,1,1,1,1,207,1,1,12,1,1,1,1,179,1,1,1,185,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,197,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,12,1,1,1,1,1,1,1,1,1,202,1,1,12,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,220,0,0,0,0,0,221,0,0,0,0,0,0,1,12,1,1,1,225,1,1,1,0,226,223,224,1,1,1,1,1,1,231,1,233,1,1,1,1,1,1,1,1,1,1,1,229,1,1,1,1,1,235,1,1,12,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,234,1,1,1,12,1,1,1,1,230,1,1,1,228,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,232,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,241,13,1,1,1,12,12,238,239,1,1,1,1,240,1,1,12,1,1,1,1,1,1,1,242,1,1,12,16,1,1,1,1,1,1,1,243,1,1,1,12,12,1,1,1,1,1,243,12,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,256,256,1,0,0,0,0,0,1,12,0,0,0,0,0,0,0,0,172,261,262,1,12,1,1,1,1,12,264,1,1,263,1,1,266,1,1,1,1,1,1,1,1,1,0,1,1,1,271,272,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,12,1,0,1,0,0,0,0,1,0,1,0,1,1,1,1,1,0,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,12,0,283,0,0,284,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,12,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,60,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,0,308,0,0,0,0,0,0,0,0,0,310,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,327,327,328,327,0,185,1,1,13,323,1,321,0,0,0,0,1,0,0,0,324,1,1,329,1,205,1,1,1,1,1,322,1,319,1,325,1,317,1,326,1,318,1,1,1,1,1,1,1,12,1,1,1,12,1,12,320,320,1,1,1,316,184,1,1,12,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,12,1,1,1,1,315,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,332,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,266,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,372,372,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,364,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,1,340,351,1,1,339,374,1,345,1,1,337,369,1,1,355,336,341,1,1,1,348,379,357,1,1,1,1,1,1,358,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,367,371,0,0,79,1,1,0,365,342,378,343,346,353,1,368,0,1,0,79,362,360,1,0,0,1,1,1,0,0,0,0,381,1,1,352,1,79,1,0,1,1,1,384,1,0,0,79,359,0,1,338,1,1,1,0,1,1,361,1,0,1,1,1,0,1,386,349,1,1,0,1,0,0,377,0,1,1,1,79,370,1,1,366,363,1,1,1,1,1,1,1,1,1,1,1,344,1,1,1,1,1,1,1,1,1,1,1,376,0,79,1,1,1,1,0,1,1,1,1,1,1,0,0,1,1,380,1,1,1,0,0,383,0,0,0,1,356,1,0,79,382,1,0,0,0,0,385,1,1,0,0,1,0,1,0,354,0,350,0,1,1,1,0,1,1,0,373,347,375,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,1,400,400,1,1,12,12,1,400,1,1,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,412,1,1,0,1,1,1,1,205,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,430,430,1,1,0,0,317,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,442,1,441,1,1,1,1,1,1,1,1,445,1,12,12,1,1,1,1,1,12,1,1,1,1,453,1,1,1,455,1,1,1,1,1,1,1,1,1,1,452,1,447,1,1,1,1,435,1,1,1,1,1,1,1,1,448,12,1,1,1,1,454,1,1,1,449,444,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,317,1,433,1,1,12,451,1,1,317,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,437,1,1,1,1,1,1,1,1,1,1,1,454,1,1,1,1,317,1,450,1,1,1,439,1,1,1,1,1,440,1,456,443,1,1,1,1,1,438,1,1,1,1,1,1,1,1,1,434,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,446,1,1,1,1,1,1,1,12,1,1,1,1,1,436,1,1,1,1,1,1,1,220,457,1,1,1,1,1,12,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,0,1,0,1,0,1,1,0,0,0,462,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,12,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,466,466,466,466,466,466,466,0,466,466,466,466,466,1,466,466,466,0,466,466,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,471,470,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,475,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,469,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,477,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,474,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,467,0,0,478,473,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,472,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,467,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,476,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,12,1,1,1,1,1,1,1,1,1,1,1,1,488,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,198,198,1,492,1,1,1,491,1,1,1,1,487,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,489,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,493,1,1,490,1,1,1,1,1,1,1,1,372,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,494,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,505,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,1,0,1,0,0,12,1,507,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,12,12,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,1,0,0,0,1,60,1,1,12,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,526,1,1,1,1,1,1,1,527,1,1,1,1,1,1,1,525,1,1,12,1,529,239,1,1,12,12,1,1,12,1,12,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,533,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,539,1,1,1,1,1,1,1,1,1,1,1,1,1,1,132,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,107,1,1,12,1,1,1,12,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,548,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,144,1,1,1,228,1,1,12,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,572,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,577,1,220,1,328,1,1,1,1,1,1,1,1,1,0,0,578,1,1,1,1,0,580,0,79,0,579,0,1,1,1,0,1,1,1,1,1,1,12,0,0,0,0,1,0,0,0,0,0,0,586,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,582,582,0,585,583,582,582,582,582,582,587,582,582,591,582,582,582,582,582,582,582,582,582,582,588,585,582,582,585,582,582,582,582,582,582,582,582,582,582,582,582,582,583,582,582,582,582,582,589,582,582,582,582,582,582,0,0,0,1,590,1,1,1,1,584,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,12,595,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,12,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,1,1,12,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,65,280,306,411,535,0,4,68,236,254,282,307,334,388,413,0,499,519,536,597,9,0,61,88,398,409,429,575,0,497,518,532,612,0,30,6,0,461,500,602,560,70,0,7,285,255,389,463,416,538,79,598,0,576,309,418,465,9,105,288,506,6,30,0,311,79,391,79,483,10,6,131,248,275,0,613,509,0,563,0,64,6,6,251,95,2,432,399,410,596,0,6,0,6,286,103,6,561,501,540,0,464,390,273,287,8,71,104,599,543,392,312,300,419,146,74,290,546,510,601,564,335,330,479,6,75,149,11,0,249,522,547,565,514,551,570,611,36,6,260,295,333,304,218,30,528,553,218,42,216,265,296,305,406,423,481,274,0,73,562,0,403,417,299,79,247,79,0,581,545,504,292,421,79,393,387,0,0,0,9,555,571,217,0,424,407,531,516,573,615,85,218,43,297,396,425,569,0,511,293,276,79,215,80,28,390,30,6,394,331,303,604,592,524,550,513,0,258,81,30,405,422,0,30,426,0,219,593,517,9,408,427,218,248,86,222,594,574,557,482,428,397,250,227,87,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,620,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,0,0,0,0,82,0,129,0,0,84,549,0,0,0,0,0,0,0,27,0,552,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,503,0,257,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,294,0,0,0,0,0,0,0,617,0,0,0,0,0,616,0,0,0,0,0,0,0,0,0,0,0,0,0,0,395,0,0,0,484,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,0,0,0,0,0,0,495,0,0,0,0,0,0,404,0,0,0,0,0,0,0,0,0,0,0,0,0,211,0,0,0,0,0,0,0,0,0,0,515,0,0,0,0,0,0,0,0,0,0,0,0,496,0,0,0,0,0,0,0,0,0,0,0,0,0,0,269,281,0,0,0,0,0,530,277,0,0,0,0,0,0,0,0,0,0,0,0,0,512,0,0,0,0,0,0,0,0,0,0,0,458,0,0,0,314,0,0,0,0,0,0,253,0,0,0,0,0,0,23,0,0,0,0,568,0,0,0,0,600,521,0,0,0,0,244,0,0,0,0,0,0,0,0,0,480,0,0,0,0,0,62,0,0,0,267,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,0,0,0,0,0,279,610,0,72,0,0,0,0,0,0,0,0,0,619,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,0,278,0,0,0,0,0,0,567,0,0,0,0,0,0,523,0,0,0,0,0,0,0,0,0,566,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,502,0,0,0,0,0,554,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,83,0,0,0,0,0,0,0,0,0,0,0,0,486,0,485,0,0,0,0,0,0,0,0,0,0,259,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,459,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,537,0,0,0,0,0,0,0,0,298,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,237,0,0,0,0,0,0,0,0,0,0,84,0,606,0,0,0,0,0,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,609,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,520,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,498,0,614,0,0,431,0,0,0,0,0,0,0,0,0,0,0,0,402,0,0,0,544,0,93,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,29,92,0,0,0,0,0,0,0,0,0,0,0,0,291,0,0,0,214,0,0,0,0,0,0,558,0,270,0,0,130,0,0,0,0,0,559,0,0,0,0,0,0,0,414,420,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,313,0,0,0,0,0,5,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,534,0,0,0,415,0,0,401,0,0,0,0,0,0,603,0,0,0,541,0,0,90,0,542,0,0,0,0,0,0,0,0,0,0,508,460,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,608,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,607,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,618,0,0,0,0,0,556,0,0,0,0,0,0,0,0,0,0,302,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,605,0,0,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,623,623,623,623,623,623,623,622,624]),Vp="orgmilcomschnetedugovdrrformsfeedbackofficialaccoorgmilschnetgovmagazinemediaunioncargopilotgroupcaarespressworksaerodromeworkinggroupair-traffic-controlaircraftaccident-preventioneducatormarketplaceambulanceinsurancecateringairportrepbodyenginesoftwaremodellingair-surveillanceconsultingchartertrainermaintenanceservicesdesignflightskydivingfreightassociationstudentgroundhandlingdgcafuelclubtaxicrewshowballooningexpresstraderbrokerauthoragentsairtrafficjournalistsafetyconsultantmicrolightaccident-investigationparachutingequipmentproductionfederationrecreationscientistnavigationengineertradingglidingleasingresearchpassenger-associationentertainmentparaglidinghangglidingaerobaticrotorcraftemergencycertificationgovernmentaeroclubexchangelogisticschampionshiphomebuiltcouncilconferencecontrolairlinecivilaviationjournalorgcomnetedugovcoorgcomnomnetobjofforgcomnetuwukiloappsframerorgmilcomnetedugovcoradioorgcomnetcommuneedogpbcoitgvorgedugov*spreviewfrontendrelayononstagingupid*mtls*privatelinktypedreamdeveloperbravemochawindsurfaivenmirenupsunwnextbegetngrokclerkwale2bwebcsbrunputerflutterflowspawnbaseshiptodaymagicpatternsnetlifyondigitaloceanrailwayhostedclaudehasurabotdashvercelgithubluyanigadgetreplitcloudflaretelebitedgecomputeevervaultdetaexponyatnoopencrpplxzeaburwasmerframerzeropsconvexmedusajsspritesonherculeseasypanelstreamlitsnowflakemesserliloginlinehackclubnorthflankbase44corespeedadaptableleapcellngrok-freeclerkstagelovableon-fleek*us-west-3ap-south-2us-central-2us-central-1eu-central-1ap-south-1us-west-2us-east-2eu-north-1ap-north-1us-west-1us-east-1*rcloudintsegorgmilcomgobbetnetintedugovturmusicasenasamutualcoopip6uriurnin-addre164homeirisgovdixdaemoncloudnssthwien*inexexkunden4accogvormymyspreadshop4lima2ixortsinfofuturecmsfuturehosting12hpprivfuturemailinglima-cityfunkfeuer123webseitednshomemelmyspreadshopcloudletswasantqldvicactnswtascatholicwasaqldvictasvpsidwasantozqldorgcomvicasnactnetedugovnswtasconfhrsncomairflowlambda-urltransfer-webappairflowtransfer-webapptransfer-webapptransfer-webapp-fipstransfer-webappeu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1privatenotebookstudiolabelingnotebookstudionotebooknotebook-fipslabelingnotebookstudionotebook-fipsnotebookstudio-fipsnotebook-fipsnotebookstudionotebook-fipsnotebookstudioeu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2experimentsus-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1onrepostsagemakercopporgmilcompronetintedugovbiznameinfoshoprsorgmilcomnetedugovbrendlyresolvenzauscotvstoreorgcomnetedugovbizinfoidacaicoittvorgmilcomschnetedugovinfocloudezproxyacmymyspreadshopkuleuvenwebhostingtransurl123websitecloudnsinterhostsolutionsddns5476103298edgfacbmlonihkjutwvqpsryxzbarsycoororgcomedumyftpno-iporxcloud-ipfor-somemmafanfor-morewebhopselfipjozidyndnscloudnsdscloudfor-thefor-betteractivetrailcoeconorestooteorgcomeconeteduassurmoneyafricaarchitectesrestaurantloisirstourismavocatsinfoagrounivcoorgcomnetedugovtvdeportesaludtksatorgmilcomwebgobnetinteducienciaboliviarevistacooperativaempresanombreindustriamusicapatriamedicinademocraciapoliticapuebloindigenaplurinacionalarteblogwikiinfoagrotransportenoticiasprofesionalacademiaeconomiaecologiamovimientotecnologianaturalsimplesitecepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesmscepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesms*biaamfmtcmptvfeirasampajampanatalbelemananiradiog12medindfndbmdtrdthepoaggfjdfdefinfenflegsegongengcngorgzlgslglogppgmillelqslcimcomnomadmjabimbbibbsbabcrectecsjcetcpscpvhudieticriapipsiecnbiorioecogeoteoodoproatoartfstmatvetdetbetnetcntnotfotgrueduajuespappreptmpemparqsrvadvdevgovntrturagrjorfarjusmusdesvixxyzcozfozslzbhzmaringasantamariacampinagrandegoianiasorocabafloripasaobernardocuritibaboavistarecifeaparecidasaogoncasalvadorcuiabamorenamacapalondrinacontagemsocialfortalmaceioleilaoosascoriobranconiteroi9guacutcheblogflogvlogwikitaxicoopmanauspalmascaxiasjoinvillebaruericampinassantoandreribeiraoriopretoweorgcomnetedugovv0windsurfshiptodaycloudsitecoaccoorgnetgovofmilcomgovmediatechzacoorgcomnetedugsjgovmydnspenfnlabnbmbgcbcqconcontnuyksknsmyspreadshopno-ipawdevboxbarsyonidatemfuinabusavinstanceseceuguukussryzespawncsxcloud-ipmyphotosfantasyleaguetwmailcleverappsscrappingccwucloudnsftpaccessgame-serverccgovobjectsrmalpgcust*svcalp1aeappenginermalpgmyspreadshop4lima2ixsquare7cloudscale123websitefirenet12hpflowgotdnslinkyard-cloudcloudnslima-citydnskingobjectstorageedaccogoorusorgcomnetinteduaéroportxn--aroport-byaassogouvcomilgobgovcloudnses-1eu-west-1us-east-1euvipit1eurarubait1s3lbwebsites3websiteru-spbru-mskelasticcsrunstnukukcaukusnl-ams-1fr-par-1fr-par-2functionsnodess3ddlwhmrdbfnck8sifrs3-websitecockpitscblmgdbdtwhkafkpubprivs3ddlwhmrdbk8sifrs3-websitecockpitscblmgdbdtwhkafks3ddlrdbk8sifrs3-websitecockpitscblmgdbdtwhkafkk8sscalebookpl-wawfr-parnl-amsbaremetalsmartlabelinginstancesdechk2kuleuvenlaravelvoorloperurownoxazapscwhstgrvaporobservablehqelementorantagonistreclaimjoteluluencowaydiademjelasticmatlabmagentositetrendhostingaxarnetperspectajenv-arubajelejoteravendbemergenttrafficplexconvexkeliwebserveboltbegetcdnstaticson-rancherprimetelonstackitunison-servicesdnshomelinkyardbarsyjelecloudnscocomnetgovmycn-northwest-1cn-north-1s3s3-accesspoints3-websites3s3-accesspointrdsdualstacks3-deprecatedemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspoints3s3-accesspointrdsdualstackemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicn-northwest-1cn-north-1cn-northwest-1ebcomputeelbcn-north-1airflowcn-northwest-1cn-north-1oncn-northwest-1cn-north-1amazonawssagemakeramazonwebservicesdirectasgdsdhehahljlnmhbacscahqhshhihnlnynsnmofjbjzjxjtjhkcqtwgsjssxnxjxgxxzgz網絡网络公司orgmilcomnetedugovxn--55qx5dcanva-appsxn--io0a7iquickconnectcanvasitekhsjxn--od0algmyqnapcloudsrvrlessclustersrealtimestorageleadpagescarrdcrdorgmilcomnomnetedugovhidnssupabaserdpareplmypiumsoxmitotaplpagesfirewalledreplitowodevwebview-assetsvfswebview-assetss3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9eu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1s3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecateds3-websites3-object-lambdaexecute-apis3s3-accesspoints3-websites3-accesspoint-fipss3-fipss3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipss3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9vfss3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9eu-west-3ap-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1us-northeast-1ap-southeast-1me-south-1af-south-1ap-south-1ap-southeast-7us-west-2eu-west-2ap-east-2us-east-2ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ap-southeast-6ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1mrapaccesspoints3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3eu-west-3ap-south-2eu-south-2computes3-ap-northeast-2elbrdss3-ap-east-1s3-sa-east-1s3-us-gov-west-1s3-eu-central-1s3-ca-central-1eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3s3-website-us-west-2s3-website-eu-west-1s3-external-1eu-central-1me-central-1ca-central-1il-central-1s3-us-west-1s3-eu-west-1s3-website-sa-east-1s3-website-ap-southeast-2ap-northeast-1ap-southeast-1s3-us-west-2s3-eu-west-2me-south-1af-south-1eu-south-1ap-south-1us-west-2eu-west-2us-east-2s3-website-ap-southeast-1s3-1s3-globals3-ap-northeast-3eu-north-1airflowap-southeast-2s3-us-gov-east-1s3-fips-us-gov-east-1s3-me-south-1s3-ap-south-1ap-northeast-2s3-website-us-west-1ap-southeast-5s3-eu-north-1s3-ap-southeast-1s3-website-us-gov-west-1compute-1s3-eu-west-3us-gov-west-1s3-website-ap-northeast-1us-gov-east-1s3-fips-us-gov-west-1s3-website-us-east-1s3-ap-southeast-2ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1s3-us-east-2s3-ap-northeast-1authauthauth-fipsauth-fipseu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1rservicesbuilderstg-builderdev-builder*ociocpocsdemoinstanceeu-west-3eu-south-2ap-southeast-3ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1previeweu-4us-4us-1eu-1us-2eu-2us-3eu-3appspaasrag-cloudrag-cloud-chjcloudjcloud-ver-jpcdemonodebalancermembersipeuxvsoncillaocelotonzayalilynxsphinxfentigercustomercaracalo365cloudstaticxendevapp001testcode-builder-stgplatformapimediasiteprojedrydpagesjsu2u2-localx0desazacncoitrueu4uhkukgrbrushatenadiarymyspreadshopfrom-flfrom-wvwebspace-hosttheworkpchatenablogservesarcasmapplinzisakuratanwixsiteappchizigiizeis-into-carsdnsiskinkyadobeaemcloudis-a-therapistpgfogmyvncdojinis-an-actress1kappfldrvkozowqa2jpnmexprgmrfirewall-gatewaydynnscafjsfbsbxooguyxnbayfrom-gawoltlab-demois-a-anarchistwiardwebteaches-yogadattowebtb-hostinglive-websiteservegamegotpantheonfrom-nhsubsc-payfrom-ohvipsinaappfrom-cadyndns-officehomelinuxfrom-mahercules-appservebbsstreakusercontentfrom-okfrom-wyfastly-terrariumis-a-llamaqualyhqportalserveexchangeon-vaporvivenushopciscofreakgrayjayleaguesmetaaiusercontentfrom-iais-a-libertariansaves-the-whalestaveusercontentyolasiteoperaunitepoint2thisis-a-catererlinodeusercontentfrom-vagithubusercontentsells-for-lesshosteurcanva-appsplaystation-cloudddnsfreefrom-pafrom-prfrom-waddnskingoutsystemscloudhotelwithflightmydattois-a-nascarfanmydbserverminiserverdamnserverservehumouris-a-playerfrom-nvfrom-nmemergentagentgentappsamplifyappfrom-kyis-an-accountantnfshostserveircfrom-akpythonanywherestackhero-networkpostman-echolikescandydyndns-mailobservableusercontentserveftpfreeboxosfrom-utcdn77-storageamazonawsneat-urldyndns-serverlinodeis-a-teacherfrom-vtgleezemythic-beastsus1-pleniteu1-plenitla1-plenitpaywhirlservecounterstrikejdevcloudhealth-carereformis-into-animegoogleapisis-a-painterafricaisa-hockeynutatmetais-an-actora2hostedis-a-democratdatadetectest-le-patrondigitaloceanspacesis-a-designeris-a-hunterlinodeobjectstemp-dnsissmarterthanyoufrom-arsimplesiteevennodetownnews-stagingis-a-liberalgooglecodejelasticservemp3stdlibqualyhqpartnerdyndns-free1cooldnsest-a-la-masiondrayddnsdynuddnsfrom-orfrom-miis-a-bloggerfrom-himydobisscanvacodeis-an-engineerest-a-la-maisonupsunappdevinappswafflecellmyasustorwpenginepoweredfrom-ctservep2psame-appmyshopblocksthingdustdatalikes-piediscordsezis-with-thebanddev-myqnapcloudlpusercontentis-leetshopitsite3utilitiesis-a-personaltrainersinaappladeskis-a-cheflogoipselfipbase44-sandboxnospamproxyalibabacloudcsmesswithdnsauthgearappsiamallamawithgooglelutrausercontentmochausercontentframercanvasmytabitdyndns-homew-credentialless-staticblitzcpserverdiscordsaysis-a-nurseappspotatlassian-isolated-3premotewdfrom-mtwixstudiocode0emm180rmyactivedirectoryawsappsmytuleapdnsabrpolyspaceqbuserrenderbuiltwithdarkboutirgotdnsabrdnsdopaascanva-hosted-embedawsglobalacceleratorhomesecuritypcmyiphostditchyouripclever-clouddyndns-ipon-aptibleis-a-musiciansecuritytacticsappspaceusercontenthomeunixstrapiappsame-previewcf-ipfsmycloudnaselasticbeanstalkis-certifieddontexistkasserverik-serverdrive-platformatlassian-3pfirebaseappherokuappawsapprunnerbarsycenteris-a-cubicle-slaveservehttpmyshopifyis-a-guruquicksytessiiitesorsitesmagicpatternsappis-a-cpameteorappfrom-wiis-a-rockstarbumbleshrimpdattolocalreadthedocs-hostedfrom-rifamilydsdyndns-picsplesknsbplaceddnsaliasdynaliasdyndns-remotedoomdnsip-ddnsblogdnsis-a-doctorroutingthecloudamazoncognitobarsyonlinedsmynasddnsgurucloudflare-ipfsdeus-canvasfrom-idsmushcdnpagespeedmobilizerdyndns-at-homeunusualpersonhosted-by-previderis-a-republicandyn-o-saurstreamlitappworkisboringonthewificprapidqualifioappis-uberleetis-slickgetmyipwpdevcloudtypeformdyndns-at-workgentlentapismynascloudw-corp-staticblitzfrom-ingeekgalaxyservebeerfrom-mdonrenderspace-to-rentaivencloudappspacehostedonfabricawafaicloudcodespotblogspotatlassian-3p-us-gov-modfrom-ndfrom-msis-a-techieis-a-studentcustomer-ociis-a-photographerdurumisfrom-ksmassivegriddyndns-wikiis-an-entertaineris-a-hard-workermysecuritycamerafrom-mnrackmazedyndns-blogis-a-bulls-fanwritesthisblogfreemyipsimple-urlfrom-sdreservdauthgear-stagingest-mon-blogueuris-into-gamesrice-labsxtooldevicesakurawebis-an-anarchistoraclecloudappsdyndns-worksells-for-urhcloudfrom-dcfastvps-serverwpmucdnis-a-geekscrysecfrom-txis-into-cartoonsmodelscapetrycloudflarelocaltonetstreak-linkbalena-devicesfrom-njforgeblocksfreebox-oswebadorsitefrom-ncdoesntexisthobby-sitestreaklinkshomesecuritymacownprovidertuleap-partnersdattorelaywphostedmailalpha-myqnapcloudservequakeis-a-socialistservehalflifepivohostingdynuhostingquipelementsw-staticblitzdyndns-webfrom-deproject-studyaliases121is-not-certifiedhercules-devis-a-financialadvisorservepicsis-a-greenloseyouripfrom-ilwithyoutubemwcloudnonprodwiredbladehostingdnsdojofrom-tnpixolinomyqnapcloudis-an-artisthostedpiis-a-landscaperauiusercontentoaiusercontenton-forgeis-a-conservativedreamhostersnet-freaksapps-1and1is-goneencoreapifastly-edgefrom-nesalesforcefrom-scdeployagentoraclegovcloudappsfrom-alis-a-lawyercechirevultrobjectsstufftoreadisa-geekddnsgeeklovableprojecttry-snowplowfrom-moblogsyteis-a-bookkeepernogmyforumravendbmyboxdeelementoredsaacficogoorinforgcomgobnatneteduidstoreorgcomnetintedudevnomepublorgcomneteduathgovtestscalculatorspaynowinfoquizzesresearchedcloudnsfunnelsassessmentsjscaleforcetmacltdorgmilcompronetgovbizpresseklogesrsccloudcustomfltusrcloude4corealmgovmunicontentproxy9metacentrumdyndyndyndnsdynpagespages-researchitionoccustomercomymyspreadshopipv64diskussionsbereich4limacomrub2ixfirewall-gatewayddnssspdnsbarsykeymachinesquare7myhome-serverspeedpartnercommunity-proschuldockxenonconnectgünstigliefernbwcloud-os-instancedyndnssecmy-routerxn--gnstigliefern-wobin-butterl-o-g-i-nisteingeekin-dslin-berlinin-brbfuettertdasnetzleitungsenin-vpnlcube-serverdyn-ip24logoipdyn-berlinruhr-uni-bochum12hpgoipsrvdnsfruskygit-repossvn-reposinternet-dnsgünstigbestellenhome-webserverxn--gnstigbestellen-zvbbplacedheimdnscosidnswebspaceconfiglima-citydyndns1istmeinvirtualuserschulplattformmy-gatewayddnsseclebtimnetztest-iservmein-iservvirtual-userhome64iservschuletaifun-dnstraeumtgeradeschulserverdynamisches-dns123webseitednshomehs-heilbronndnsupdaterbssgraphicdwadpdwdaepeweaawapaafpfwfabwbpbacwcpcciwebuserapiobjectsidsiskospockkimodorikerbonesteamsparisjanewaypicardglobaltarpitreedpikekiraworfsulukirkarchertuckerhackercanarywesleystagingprereleaset3r2lpbravepanelngrokiservstglclcrmerpflypagesbarsyvivenushoplocalcertlocalplayerbearbloggatewaydeno-stagingis-not-ais-a-goodbotdashvercelmocha-sandboxplatter-appreplitgithubpreviewworkersinbrowserevervaultdetais-ahrsndenoxmitmodxmyaddrstorageapipayloadgrebedocruncontainersstgstagelclstageloginlineis-a-fullstackleapcellngrok-freeis-coolstoragewebharemediatechlibp2pdiscourseimaginecomyspreadshopstoreregbiz123hjemmesidefirmcoorgcomnetedugovsldorgmilcomwebgobartnetedugovtmorgpolcomsocartnetedugovassoagrondiscoodontk12medcuegyecpaabgengorgmilgalsaltulcomadmesmgobpubdocmonfindgnriouioproartlatvetnetfotedulojgovntrturibrbarxxxofficialbasechefprofmktgpsictechinfoarqtcontdentrrpppsiqgit-pagesritmedfieorgcomlibprieduaipgovriikmeactvsportorgmilcomscieunnetedugovnameinfopintouchtawktotawkmyspreadshoporgcomnomgobedu123miwebcomputeorgcomnetedugovbiznameinfocognito-idpeusc-de-east-1onjelasticnxaspdnsbarsydirectwpdeuxfleurstransurldogadoprvwcloudnsamazonwebservicesdnshomeuserpartycokoobinmkmstorjfidemopaasdymyspreadshopalandkapsiikixn--hkkinen-5wacloudplatformdatacenterhäkkinen123kotisivuidacorgmilcompronetedugovbiznameinforadioorgcomneteduuserexperts-comptablestmmyspreadshopgretaprdcomnomynhccifbxoshuissier-justicenotairesaeroportfreeboxoson-webavocatassoportgouvkdnschirurgiens-dentistes-en-franceavouesfbx-os123sitewebveterinairechirurgiens-dentistespharmacienchambagrimedecinfreebox-osdediboxgoupilemszicpyicpvicppleysheezypagesedugovcnpyorgcomcybllcpvtnetedugovtnxonlineschooldaemond6atcopanelorgnetplybotdashstackitkaasorgmilcomnetedugovbizmodltdorgcomedugovcoorgcomneteduappwriteacorgcomnetedugovcloudtranslateusercontentorgcomnetedumobiassoorgcomnetedugovbarsysimplesitediscourseindorgmilcomgobneteduorgcomwebnetedugovguaminfonxhra教育敎育網絡网絡组織組織网络網络组织組织公司政府個人个人箇人ltdorgcomincneteduidvgovxn--uc0ay4axn--55qx5dxn--mk0axixn--io0a7ixn--uc0atvxn--zf0avxxn--lcvr32dxn--od0algxn--wcvs22dxn--gmqw5axn--od0aq3bxn--mxtq1mxn--ciqpnxn--tn0agxn--gmq050iorgmilcomgobneteduiservwp2tempurlmircloudfreesitewpmudevmyfastgadgetcloudaccessjelehalfboltfastvpsemergenteasypanelopencraftizcombrendlynamefromrtpersoadultmedorgpolrelcomproartnetedufirminfoassoshopcoopgouvtmcomediahotelforumvideosportorgsexagrargameslakaseroticaerotikatozsdereklamcasino2000filmsuliinfoboltshopprivnewsszexcityutazasjogaszkonyveloingatlaneacaicogoormyᬩᬮᬶmilwebschnetkopbizzonedesaponpesxn--9tfkymyspreadshopgovmytabittabitorderravpageaccok12idforgnetgovmuniltdplcaccotttvorgcomnetmeca6g5gpgamubacaicniocoukuptverdruscsdelhiindorgmilcomwebnicfingenpronetintedugovresbizbiharbarsyinternetbusinessschooltravelsupabasealumnigujaratfirminfoaeropostbankcoopindevscloudnsno-ipbarsybarrell-of-knowledgebarrel-of-knowledgensupdategroks-thisdnsupdatefor-ourknowsitalldvrcammittwalddynamic-dnsv-infowebhopselfipdyndnshere-for-moreilovecollegemayfirstforumzcloudnsmittwaldservertypo3servergroks-theeusekd1uk0cdndyndnsidrawsainaueuapjpusstagemocksysdevicesclientcustreservdcustdevdisrecprodtestingcobeebyteutwenteboxfusebravepstmndedynngrokorgmilcomnomhzcnetedugovqcxqzzbarsythingdustmo-siemensrb-hostingprotonetfh-muenstergitbookbluebitecloudbeesusercontentnodeartkiloappsforgerockdarklangresinstagingapigeebubbleb-datascryptedhypernodedappnodepantheonsitegitlabgithubkeeneticvirtualservercleverappshostyhostingon-rioedugitticketstelebiton-acornwixstudioon-k3sicp0icp12038jeleqotobigvlairbubbleappsmyaddrstolosmyrdbxwebflowdrive-platformbeagleboardhasura-applolipopdefinimavaporcloudmusicianwebflowtestazurecontainerresindevicereadthedocsloginlineeditorxmoonscalesandcatsbasicserverwebthingsbrowsersafetymarkbeebyteappbitbucketidaccovistablogorgschnetgovxn--mgba3a4f16axn--mgba3a4fraarvanedgeايرانایرانjclaspeziapdudcefegelemeperetevebacanatavaparasabgagfgogrgpgalclblimfmrmcbmbvbfclcmcvcrcpcchlimifibicivipirisimncnbnanenrnpntnnolomobocoaogorosopotoptvtatctbtmtltotpulunutpspapaqsvpvvvtvavvrtrsrprgrfrcrbrarorkrvstsssbscsmsispzczbzbozen-suedtirolmyspreadshopxn--bulsan-sdtirol-nsbxn--valledaoste-ebbtrentinoaltoadigetrentin-sued-tirolxn--forlcesena-c8axn--forl-cesena-fcbxn--bozen-sdtirol-2obtriestetrentinsuedtiroltrentino-s-tirollecceudineaostesienaparmaluccapaviagenoapaduaaostamonzaabruzzoternirietiturinmilanbozenlaziofermoleccocuneonuoropratola-speziavdataaligfvgpugmolcalcamlomumbsicpmnvenvaoedugovabrsarmaremrbastoslazibxosfirenzetrentinosüdtirolval-d-aostavalle-aostamessinacremonaravennatoscanatrentin-suedtirolbolognacalabriaurbinopesarofriuli-v-giuliaogliastraxn--valle-aoste-ebblaquilaandriatranibarlettasyncloudtrentinosudtirolxn--valle-d-aoste-ehbaostavalleyvalled-aostatrentino-alto-adigevallee-d-aostexn--balsan-sdtirol-nsbpistoiasicilialucaniacataniaiserniaperugiabresciaveneziagorizialiguriaimperiabulsan-suedtirolbalsan-suedtirolbarlettatraniandriaxn--trentino-sdtirol-szbforlì-cesenatuscanyvallée-d-aostemantovavallée-aostecasertapiemontevalleaostaval-daostafriulivgiuliatrevisoforli-cesenavalléedaosteferrarapescaravald-aostatrentino-altoadigefriuli-vegiuliavallee-aostecarboniaiglesiastarantomediocampidanovalleedaostetrentinosud-tirolcampobassotrentinsüd-tiroltrentinosüd-tirolmonzabrianzatrentino-südtirolxn--trentino-sd-tirol-c3bpotenzacosenzavicenzaemiliaromagnavenicefrosinonemarchepordenonetrentinosued-tirolvaresemolisevalléeaostefriuli-veneziagiuliabasilicatalatinaanconasavonaveronamodenaaquilabiellabolzano-altoadigepugliafoggiaumbriatrentino-stirolgenovapadovamateranovararagusapiacenzatrentinostirolvalleeaostetempio-olbiatrentinsudtirolmassa-carrarafriuliveneziagiuliatrentinosuedtirolandria-barletta-tranitrapanixn--cesenaforl-i8amaceratacaltanissettaascoli-picenobrindisicarraramassacagliaririmininapolivibo-valentiachietibulsan-sudtirolbalsan-sudtiroltrentino-a-adigebulsanbalsaniglesiascarboniamilanotorinoteramodell-ogliastraarezzotrentinoalto-adigerovigotrentovenetoiglesias-carboniatrentino-sud-tirolaltoadigereggio-emiliareggio-calabriasardegnatranibarlettaandriapiedmontxn--sdtirol-n2amedio-campidanotrentino-süd-tirolfriuli-vgiuliafriuli-ve-giuliaromeennaromapisa32-b16-b64-blodiastibarineencomonaplesforlicesenailiadboxosalessandriasicilytrani-barletta-andriaxn--trentin-sdtirol-7vbpesarourbinotrentinsued-tirolcesena-forliforlìcesenaemilia-romagnamonzaebrianzaxn--trentinsdtirol-nsbtrentinos-tiroltrentinsüdtirolvalledaostaolbia-tempiocampidanomediovibovalentiasassarivalle-daostalombardyfriulivegiuliareggioemiliamonzaedellabrianzaalto-adigevercellitrentin-sudtiroltraniandriabarlettatrentino-sudtirolascolipicenobozen-südtirolfriulive-giuliaflorencevaldaostaxn--cesena-forl-mcbcarbonia-iglesiasaosta-valleycarrara-massadellogliastratrentinoa-adigexn--valleaoste-e7apesaro-urbinoxn--trentinosdtirol-7vbxn--trentin-sd-tirol-rzbxn--trentinsd-tirol-6vbtrani-andria-barlettatrentin-süd-tirolxn--trentinosd-tirol-rzbgrossetomonza-e-della-brianzasüdtirolreggiocalabriatrentinoaadigetrentin-südtirolfriuliv-giuliaverbaniacampaniatrentino-aadigefriulivenezia-giuliasardiniaandriabarlettatranibarletta-trani-andriacatanzarooristanourbino-pesarocesena-forlìvalle-d-aostacampidano-medio123homepagesiracusatempioolbiasuedtirollombardiaavellinocesenaforlìtrentinofriuli-venezia-giuliabozen-sudtirolandria-trani-barlettabulsan-südtirolbalsan-südtirolmonza-brianzabolzanotrentino-sued-tirolbellunosalernolivornocrotonesondriodnshometrentinsud-tirolmassacarraratrentin-sud-tiroltrentino-suedtirolviterbobergamocesenaforliolbiatempiopalermobeneventoagrigentoofcoorgnetfmaitvphdengorgmilcomschnetedugovperagrikanieasukehandachitatokaiaisaikonanoharuamaobuhigashiuraowariasahiinuyamatobishimaiwakurashitarainazawatoyonegamagorimihamatoyotataharakariyayatomioguchikomakimiyoshinishiotokonamekiyosuchiryutoyohashiokazakiisshikikasugaikotakiratoeianjotogofusosetohazutsushimashinshirotakahamanisshinshikatsuhekinantoyokawaichinomiyatoyoakeodateogataakitaikawakyowahonjoogayurihonjonoshirokamiokakatagamimitanegojomeyokotekosakadaisenkazunonikahohonjyomoriyoshimisatohappoukamikoanihachirogatahigashinarusesembokufujisatokitaakitaitayanagiowanitakkomutsutsurutahirosakigonoheoirasetowadamisawanohejiaomorishingohiranairokunohehashikamitsugarushichinohehachinohenakadomarisannohekuroishisakaeisumiasahiotakiinzaiabikomatsudoyachiyomutsuzawakujukuriomigawakashiwatoganemihamanaritasakuranagaramobarahanamigawachoshishiroichoseikozakishisuikatorimidorichonankyonanfuttsuonjukufunabashinagareyamanodasosatakochuotohnoshourayasukimitsuyokaichibayotsukaidosodegauratateyamakamagayayokoshibahikariyachimatakatsuuratomisatokisarazukamogawaichikawanarashinoichinomiyashimofusaminamibososhirakoichiharaoamishirasatoikatahonaiainansaijoseiyoiyoozuuwajimaniihamanamikatamasakiuchikokihokutobetoonshikokuchuomatsuyamaimabarikamijimakumakogenyawatahamamatsunosabaeikedaobamasakaifukuiohionotsurugamihamawakasaminamiechizeneiheijikatsuyamatakahamaechizensoedaukihaomutaokawanishiogoribuzenonojosueumiokiotochikugosasagurisaigawamizumakishinyoshitomikurumekurateyamadakasuganakamamiyamanogatatakatahakataiizukakawaratagawakasuyaashiyainatsukimunakataminamitsuikishonaikurogifukuchikeisenhigashimiyakoshinguyukuhashiokagakiyamekogaongausuikahotohochuotoyotsumiyawakadazaifuhisayamatachiaraiyanagawanakagawahirokawachikujochikushinochikuhochikuzennamieotamaokumashowateneiiwakikoorinangoononishigoshimogoomotegomishimafukushimaasakawakagamiishishirakawaiitatefutabahiratayugawahanawakitakatakawamatakunimiyabukibandaihigashihironoyamatomiharuyamatsuriaizubangedatesomaaizuwakamatsuyanaizuaizumisatonishiaizuizumizakikitashiobarataishinkaneyamakoriyamainawashirotanagurafurudonosamegawasukagawaishikawatamakawaikedaogakitaruiginanenahashimahichisonakatsugawaibigawashirakawamizunamiminokamomitakekawauesekigaharatomikasakahogikitagatayamagatatajimianpachimotosuyaotsukakamigaharahidakanisekitokigujominogodoyorogifukasamatsutakayamawanouchihigashishirakawakasaharashimonitatsumagoichiyodakannakanrashowameiwakiryuotaoratomiokafujiokaitakuranaganoharahigashiagatsumatakasakishibukawaminakamikatashinatsukiyonokawabanumataannakaoizumimidorishintoisesakiuenoyoshiokakusatsutakayamanakanojonanmokutamamuratatebayashimaebashiotakekaitadaiwahongofuchukuietajimashobaramiharahatsukaichihigashihiroshimamiyoshikumanokurenakasakaseraseranishiasaminamifukuyamashinichionomichiosakikamijimajinsekikogentakeharaotobenanaeikedatohmaozoraobiraabirakyowaeniwataikibibaisharirebunerimohiroooketootarupippunishiokoppechitosefurubirahakodateshiranukakitahiroshimakushiroobihironanporoiwamizawaniikappukunneppufukushimanakasatsunaitoyourakuromatsunaiakabirakamisunagawashibechaurakawakamifuranonakatombetsuasahikawashimokawakayabeokoppebiratoriabashirisaromaatsumanumatahidakabifukamukawamikasahorokanaitoyotomisarufutsuhigashikawaishikarikitamiyoichiesashiiwanaitomariminamifuranoakkeshifuranotoyakoyakumootoineppushikaoishiraoinemuronayorohaboroashorobihororishirifujiutashinaihokutotakasuebetsuurausuassabukikonaishimamakinaiedatetoyabieinikiesanuryuoumuteshikagarikubetsuashibetsukimobetsuaibetsutobetsusobetsuembetsushimizuchippubetsurishirihokuryuhoronobeshintokutsubetsushibetsuhonbetsumombetsutsukigatakuriyamakoshimizushiriuchikutchanmurorannoboribetsukamishihorowassamushinshinotsukembuchiwakkanaikamoenaikiyosatotakinoueshikabesunagawafukagawanakagawatakikawakamikawahigashikagurahamatonbetsumatsumaemoseushirankoshishakotanimakanemashikeotofuketomakomaisandatambaitamiawajikasaiasagoshisoonoakoyashirotoyookaminamiawajiinagawafukusakitakasagokamigorikasugaharimayokawaashiyahimejiakashitaishiaogakisannantakinosumototakarazukanishinomiyashingugoshikinishiwakiyokatakaaioimikisayoyabukawanishiamagasakisasayamashinonsenkakogawaichikawakamikawatatsunotsukubaiwamaogawaasahisakaitokaioaraiitakobandodaigosuifuinaamikasumigaurakashimaomitamayachiyoshimodatetomobetoridehitachinakainashikisakuragawakasamayawaramoriyahitachiomiyanamegatayamagatahitachikamisuushikutakahagiibarakitonekoganakasowayukimihojosomitoryugasakishimotsumafujishirotsuchiurachikuseihitachiotashirosatotamatsukuriuchiharashikahakuinanaotsubatawajimakahokukawakitatsurugikaganominotosuzuuchinadakomatsuanamizunakanotohakusannonoichikanazawaiwateshiwafudaikawaimoriokaofunatohanamakikuzumakikitakamininohekunoheyamadayahabasumitaichinosekitanohatahiraizumirikuzentakatajobojiotsuchihironomiyakoiwaizumikarumaiichinohenodakujitonooshushizukuishifujisawamizusawakamaishikanegasakimannoutazukotohiraayagawazentsujihigashikagawauchinomikanonjisanukimarugamemitoyotakamatsutadotsunaoshimatonoshoakuneamamiizumihiokiyusuikinkoisasookouyamanakatanekagoshimakanoyaisenkawanabeminamitanemakurazakitarumizunishinoomotematsumotosatsumasendaioimatsudaayaseebinamiurazushinakaiodawaraiseharasagamiharahakoneaikawakaiseiatsugitsukuihadanoyamatoyamakitazamaoisochigasakininomiyayokosukakamakuraminamiashigarafujisawasamukawakiyokawahiratsukayugawaraokawaumajikochitsunootoyoakiinonishitosayasudahidakamiharasakawaniyodogawahigashitsunokagamigeiseisusakiotsukinaharisukumomurototosakamiochitoyotosashimizumotoyamanankokunakamurakitagawayusuharaogunichoyoukiasoutoozugyokutoamakusamifunetakamoriyamagaminamataminamiogunikikuchisumotoyamatonagasumashikiaraokumamotokamiamakusanishiharayatsushiroayabeseikasakyoideineujinakagyokameokakyotangokyotanabekyotambaminamiyamashiroyamashinatanabeyawatawazukaminaminantanmiyazuhigashiyamafukuchiyamakitamukokamojoyokizumaizuruujitawaraoyamazakinagaokakyokumiyamakawagoeinabeshimameiwaasahitaikiudonoisetsukisosakikuwanamihamamiyamasuzukatamakimisuginabarikumanokomonominamiisewataraitobakiwatakikihotadomatsusakayokkaichikameyamaureshinoishinomakishichikashukuohirataiwaosakizaohigashimatsushimashikamaiwanumashibataogawaraonagawakawasakiseminemarumoriminamisanrikukakudamuratawakuyatomiyanatoriwataritagajomisatotomekamirifushiroishimatsushimayamamotoshiogamafurukawahyugaebinotsunosaitoayakushimanobeokakitauramiyazakitakazakigokaseshiibamimatashintomikunitomikitakatakobayashikawaminamitakaharukijotakanabemiyakonojonishimeranichinankitagawakadogawamorotsukakisofukushimaminamimakisakaeobuseikedaogawamiasaokayaasahiotakiotarichinoinaomichikumakomaganechikuhokukaruizawayasuokaooshikaikusakaminamiaikitogakushimatsukawakawakamitateshinatakamorikitaaikishiojirimiyadahakubaiizunaiijimaiiyamamiyotasuzakayasakatoguraookuwanagawaminowahirayayamagataminamiminowafujimiomachisakakitakaginaganonakanosakuhokomoronagisoshinanomachiwadauedaiidaharasuwatomiachiaokianankisosakunozawaonsenagematsutakayamashimosuwamatsumotoyamanouchinakagawamochizukiazuminotatsunoobamaomuraseihiunzenosetofutsuikichijiwanagasakiisahayahasamisaikaikawatanasasebohiradokuchinotsugototogitsutsushimashimabarashinkamigotomatsuurayamazoekashibaikomakawaitenrioyodosangokoryoudaojiikarugayamatokoriyamatenkawakatsuragikurotakikawakamimiyakemitsuetakatorikamikitayamayamatotakadahegurishinjokanmakisakuraitawaramotogoseoudanarasoniandokawanishishimoichihigashiyoshinokashiharashimokitayamanosegawayoshinomintsivorytopazsakuragehirnsumomoaseinetopalmail-boxmokurenyoitamuikaojiyagosensanjoaganomyokoseiroagaomishibataniigatanagaokamurakamiuonumayuzawakariwatagamitainaitsunanminamiuonumatochioyahikojoetsuseiroukamosadoizumozakitokamachiitoigawasekikawakashiwazakitsubamemitsukekokonoesaikiusukibeppuusahimeshimakunisakihasamataketatsukumihitaoitahijikusuyufukujukamitsuebungoonobungotakadaibaraniimibizentsuyamaokayamakasaokahayashimayakagemaniwaakaiwamisakishinjotamanotakahashikibichuowakesojanagishookumenannishiawakurakurashikiasakuchisetouchikagaminosatoshotomigusukunakagusukuyaeseizenaurumaiheyaaguniogiminanjokinminamidaitokitanakagusukuyonaguniokinawaishigakikunigamiurasoekadenataramahiraraginozataketomishimojizamamitonakiitomanhigashimotobuyonabarugushikamionnanahanagohaebarukumejimakitadaitonakijinnishiharayomitanginowantokashikiishikawaikedasuitaminohizuminishisakaikananabenodaitoosakasayamayaokishiwadatadaokakaizukatondabayashichihayaakasakakumatorikadomasayamahigashiosakashijonawatehirakatataishimisakitajirihannansennankatanotoyonominatosettsuhigashiyodogawaibarakinosekitachuohigashisumiyoshifujiiderakashiwaraizumiotsutoyonakamatsubaramoriguchiizumisanoshimamototakatsukineyagawahabikinotakaishikawachinaganoyoshinogarikamiminearitaouchiimarihizenogikashimaariakekiyamafukudomikitagatakitahataomachigenkaikanzakinishiaritakyuragisagataratosutakushiroishikaratsuhamatamakouhokukawagoeyoshidasatteogoseirumaasakaurawaogawaniizaomiyayoriiotakishikihonjooganohannohanyuinasaitamaokegawaarakawayoshikawayokozehasudasayamahidakafukayachichibuiwatsukiryokamiyoshimikamiizumifujimiwarabiranzanmiyoshiminanoyashiosakadosugitomisatohigashichichibutodasokakukiyonokazoshiraokakasukabekounosukawajimatsurugashimamiyashirokitamotohatoyamamoroyamahatogayakumagayakawaguchinagatorokamisatomatsubushinamegawatokigawakamikawafujiminohigashimatsuyamakoshigayatokorozawas3isk01isk02ryuohkoseikonanaishorittotakashimamaibarahikonetorahimenishiazaikokagamokotoyasuotsukusatsunagahamamoriyamatoyosatotakatsukinotogawaomihachimanhigashiomiakagiunnanizumogotsuamayatsukakakinokimatsuehamadamasudahikawahikimiokuizumoyasugiyakumomisatotamayuohdahigashiizumookinoshimanishinoshimatsuwanoshimaneshimadafujiedayoshidashimodagotembaiwataatamikosaiyaizuitoizumishimahaibaramakinoharaomaezakikawanehonkannamisusonohigashiizufukuroinumazukawazufujiaraishizuokahamamatsushimizuizunokunimatsuzakimorimachiminamiizunishiizukikugawakakegawafujikawafujinomiyaujiietsugaoyamayaitaohiranikkoashikagakuroisokanumasakurashioyakarasuyamamotegiichikaikaminokawatochigihagamokanogisanobatonasumibunasushiobaranishikatautsunomiyaiwafunemashikoshimotsukeohtawaratakanezawaitanokomatsushimatokushimaichibaminamiaizumiwajikikainanmiyoshinarutomimamugiananmatsushigesanagochishishikuinakagawamachidachiyodakomaefussainagitaitochofufuchuomeotahigashiyamatotoshimaokutamaaogashimakodairaedogawaarakawahachiojishinagawatachikawashibuyasuginamihinodekiyosesumidaoshimanerimamitakahamuraadachinakanomizuhobunkyomegurominatokoganeihigashikurumekokubunjihigashimurayamamusashimurayamatamakitahinochuokotokatsushikakouzushimaogasawaraakishimakunitachishinjukusetagayamusashinohachijoitabashiakirunohinoharachizunanbukotouramisasawakasayonagokogehinoyazutottorinichinansakaiminatokawaharaoyabetairainamiasahinantoimizufuchutakaokakurobeyamadajohanatoyamatonaminyuzenfunahashinakaniikawanamerikawaunazukitogahimiuozufukumitsutateyamakamiichiiwadearidayuasainamitaijikatsuragiaridagawatanabemihamahidakakainankiminomisatoshingushirahamakamitondayurakozakoyagobokitayamawakayamakudoyamahashimotokushimotokozagawahirogawakinokawanachikatsuurarsuseroeoishidasagaeoguniasahinagaitendonanyoobanazawanishikawasakataohkuratozawamikawamamurogawayamagatafunagatatakahatashonaishinjokahokuiideyuzakawanishitsuruokakaminoyamayamanobeshiratakamurayamanakayamakaneyamahigashineyonezawasakegawamitouubeyuuabushimonosekitabuseoshimatoyotaiwakunihikarishunannagatohagihofukudamatsutokuyamashowadoshitsurunanbukoshukaiminami-alpsnirasakikosugeotsukioshinohokutominobuyamanashifuefukichuokofuichikawamisatoyamanakakonakamichitabayamanishikatsuranarusawafujikawahayakawafujiyoshidafujikawaguchikouenohara長野京都岐阜大阪三重群馬千葉滋賀佐賀奈良adednelgaccogogror秋田愛知高知埼玉沖縄栃木熊本岩手青森山梨新潟島根鳥取長崎香川宮城石川大分宮崎茨城山口兵庫山形徳島広島福島福岡岡山富山静岡愛媛福井東京xn--4it168dhatenadiaryxn--vgu402ckawaiishophatenablogcocottenamaste北海道penneehimeiwateversestabachibashigagonnagunmapermahaccaakitaosakauh-ohblushkochiaichifukuikuroncapooitigohyogotokyokyotopunyuthickcheap0t00g00j0mie2-ddaapyawjg0amfemsubxiiboomoobutchueekpgwrgrherskrboyrdyupperunderflierchipsmydnsheavyangryhippygirlyrulez神奈川鹿児島和歌山bambinaxn--nit225kokayamasaitamaxn--k7yn95exn--1lqs03nsapporoparasitelolipopmcxn--efvn9sniigatafukuokatokushimafukushimahiroshimakagoshimafakefurokinawaxn--8pvr4ucoolblogxn--0trq7p7nnkawasakinagasakimiyazakichilloutxn--8ltr62kxn--klty5xpeeweezombiecutegirlxn--rny31hxn--uuwu58axn--ntso0iqx3axn--djrs72d6uytoyamanikitanyantakagawamimozanagoyaboyfriendxn--2m4a15egreaterchowderegoismyamagatafashionstorexn--elqq16hxn--pssu33lsendaimiyagixn--rht27zpecoriaomorisaloonwatsonvivianxn--djty4knobushipigboatnaganopinokoxn--f6qx53asadistvelvetsecretxn--5js045dchicappayamanashiibarakidigickgirlfriendxn--1lqs71dmongolianxn--c3s14mxn--qqqt11mtochigixn--5rtq34kparallelo0o0mondkobesagabonadecaoitanarafoolkilldecimainhiholomosblokilociaoundopupugifutankcrapflopnooroopsmodsholyjeezstripperpepperbittershizuokaxn--rht3dkitakyushureadymadeicurusversusmatrixxn--rht61ehungryfloppygloomycrankyhandcraftedlittlestarxn--klt787dxn--kltx9awhitesnowsunnydaytottorilovepoptheshopbuyshopxn--5rtp49cxn--d5qv7z876cwebaccelxn--kbrq7oxn--4pvxsxn--1ctwolovesickkumamotocatfoodxn--tor131oyokohamawakayamatonkotsuxn--ehqz56nxn--uist22hxn--6btw5axn--kltp7dyamaguchifrenchkisspussycatxn--4it797kxn--uisz3gbabybluexn--zbx025dnetgamersxn--7t0a264ckanagawaxn--6orx2rishikawaxn--ntsq17ghalfmoonschoolbusjellybeanxn--mkru45iusercontentlolitapunkxn--32vp30hsakurastoragehokkaidoshimanecandypopbabymilksupersaleweblikeraindropbackdropwebsozaikikirarahateblodaynightmeneacsccogoormobiinfoaeusxxorgmilcomnetedugovorgcomnetedugovbizinfotmprdorgmilcomnomedugovassnotairespresseassocoopgouvveterinairemedecinpharmaciensorgnetedugovtraorgcomedurepgovmeneperekgacscaiiocogoitoresmshsseoulbusanulsandaeguc01milvkimmvchungnamjeonnamjeonbukeliv-dnsgyeonggijejueliv-cdnincheondaejeongangwongyeongbukgwangjuchungbukgyeongnameliv-apicoeduindorgcomembnetedugovorgmilcomnetedugovjcloudorgcomnetintedugovperbnrinfocooyorgcomnetedugovipfscanvamypepw3sstorachakeeneticjoinmcinbrowserdwebcyonnftstoragemyfritzaemewphlxachotelltdorgcomwebsocschngonetintedugrpgovassnomgacsccoorgnetedugovbizinfo123websiteidorgmilcomasnnetedugovconfidmedorgcomplcschnetedugovaccoorgnetgovpresstmassoirseproxaccosoundcasthoptocraftvp4c66orgnetedugovitsmcdirmyboxbarsyedgestacksynologylogintonohostwebhopdiskstationi234tcp4hoocgroknoipprivmydsddnsdnsforlohmustransipdscloudfilegear-sgbrasiliafilegearframerbarsybarsyonlinecoprdorgmilcomnomedugovinforgcomnetedugovnameacprorgcomartnetedugovpresseinfoassoinstgouvorgnycedugovbarsydscloudjuorgcomnetedugovminisiteaccoororgcomnetgovorgmilcompronetintedugovbizmuseumnameinfoaerocoopaccoorgcomnetintedugovbizcooporgcomgobneteduorgmilcomnetedugovbiznameaccoorgmilneteduadvgovcoorgcomnetaltgovforgotherhiskeeneticispmanagernomassoprod5476132eastasiacentraluswesteuropewestus2eastus2rucdnwest1-usfra1-desandboxjls-sto1jls-sto3jls-sto2aglobalabglobalsslmapprodfreetlsmaplon-1lon-2ny-1fr-1sg-1ny-2paassnwebpaashostingjelasticnordeste-idcsocuserpagescwebfileblobservicebuscoreatlricnjsjelasticwebsitestoragesezagbinruhuukjptsmyspreadshopmynetnameakamaiorigin-stagingfrom-coipv64dynv6cdn77serveblogadobeaemcloudhicamsprytdnsupno-ipownipde5ovhicpfirewall-gatewaysytesmypsxbarsyusgovcloudapimyamazemyradwebakamaihdsaveincloudfastlylbfrom-lasubsc-paysquare7in-the-bandblackbaudcdnhomelinuxoninfernoctfcloudservebbsdns-dynamiccloudfrontakamai-stagingipifonyham-radio-opsenseeringclickrisingcommunity-profrom-nylocalcertgrafana-devedgesuite-stagingcloudflareanycasteating-organicatlassian-devmydattofeste-iplocaltotorprojectknx-serveredgekeycloudflareglobalcloudyclustercasacamserveftpakamaized-stagingakamaiorigindns-cloudmyeffectboomlabotdashbuyshousestwmailhetemlazure-mobilein-dslthruhereredirectmedynuddnsbouncemesupabaseluyanicloudappakamaicloudfunctionsdebiannhlfanpgafanstatic-accessin-vpnmysynologymafeloappudohomeftptrafficmanagersiteleafseidatmemsetcloudflarecloudaccesskeyword-onazure-apiis-a-chefdoes-itgets-itwebhopselfiphomeipkicks-assedgesuitewindowsserver-ontunnelmolemydissentscrapper-sitecloudflarecnuni5srcfggffiobbzabcdenodynuopikddnsvpndnsakadnselastxkinghostvps-hostfastlyhomeunixazureedgeshopselectdontexistmyfritzcloudjiffyalwaysdatasells-itsquaresbroke-itazurefddattolocalat-band-campmeinforumfamilydsazurestaticappsdefinimabplaceddnsaliasdynaliasnow-dnsblogdnsroutingthecloudendofinternetdsmynasakamaiedgemymediapcadobeio-staticakamaiedge-stagingakamaihd-stagingddns-ipprivatizehealthinsurancelive-onkrellianschokokeksmassivegridmysecuritycamerarackmazeserveminecraftfrom-azis-a-geekakamaizedmoonscalecryptonomicoffice-on-theusgovtrafficmanageradobeioruntimeedgekey-stagingreserve-onlinechannelsdvrdnsdojousgovcloudappcdn77-sslapps-1and1podzoneazurewebsitesdynathomescaleforceyandexcloudvusercontentisa-geekcdn-edgescoaemalcesappwriteazimuthtlonarvonoticeablestorecomwebrecnetperotherfirminfoartslgdloncogoiltdorgmilcolcomplcschgenngonetedugovbiznamefirmmobiacincoorgmilcomnomwebgobnetintedubizinfocomyspreadshopdemongovtransurl123websitehosting-clusterkhplaycistrongsnesosvalervålerxn--vler-qoaossandeheroysandeherøybøboheroyherøyxn--hery-iraxn--b-5gavalerbøboxn--b-5gasandesandexn--hery-iraxn--vler-qoavålerhåreålaahavaofsfvfhlolnlalrlhmfmtmahcostntbuåstrmreigersundmyspreadshopgálsáeidsvolltingvollgildeskalflorøvadsøvardøvanylvenxn--bhccavuotna-k7astrandaxn--kvnangen-k0axn--sknland-fxaxn--mosjen-eyarakkestadhyllestadnannestadvevelstadvaapstenordre-landsondre-landsøndre-landtjieltexn--vrggt-xqadsør-aurdalsor-aurdalheradstordmoldefordeførdeseljefedjeryggehemnexn--krehamn-dxasognegranesøgnebrynetjomevallebykletokkegiskedovretjømehobølvoldasaudatolgasømnaviknadønnasomnadonnatranafrananesnaraumasmolatrænafrænalesjasmølaørstaorstahitrafloraaukraloppafrøyarissasnasahalsagalsaromsaraisaráisafroyasnåsagronghobolfjelltydalårdalardalaskimharamkraanghkekråanghkesorumbarumhurumbærumsørummodumsálátbálátfrognbjugnvåganvagangulenskienløtenlotenstrynvefsnxn--merker-kuaskaunsveiobømlobomloskjåkvardoflorovadsosalatbalatsálatklæbuklabuselbubarduulvikskjakklepprisørxn--nttery-byaeflåeidflahofmilgolholsellomskifetvikdepvgsfhsaskerrisorhamarasnesåsnesrørosrorosxn--slat-5namasoynaroyvaroyluroydyroyaskoyradoyandoyrodoymeloyradøyandøyrødøymeløyaskøylurøydyrøymåsøyværøynærøyhoylandethøylandetdivtasvuodnalørenskoglorenskognesoddtangenxn--tjme-hraxn--smla-hraxn--stjrdal-s1aunjargalillehammerunjárgaxn--hamary-fyadavvenjargaxn--bearalvhki-y4a123hjemmesidegjerdrumxn--brnnysund-m8acxn--tnsberg-q1axn--mlatvuopmi-s4axn--snsa-roaxn--skierv-utaxn--brum-voatysfjordkvafjordeidfjordkvæfjordsongdalenmjondalenmjøndalenxn--gls-elackragerogáŋgaviikagangaviikasørreisasorreisasør-varangersor-varangerxn--risr-iraskiervaxn--frna-woaxn--trna-woakvinesdalleksvikleirvikrøyrvikroyrviksvelvikvenneslaevje-og-hornnessandnessjøenmarnardalvindafjordsandefjordenebakksnillfjordullensvangxn--trany-yuabrønnøysundnamsskoganaustevollxn--stjrdalshalsen-sqbnord-aurdalnord-frontrøgstadtrogstadgrimstadflakstadgjerstadxn--sandy-yuaxn--leagaviika-52bnore-og-uvdalvegarsheixn--rlingen-mxaxn--ggaviika-8ya47hvegårsheikarlsoykvitsoymasfjordenhamaroyinderoyosteroydavvenjárgasauheradguovdageaidnuxn--vre-eiker-k8abronnoysiellakkrødsheradkrodsheradkvinnheradbrønnøyxn--mtta-vrjjat-k7afxn--lrenskog-54akvitsøyvárggátkarlsøyosterøyinderøyhamarøybronnoysundxn--aurskog-hland-jnbbahccavuotnabáhccavuotnagiehtavuoatnastor-elvdalmidtre-gauldalxn--gildeskl-g0akarasjokevenassixn--bievt-0qaxn--yer-znalebesbynessebyxn--hbmer-xqamalselvmålselvxn--unjrga-rtamøre-og-romsdalmore-og-romsdalhareidmelandørlandorlandstrandålgårdsolundalgardafjordåfjorddielddanuorrikautokeinoxn--stre-toten-zcbskodjeaejriestangeliernebamblestokkefauskesnåasesnaasekongsvingerlangevagberlevagxn--flor-jrahattfjelldalostre-totenøstre-totenvestfoldxn--mely-iraálaheadjualaheadjunordreisaxn--troms-zuaxn--lgrd-poacporsangerflatangerstavangerleikangerbremangersamnangergieldakarasjohkaxn--rdy-0nabfrostautsirasnoasatromsaxn--sr-aurdal-l8aflekkefjordjølsterjolsteraremarkhedmarknååmesjevuemienaamesjevuemiexn--vard-jrarollagmeråkermerakerorskogørskogxn--bdddj-mrabdákŋoluoktaxn--osyro-wuaaknoluoktatrysilskjervøymandaljondalbindalrindalmeldalsuldalorkdalsigdalalvdallærdalhurdalsirdalverdallerdallardaloppdalåseralaseralhadselkragerødivttasvuotnaoverhallasteinkjerxn--hnefoss-q1askedsmokorsettromsøxn--dyry-iravestre-totenmuseumxn--sandnessjen-ogbrahkkeravjufylkesbiblbájddarbajddarxn--laheadju-7yarennesøyxn--koluokta-7ya57hxn--hgebostad-g3aleirfjordstorfjordbalsfjordbåtsfjordbatsfjordmuosátbievátloabátkárášjohkanøtterøyxn--mjndalen-64anordkappláhppilahppialstahaugsiljanverranrøykenroykenhaldenlyngenbergenhortenhønefosshonefosstroandinbeiarnvarggatosoyroosøyrotromsoidrettmuosatbievatruovatloabatvoagattynsetnessetxn--indery-fyaskánitskanitraholtråholtxn--ystre-slidre-ujbandebusarpsborgbearduxn--karlsy-fyahordalandjorpelandjørpelanddeatnuringsakersør-odalsor-odalxn--slt-elabringerikeaudnedalnittedalnissedalhemsedalslattumsurnadalxn--blt-elabelverumstjørdalnaustdalhjartdalgjøvikfyresdalhasviknarviklarvikgjovikmalvikgamviklenvikporsgrunnstjordalengerdaldrobakdrøbakxn--msy-ula0hvestvagoyxn--vgan-qoaxn--ryken-vuaxn--lten-graxn--stfold-9xaxn--hpmir-xqaxn--lury-iramálatvuopmimalatvuopmitysværkirkenesbirkenesmoskenesbáidárxn--fjord-lraxn--rdal-poabahcavuotnabáhcavuotnaxn--frde-gralindåsbearalvahkixn--hobl-iraráhkkerávjuxn--loabt-0qavågåáltábodøsundlundraderådeetnetimeholeauregrueoddavagavegaranatanaarnasolasulaaltalekafusavangbergkvamåmliamlibokntinnroangranosenoslobodorøstroststatåmotamotivguprivøyeroyerliermossvossxn--nvuotna-hwalusterlunnermarkerhábmerhabmerhvalerfjalerxn--rholt-mratysvarbaidarfitjargaularhápmirhapmirmelhusfosnesøksnesoksnestysneshemnesevenesflesbergeidsbergtonsbergtønsberglindasxn--sndre-land-0cbnamsosxn--srum-graøystre-slidreoystre-slidrevestre-slidretrondheimbalestrandxn--langevg-jxaaustrheimxn--skjk-soavagsoyaveroysandoykarmoyfinnoytranoyvestbytranbysykkylvenxn--hyanger-q1aspjelkavikandasuoloxn--fl-ziaxn--drbak-wuastathellexn--sr-varanger-ggbtelemarkxn--bhcavuotna-s4axn--porsgu-sta26fčáhcesuolocahcesuoloakrehamnåkrehamnsandøykarmøyfinnøytranøyvågsøyaverøynamdalseidxn--lesund-huabadaddjaxn--vegrshei-c0axn--btsfjord-9zagildeskålporsanguxn--trgstad-r1anávuotnanavuotnahammerfestxn--sgne-graxn--brnny-wuacibestadharstadnarviikaevenáššivestnesgjemnessandnesagdenesrennesoyxn--avery-yuaxn--tysvr-vrabearalváhkikongsbergspydebergrandabergxn--andy-iradavvesiidaxn--krdsherad-m8aporsáŋgufredrikstadbjerkreimringeburennebuaurskog-holandnotteroyxn--vgsy-qoa0jxn--rmskog-byaskierváivelandbyglandfrolandaurlandforsandxn--bjddar-ptamidsundålesundalesundfetsundfarsundovre-eikerøvre-eikerakershusxn--moreke-juasørfoldøstfoldostfoldsorfoldhøyangerhoyangerlevangerorkangertanangerxn--vestvgy-ixa6olillesandulsteinxn--rennesy-v1agranvinskjervoyxn--klbu-woalavagisxn--h-2faxn--ryrvik-byakafjordkåfjordseljordfolkebiblxn--gjvik-wuajevnakerxn--kfjord-iuabudejjuxn--kranghke-b0axn--davvenjrga-y4axn--rland-uuaxn--ldingen-q1axn--mlselv-iuaxn--rady-iraxn--linds-prabrumunddalxn--ygarden-p1amo-i-ranaeidskogrømskogromskoghjelmelandxn--finny-yuaxn--sr-odal-q1axn--skjervy-v1aballangenkvanangenkvænangengratangenxn--hmmrfeasta-s4acvossevangensuohkanxn--rde-ulaxn--mli-tlaxn--ksnes-uuanordlandskanlandskånlandsortlandfuoiskuxn--rros-graxn--hcesuolo-7ya35bxn--eveni-0qa01gagaivuotnagáivuotnaxn--seral-lradrammenmodalenmosjoenjan-mayentorskensteigengloppenxn--snes-poamatta-varjjatxn--sr-fron-q1aomasvuotnajessheimbådåddjåxn--krager-gyaxn--kvfjord-nxaxn--asky-iraxn--snase-nraxn--bidr-5nacholtålenxn--vads-jraxn--jlster-byamosjøenxn--rst-0nastavernxn--ostery-fyaxn--oppegrd-ixaxn--sknit-yqaxn--risa-5naoppegårdskiptvetrendalenholtalenxn--mot-tlaxn--lhppi-xqaxn--holtlen-hxaxn--srreisa-q1akopervikxn--muost-0qaxn--bmlo-grahokksundkvalsundegersundxn--karmy-yuaullensakerxn--hylandet-54axn--kvitsy-fyaxn--bod-2nalangevågberlevågkristiansandxn--rsta-frahornindalstjørdalshalsenstjordalshalsensandnessjoenhámmárfeastaxn--lrdal-srasør-fronsor-fronnord-odalkristiansundmátta-várjjatvestvågøynesoddennotoddenbuskerudøygardenoygardensalangenlavangenralingenrælingenlodingenlødingenleaŋgaviikalaakesvuemieleangaviikauenorgexn--srfold-byaaskvollxn--rskog-uuaxn--nry-yla5gxn--vry-yla5ghammarfeastaxn--rhkkervju-01afxn--givuotna-8yakommunekrokstadelvanedre-eikerhagebostadhægebostadxn--berlevg-jxakviteseidxn--s-1faxn--l-1faxn--nmesjevuemie-tcbafuosskomoårekemoarekexn--lt-liacxn--jrpeland-54asvalbardoppegardholmestrandtvedestrandsogndalsokndalarendalsunndalfolldalxn--krjohka-hwab49jlyngdaletnedalnorddalsaltdalgausdalskedsmovaksdalgjesdalstordalxn--frya-hraaarbortedrangedalxn--smna-graaurskog-hølandxn--vg-yiabtjeldsundhaugesundlindesnesxn--mre-og-romsdal-qqbxn--dnna-gradynmerseineshacknetenterprisecloudmineaccomaorimāoriorgmilcriiwigennetschoolhealthkiwigovtgeekxn--mori-qsacloudnsparliamentcomedorgcompronetedugovmuseumwebsitekinservicebarsywebsitebuildereerobookheimdnsleapcelleero-stagetechcrscsslorigingohomecdbedeeeiemesecabgngilnlalplchfisiincnnoroptatitmtltruauhulumkdkukskjplvtrgrfrkrhrusesismycynzcznetinteduassoososcloudstgbetaaezaeuhkusjshatenadiarycdn77hoptozaptois-a-knightmyftpno-ipjpnddnssdpdnsspdnsbarsysweetpepperis-a-bruinsfanis-very-sweetservegameis-a-soxfanhomelinuxcdn77-secureservebbsmisconfusedwebredirectblogsitefreedesktopcouchpotatofriestoolforgeaccesscamis-lostreadmyblogsmall-webfedorapeopleserveftpis-a-celticsfanmywirepotagertwmailin-dslsellsyourhomeread-booksfreeddnscable-modemis-savednflfanufcfanmlbfanstuff-4-saleendoftheinternetin-vpnmy-firewallhomeftpis-localis-a-chefboldlygoingnowherewebhopselfipkicks-assroxatunkcamdvrfedoraprojectgotdnsdvrdnsdyndnspubtlspimientahomeunixdontexistfedorainfracloudwmflabsfspagesbmoattachmentsteckidsfamilydsdnsaliasdynaliasnow-dnscloudnsdoomdnsduckdnsblogdnshomednsroutingthecloudendofinternetdsmynasip-dynamicpoivronhttpbinmyfirewallis-very-evilmysecuritycamerais-a-linux-userwmcloudis-a-geektuxfamilyis-a-candidatedoesntexistis-very-badhobby-sitegame-hostaltervistais-foundis-a-patsfandnsdojohepforgepodzonedynservcollegefanis-very-goodfrom-meis-very-niceisa-geeknerdpolacmedsldingorgcomnomgobabonetedupleskaemhlxmyboxrockyprvcydeuxfleurspdnscodebergheyflowstatichostorgmilcomnomgobneteduorgcomeduiorgmilcomngonetedugovcloudns1337ngrokacorggogfamcomwebgobnetedugokgopgkpgovgosbizpasaugumicsopozpapuwmwsrprusiskwpspkppspkmpspokeoiawsawifoumsdnskokwpmuppuppsppiwwiwoowuzswkzoschrzpisdnwzmiuwwitdpssewsseumigugimoirmpinbwinbwiihupporzgwgriwupowwskrwioswuozstarostwokonsulattmpccopruszkowmyspreadshopostrodakartuzyopolegminamediaustkazgorajgoraolawailawalomzawloclradombytomjaworznotargilubinkoninzagantorunkutnokepnonakloczestsopotsanokturekplockslasksklepzarowlukowmedaidgdaorgmilrelcomnomatmgsmartneteduelkgovwawsossexbiztgorysejnytychypomorzeboleslawiechomesklepsdscloudunicloudzakopanelegnicarawa-mazbydgoszczswidnikkrasnikwloclawekbielawamragowograjeworealestatebeskidykaszubymalopolskaprzeworskswiebodzinlecznadfirmaszkolawarmiagdyniamiastakazimierz-dolnymalborkswidnicadlugolekaostrolekapodlasieelblagtravelsimplesitezachpomormielecszczecinnieruchomosciwalbrzychlezajsklublinbedzinpoznanwielunmielnooleckostarachowicedkontopowiatwroclawrybniksuwalkileborkslupskgdanskostrowwlkptarnobrzegtourismwegrowkrakowglogowyou2pilanysamailwrocinfoagroautobeepshopprivlapypiszlodzcfolksecommerce-shopmazurypulawyskoczowrzeszowpomorskiezgierzkaliszolkuszlowiczostrowiecsosnowiecmazowszewodzislawbialowiezazgorzeleckatowicepabianicejelenia-gorawolominkarpaczsieradznowarudaczeladzkonskowolaskierniewiceswinoujscieturystykabieszczadycieszynketrzynolsztynbialystokbabia-goraprochowicewarszawastalowa-wolapolkowicegorlicegliwiceponiatowalimanowalubartowaugustowkobierzyceopocznognieznoszczytnokolobrzegshoparenapodhalebielskoklodzkostargardatwithplayitownnamecoorgnetedugovacorgcomproestnetedugovbiznameislaprofinforechtngrokmedaaaacacpaenglawjurbarbarsykeeneticavocatacctcloudnsorgcomsecplonetedugov123paginaweborgcomnetintedugovnomepublidkinbarsygovx443cloudnsorgmilcomnetedugovcooporgmilcomschnetedugovnamecomcannetlibassoaemclantmcontstoreorgcomnomrecwwwbarsyfirminfoshopartsstackitmyddnswebspacelima-cityacincooxorgedugovbarsybrendlyhbvpsvpsspectrumlandinghostingacppmordoviamcprecbgorgmilcomspbnetintedumsknovgovbirrasmcdirmytismircloudvladimirnalchikadygeyamarinepyatigorskmyjinobashkiriaeurodirvladikavkazna4ugroznykustanaikalmykiacldmaildagestaniranbuildcanvaliaravalwixdevelopmentappwritemigrationneedleverceldatabasestackitcodereplravendbonporterlovableaccoorgmilnetgovcoopmedorgcompubschnetedugovservicemecomygovorggovtvmedorgcomnetedugovinfoedgfacbmlonihkutwpsryxzbdtmacfhppmyspreadshopbrandpartiorgcomfhvpress123minsidaitcouldbeworlanbibkommunalforbundfhskiopsyskomvuxkomforbnaturbruksgymnloginlineorgcomnetedugovenscaledeuusentbotdaorgmilcomnetgovnowteleporthashbangplatformlovablebarsyshopwarebasehoplixbarsyonlinemsf5gitappgitpagecofigma-govcaffeinefigmacanvasoltstputerbarsysupportchatgptsquareomniweopensocialcpanelnotionnovecorewpsquaredpreviewjelecyonbyensrhtfastvpspieboxconvexjouwwebheyflowplatformshloginlinemadethissourcecraftclouderaorgorgcomartedugouvunivmeorgcomnetedugovsurveysstatichfheiyuxs4allprojectmyfastubervibehostapp-ionosdeployagentmecoorgcomschnetedugovbizcncostoreorgmilcomneteduembaixadaconsuladokiraranohoprincipesaotomeheliohobarsystorebaseshopwaresellfyabkhaziavologdamordoviapenzalenugsochinavoiexnetspbmsknovnorth-kazakhstanashgabadkareliaarmeniageorgiavladimirnalchikivanovobukharaadygeyakhakassiakalugakrasnodarjambylaktyubinsktroitskbryanskobninskkurganazerbaijanpokrovskbashkiriatselinogradvladikavkazmurmansktulatuvamangyshlaktashkentchimkentgroznykaragandatermezarkhangelskkustanaikalmykiabalashoveast-kazakhstankaracoldagestantogliattibarsyredorgcomgobedumirenknightpointaccoorgjelasticdiscoursecleverappsschacmiincogoornetonlineshopcogoorgmilcomwebnicnetintedugovbiznametestcoorgmilcomnomnetedugovorangecloudpersoindorgcomfinnatnetgovensmincomtourismintlinfox0611oyaorgmilcomnetedugovquickconnectvpnplusnettprequalifymeaddrmyaddrntdllwadlnctvavdrk12orgmilpolbeltelcomwebgennetedutskkepgovbbsbiznameinfocoorgmilcompronetedugovbiznameinfobetter-thanworse-thansakurafromdyndnson-the-webmymailerorgmilurlcomneteduidvgovmydnsgameclubebizmeneacsccogotvorhotelmilmobiinfovodteiflgplkmsmsbcckhincndnvncoztltmkckppzpdprvcvkvlvcrkrkscxuzchernovtsyrivneyaltaodesavolynrovnolutskltdinforgcomnetedugovbizvinnicazhitomirternopilpoltavakropyvnytskyizaporizhzhiasevastopolsebastopoluzhgoroduzhhorodkharkovkharkivvinnytsiakhmelnytskyizaporizhzhecrimeaodessazhytomyrnikolaevcherkassydonetskluganskluhanskkirovogradivano-frankivskchernivtsikrymkievkyivlvivsumyzakarpattiamykolaivcherkasychernigovkhersonchernihivdnipropetrovskdnepropetrovskkhmelnitskiyneacsccogoorusorgmilcomedugovvmdhmyspreadshopadimono-ipbarsybytemarkbarsyonlinelayershiftnh-servretrosnubapicampaignservicelugaffinitylotteryweeklylotteryraffleentrygluglugsmeaccoindependent-inquestnimsitecopropymntltdorgplcschnetgovnhsbarsyindependent-commissionindependent-reviewpolicepublic-inquiryindependent-panelconnhospindependent-inquiryroyal-commissionoraclegovcloudappscck12libccphxcclibpvtparochchtrcck12libcceatonk12coglibtecgendstmusann-arborwashtenawcck12glghcck12sealibforksolympiabainbridge-islkeyporthoquiamyarrow-pointcentraliaport-townsendsequimport-ludlowrentonsilverdalebremertonredmondsheltonbellevueport-orchardport-angeleskingstonchehalisaberdeengig-harborseattlepoulsboidmdndsddemenegacalamaiavawapailalflnmdcncscohnhmihiviwiriinmntnmocoutvtctmtgunjokakwvnvprarorasmskstxwynykyazisadninsnngosrvis-bymircloudservernamepointtoenscaledland-4-salefreeddnsstuff-4-saleazure-apinoipcloudnsgolffanheliohostazurewebsitesgvorgmilcomgubneteducoorgcomnetd0egvorgmilcomnetedugovmydnsiacostoree12orgmilcomnomwebgobbibrectecnetintedugovraremprendefirminfoartseducok12orgcomnethidnsidacaiiosonlahanamhanoicamauhueorgcompronetintedugovbizbacninhtayninhhoabinhnamdinhtravinhhaiphongvinhlonghaiduongquangnamquangtrithuathienhuequangninhbacgianghaugiangquangbinhsoctrangbentrethanhphohochiminhdanangkontumhatinhkhanhhoathanhhoahealthgialailaocaiyenbaibackanngheanlonganphuyenphuthocanthodaklakdongnainameinfovinhphucdongthapkiengiangtiengiangquangngailaichaulangsonlamdongdaknonghagiangangiangcaobangbinhduongninhthuanbinhthuanbaclieuthaibinhninhbinhbinhdinhtuyenquanghungyenbaria-vungtauthainguyendienbienbinhphuocschbizputerimagine-proxyorgcomnetedugovcloud66advisormypetsdyndnsxn--8dbq2axn--4dbgdty6cxn--5dbhl8dxn--hebda8bxn--80auxn--d1atxn--c1avgxn--o1acxn--o1achxn--90azhxn--55qx5dxn--uc0atvxn--od0algxn--wcvs22dxn--gmqw5axn--mxtq1mxn--12c1fe0brxn--h3cuzk1dixn--12co0c3b4evaxn--12cfi8ixb8lxn--o3cyx2axn--m3ch0j3axn--j1adpxn--90amcxn--90a1afxn--h1ahnxn--j1ael8bxn--h1alizxn--c1avgxn--j1aefxn--80aaa0cvacxn--41acaffeineexeopentunnelbotdashtelebitorgtmaccoagricorgmilnomwebnicngonetaltedugovlawnisschoolgrondaraccoorgmilcomschnetedugovbizinfoprg1-zeropstritonstackitlimazeropsaccoorgmilgovяспборгкоммскбизмирсамаракрымсочиакодпроргобрупрצהלממשלישובאקדמיהองค์กรธุรกิจรัฐบาลศึกษาทหารเน็ต教育網絡組織公司政府個人닷넷한국澳门新闻澳門联通家電嘉里招聘通販닷컴삼성コムგეбгрфеюadcdbdgdidmdsdtdaebedeeegeiejekemenepereseveyegabacalamanauavapaqasazacfbfafgfnfpfwftfbgcgagggegkgngmgsgpgvgtgugilmlnlalclglplsltlhmimjmkmmmomambmcmdmfmgmzmpmsmtmgbbblbsbecccacnclcmcvctcscmhkhghchbhthphshlinikifigiaibicivisikninhnmncnbngnsnpnvntnjoionomobocoaofodorosotoptstttytatbtetgtithtmtltrusuvuaucueuguhulumunufjdjbjtjsjlkmkhkfkdkcktkukskpkgpmpnpkpjpgqaqmqiqsvtvcvbvmvlvrwpwtwzwbwcwawgwkwmwtrsrprgrfrercrbrarnrmrlrkrirhrwsusrssspsgsesbsaslsmsissxmxaxcxuypysylymykygybycyuztzsznzmzkzdzczbzazελευ世界台灣购物公益点看臺灣网络書籍在线网站手机机构大拿游戏信息台湾谷歌慈善商标香港中国餐厅网址中國商城食品微博政务移动集团公司八卦商店健康网店政府时尚佛山中信娱乐广东企业homedepotengineeringاماراتrepublicankuokgroupversicherungchannelcitadelxn--pgbs0dhxn--b4w605ferdstatebankwebsitexn--mgb9awbf亚马逊淡马锡alibabaxn--ngbc5azdxn--mgbbh1axn--45br5cyltoshibabuildworldcloudtradeguideplacespacedancemoviephoneprimesmilebiblestyleappleazurestoreskypegripexn--l1accdrivelottehorsehouseleasechasereisestadahondaomegaaetnaamicaninjanokiamediadeltavodkaedekaosakapizzaslingemailgmailtirolshelltmallfinallegaltotalhotelamfamforumrehabmusicciticricohcoachwatchboschearthfaithirishmiamiarchidubaiguccipraxiみんなストアセールcanonsalononionnikonepsonkoelngreensevencrownikanoradioaudioweiboglobopromogalloyahoociscorodeovideomangobingotokyovolvolottokyotophotosmartsportquesttrusthyattjetztadultcymrubaidutushuxn--kprw13dubankclickblackmerckgroupsharpcheapnowtvxn--h2brj9cקוםհայоргсрбмонкомбелмкдқазрусукрمصرقطرعربكومdadcfdmedwedredphdthdbidpidkrdmsdltdiceonewmeglemoerwecfageacbanbambaaaammakianraspacpaaxawtfbcgaegongingaigvigorgdogdhlmilrilonlaolloluoljllcalgalnflafltelsrlfrllplkimibmcamcombommomifmabbjcbscbcabnabtabmlbpubabcbbcnecincpncllcstcwtcpwcnyckfhbzhovhmoiskiobisbitcifyituipinvinwinxincbnbcnmanfangdnmenrenkpnmtnyunrunfununobiojioriohbogmofooboooooacoecoceongoproartistottnttbbtcateatlatvetpetbetnethktmitfitintjothotgotdotbotprueduicujnjyouinknhktdkappsapgapmapdnptopgopllpjmpzipvipripesqtrvdtvitvdevmovgovhivnrwlawsewnewbmwwownowhowdvrftrmtrsfrbarcartvscrseusawsupsubssbsadsddsldssasbmsmlsxxxboxfoxgmxtjxsextaxbuyflydiysoyjoyskypaydaygayxyzanzbizwebersenerpokerlameractortatarsolarລາວคอมไทยtourslocusnexuslexusgiftsbeatsboatspartspressglassswissकॉमनेटtiresgivescodeshomesgamestunesshoescardswalesloansvegastoolsdealsautosparisファッションworkssucksrocksxeroxforexfedexpartylillymoneystudyrugbytoraytoday中文网xn--unup4y天主教飞利浦新加坡enterprises我爱你嘉里大酒店christmasxn--fct429kholdingsxn--8y0a063axn--mgbx4cd0ablifestyleabogadoallstatenetbankكاثوليكxn--s9brj9cxn--gk3at1ebestbuycharityxn--55qx5dmicrosoftpropertybasketballhomegoodscorsicajewelrygallerygrocerysurgerycountrybrusselsverisignferreroxn--czr694bhdfcbankcommbanksoftbankپاكستانپاکستانnextdirectالسعوديهالعليانxn--h2brj9c8cxn--80adxhksshikshaxn--mgbai9azgqp6jcuisinellabarclayscatholicxn--kpry57dcompanyxn--xhq521bblackfridayxn--mgba3a3ejtsandvikxn--d1acj3bacademydownloadمليسياxn--j1amhxn--w4r85el8fhu5dnraipirangaathletaxn--fhbeixn--mgbqly7cvafrzuerichxn--c2br7gஇலங்கைcontractorsxn--io0a7igraphicsinsurancetemasekxn--xkc2al3hye2amotorcyclesphotographydirectoryplumbingxn--vhquvclothingtrainingcleaningwilliamhilllightingxn--mgba3a4f16ashoppingcateringeducationokinawapicturesventuresproductionsxn--9et52uwalmartഭാരതംsupportrealestatecapitalonexn--nqv7fs00emaauspostfloristdentistxn--qxamgodaddybradescobargainsmitsubishikerryhotelsxn--9dbq2axn--3pxu8kimmobilienxn--fjq720axn--mgbtx2bholidaymckinseymadridbusinessbuildershelsinkixn--4gbrimмоскваالسعودیةcoffeedegreelacaixapartnersalsaceofficeabbvievoyageorangegeorgeonlinechromemobilekindlegoogleoraclecircleschulesecureinsurexn--mgba7c0bbn0aestatexn--mgbc0a9azcgcruisehangoutxn--vuq861bxn--42c2d9arexrothfirestoneuniversityxn--nnx388alifeinsuranceextraspaceонлайнvermögensberatersoftwarexn--fiqs8sxn--mgbab2bdxn--w4rs40ltiendaभारतम्africatoyotaotsukasakuracameracreditcardnagoyaconsultingnetworkjunipertheatermonsterprogressivepioneerxn--55qw42gracingdatingvotingvikinglivinggivingxn--bck1b9a5dre4cbrotherweatherjoburgفلسطينlplfinancialxn--clchc0ea0b2g2a9gcdfutbolschoolsocialglobaldentalwoodsidechanelairtelmatteltravelrealtorwebcamstreamభారత్unicomalstomxn--nodexn--6frz82gmuseumfurniturexn--rvc1e0am3exn--mix891faccenturexn--11b4c3dismailineustardiscountquebeccomsecclinicservicesxn--y9a3aqxn--c1avgswatchchurchsearchالاردنmarketingcontacthealthmonashshoujisanofitaipeiamericanexpresssuzukiアマゾンクラウドポイントbhartiグーグルxn--mgberp4a5d4armemorialxn--1qqw23alondonmormoninstitutevisionbostonnortoncouponmaisonamazonvirginberlindesigndurbanolayannissananquanxihuanhitachikaufengardenreisenbayerntechnologydatsunxn--90a3aclatinocasinostudiophysioxn--ngbe9e0apharmacytattootaobaoaramcoexpertreportabbottdirectselectimamatfairwindspictettargetmarketintuittravelersinsurancecreditdupontryukyusuppliesxn--tckwebnpparibasschmidtmerckmsdyodobashirestaurantbridgestonecricketxn--fpcrj9c3dbostikbroadwayattorneylefrakemerckxn--fiq228c5hscareersfarmerswinnersflowersxn--wgbh1cguitarsxn--54b7fta0ccxn--p1acfmakeupgalluplandroverxn--kcrx77d1x4agoldpointbauhausxn--mgbayh7gpahiphopplaystationxn--mgba3a4fraxn--eckvdtc9dhyundaixn--gckr3f0fistanbulticketsmarketsflightschintaireviewsxn--3e0b707ewindowsxn--fiqz9sfinancialxn--fzys8d69uvgmابوظبيdiscoverreviewবাংলাxn--5su34j936bgsgmoscowobserverapartmentsдетиارامكوсайтeurovisionxn--i1b6b1a6a2exn--xkc2dl3a5ee0hتونسموقعبارتڀارتشبكةعمانبيتكعراقreadkredbondlandbandfundfoodprodgoldfordtubecafesafelifeggeeieeefreefagepagegugezonewinememenamegamesaleablebikenikelikecarecbreherefiresaveloveliveblueartedatesitevotecaseluxebofamodaltdaasdatiaayogasinavanashiaasiajavabbvatevavivadatazaraarpacasavisasncfprofmaifsurfgolfdvagsongbingpingwangkpmggoogblogpohlfailcooldellcalldeallidlsarlfilmteamroomfarmimdbarabclubhdfcicbchsbcgmbhrichtechfishdishcashminiernikddiaudiwikimobitaxicitikiwidesiqponskinloanakdnwienopenporncerntownimmolimoolloinfonicofidolegosaxozeroaerovivoautovotomotofastbestresthostpostnextlgbtchatseatgiftmeetdietreitmintrentgentspotscotguruitausohumenucyoubanklinkpinkdclktalksilkbookseekworkrsvpaarpjeepshopcoophelpcamppccwshowbeerstarruhrflirweirhaircarsparsjprshausplusnewstipstoysjobskidsfanspicsdocsxboxamexsexynavycitysonyarmyallybabyplaydeliverybuzzgbizlamborghiniphilipsලංකාಭಾರತfitnessexpresslanxesspfizercenterwalterlawyersoccercareerkosherbrokerlockerdealerdoctorauthorxn--mgbqly7c0a67fbcvermögensberatungjaguarxn--pssy2uxn--hxt814eflickrrepairrogersairbusxn--mgbai9a5eva00beventsyachtsxn--t60b56aভাৰতভারতभारतभारोतviajeshermeshughesxn--j1aefसंगठनvillasଭାରତclaimshotelsભારતzapposphotosjuegoscondostatamotorsgratistennisਭਾਰਤtkmaxxtjmaxxschaeffleryandexxn--80aswgrealtysafetybeautyluxuryxn--3ds443gsupplyfamilyxn--o3cw4hhockeysydneyxn--90aenissayalipayenergycomputeragencyxn--rovu88b電訊盈科xn--gecrj9cstatefarmaccountantaquarelleolayangroup香格里拉xn--p1ai组织机构xn--1ck2e1bxn--mgbt3dhdschwarzموريتانياabudhabinowruzkomatsufujitsuhospitalxn--80asehdbxn--mgbtf8flxn--j6w193gxn--yfro4i67oprudentialxn--flw351ecruisescoursesrecipesxn--e1a4cferrarixn--ses554gxn--wgbl6awatchesstaplessinglesxn--mgbcpq6gpa1axn--otu796dpropertiescreditunionxn--mgbah1a3hjkrdstockholmhisamitsuالسعوديةstcgroupdomainsoriginscouponsbloombergclubmedfroganslimitedxn--80aqecdr1aexposedinternationalequipmentbarclaycardxn--q7ce6axn--mgbi4ecexpprotectionassociatesconstructionxn--cck2b3bxn--45q11candroidfoundationישראלxn--mgbca7dzdocliniqueboutiqueengineerxn--qxa6asystemsfirmdalefashionauctionxn--nqv7finfinitirentalsreliancetradingweddingfishinghostinggentingbookingcookingxn--3hcrj9cgraingerxn--czrs0tdemocratsamsungyokohamaxn--h2breg3evexn--nyqy26alundbeckmelbournevacationssolutionsfrontierxn--vermgensberatung-pwbmanagementxn--cg4bkixn--mgb2ddeslincolnhamburgsandvikcoromantblockbusterairforcebarefootxn--4dbrk0ceinvestmentsfeedbackcommunityxn--ngbrxالبحرينdiamondsamsterdamhealthcareredumbrellaxn--mxtq1mxn--2scrj9cagakhanxn--mgbpl2fhкатоликcaravanசிங்கப்பூர்richardlimortgageamericanfamilyxn--fzc2c9e2cscholarshipssaarlandxn--imr513nvlaanderensamsclubgoodyearkitchenஇந்தியாweatherchannelallfinanzxn--kput3iالسعودیۃxn--90aisxn--efvy88hالجزائرxn--mgbaam7a8hexchangejpmorganxn--tiq49xqyjfidelitysecurityxn--mk1bu44cwanggouxn--fiq64bxn--6qq986b3xlxn--mgbbh1a71exn--80ao21amarshallsxn--5tzm5gtravelerspanasoniclatrobeyoutubeaccountantsxn--rhqv96gxn--cckwcxetdanalyticsxn--ygbi2ammxبازاربھارتسوريةorganicfreseniusسورياxn--9krt00axn--qcka1pmcxn--jlq480n2rgdeloittesciencefinancexn--jvr189mxn--30rr7yhomesensehotmailbaseballfootballleclercboehringerxn--q9jyb4cxn--mix082fاليمنهمراهpolitieسودانايرانایرانnetflixyamaxunxn--lgbbat1ad8jcollegestoragecapetowncolognekerrypropertiesxn--mgbgu82axn--ogbpf8flxn--czru2dwhoswhociprianilasallexn--g2xx48cforsalebanamexaudiblexn--vermgensberater-ctbxn--zfr164bericssonvanguardxn--45brj9cindustriestheatremarriottxn--3bst00mcomparexn--mgberp4a5d4a87gcapitaldigitalالمغربbarcelonashangrilaxn--d1alfcalvinkleinwwwcitysapporokawasakinagoyasendaikobekitakyushuyokohamackjp",vz=621,xz=625,a2=ls.length,n2=eu.length,i2=new Uint32Array(n2),Hc=new Uint32Array(n2),Lp=new Int32Array(a2).fill(-1);for(let e=0,n=0;e<a2;e+=1)for(let s=Wc[e];s<Wc[e+1];s+=1){i2[s]=n;const r=n+eu[s];let u=5381;for(let f=r-1;f>=n;f-=1)u=u*33^Vp.charCodeAt(f);Hc[s]=u>>>0,eu[s]===1&&Vp.charCodeAt(n)===42&&(Lp[e]=s),n=r}let qn=-1,Up=0,Gp=0;function lb(e,n,s,r){if(eu[e]!==r)return!1;const u=i2[e];for(let f=0;f<r;f+=1)if(Vp.charCodeAt(u+f)!==n.charCodeAt(s+f))return!1;return!0}function cb(e,n,s,r,u){let f=Wc[e],g=Wc[e+1];for(;f<g;){const b=f+g>>>1,x=Hc[b];if(x<n)f=b+1;else if(x>n)g=b;else{for(let k=b;k>=f&&Hc[k]===n;k-=1)if(lb(k,s,r,u))return k;for(let k=b+1;k<g&&Hc[k]===n;k+=1)if(lb(k,s,r,u))return k;return-1}}return-1}function ub(e,n,s){let r=n,u=e.length,f=5381;qn=-1;for(let b=e.length-1;b>=0;b-=1){const x=e.charCodeAt(b);if(x===46){const k=b+1;let S=cb(r,f>>>0,e,k,u-k);if(S===-1&&(S=Lp[r]),S===-1)return qn!==-1;r=rb[S],(ls[r]&s)!==0&&(qn=r,Up=k,Gp=u),u=b,f=5381}else f=f*33^x}let g=cb(r,f>>>0,e,0,u);return g===-1&&(g=Lp[r]),g!==-1&&(r=rb[g],(ls[r]&s)!==0&&(qn=r,Up=0,Gp=u)),qn!==-1}function s2(e,n,s){if(bz(e,n,s))return;const r=(n.allowPrivateDomains?2:0)|(n.allowIcannDomains?1:0);if(ub(e,xz,r)){s.isIcann=(ls[qn]&1)!==0,s.isPrivate=(ls[qn]&2)!==0,s.publicSuffix=e.slice(Gp+1);return}if(ub(e,vz,r)){s.isIcann=(ls[qn]&1)!==0,s.isPrivate=(ls[qn]&2)!==0,s.publicSuffix=e.slice(Up);return}s.isIcann=!1,s.isPrivate=!1;const u=e.lastIndexOf(".");s.publicSuffix=u===-1?e:e.slice(u+1)}const tu=yz();function kz(e,n){return e2(tu),t2(e,0,s2,n,tu).hostname}function wz(e,n){return e2(tu),t2(e,5,s2,n,tu).domainWithoutSuffix}const Sz={allowPrivateDomains:!0};new nz({fuzzyLink:!0,fuzzyEmail:!1}).tlds(iz);function gu(e){if(e==null)return null;const n=e.trim();if(!n)return null;const s=kz(n);return s?s.replace(/^www\./i,"").toLowerCase():null}function jz(e){return e==null||e.trim()===""?"":wz(e,Sz)?.toLowerCase()??""}const Az=new Intl.Segmenter("en",{granularity:"word"}),Cz=/[\p{L}\p{N}]+/gu,Nz=/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}]/u,_z=new RegExp("\\P{ASCII}","u");function zz(e){if(!_z.test(e))return e;let n="";for(const s of e){if(s.charCodeAt(0)<128){n+=s;continue}const r=s.normalize("NFD"),u=r[0];n+=r.length>1&&Nz.test(u)?u:s}return n}function Dz(e){return zz(e.normalize("NFKC")).toLocaleLowerCase("en")}function Ez(e){const n=[];for(const s of Az.segment(e))if(s.isWordLike)for(const r of s.segment.match(Cz)??[])n.push(r);return n}function Tz(e){return Ez(Dz(e))}function cs(e){return Tz(e).join("")}const o2=A(["cli","api","config-file"]);function Rz(e){const n=new Set,s=new Set;for(const r of e){if(n.has(r.label)){s.add(r.label);continue}n.add(r.label)}return[...s]}function Oz(e,n){return n?e.some(s=>s.label===n):!0}const Bz=p({displayName:o().min(1),canonicalDomain:o().min(1),ownedDomains:y(o().min(1)).optional(),aliases:y(o()).optional(),country:o().length(2),language:o().min(2),tags:y(o()).optional(),labels:Ie(o(),o()).optional(),providers:y(ft).optional(),providerModels:C0.optional(),locations:y(la).optional(),defaultLocation:o().nullable().optional(),measurement:_0.optional(),autoExtractBacklinks:_().optional(),configSource:o2.optional()});Bz.extend({name:o().trim().min(1).max(120)});const qz=p({id:o(),name:o(),displayName:o().optional(),canonicalDomain:o(),ownedDomains:y(o()).default([]),aliases:y(o()).default([]),country:o().length(2),language:o().min(2),tags:y(o()).default([]),labels:Ie(o(),o()).default({}),providers:y(o()).default([]),providerModels:C0.default({}),locations:y(la).default([]),defaultLocation:o().nullable().optional(),measurement:_0.default(Jx),autoExtractBacklinks:_().default(!1),configSource:o2.default("cli"),configRevision:m().int().positive().default(1),createdAt:o().optional(),updatedAt:o().optional()});p({id:o(),query:o(),createdAt:o()});p({id:o(),keyword:o(),createdAt:o()});p({queries:y(o().trim().min(1)).min(1)});p({keywords:y(o().trim().min(1)).min(1)});p({provider:ft,count:m().int().min(1).max(20).optional()});p({id:o(),domain:o(),createdAt:o()});p({competitors:y(o().trim().min(1)).min(1)});function $p(e){return gu(e)??e.trim().toLowerCase().replace(/^www\./,"")}function Mz(e){const n=[e.canonicalDomain,...e.ownedDomains??[]],s=new Set,r=[];for(const u of n){const f=u.trim();if(!f)continue;const g=$p(f);s.has(g)||(s.add(g),r.push(f))}return r}const Pz=p({name:o().min(1).max(63).regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,{message:"Name must be a lowercase slug (letters, numbers, hyphens)"}),labels:Ie(o(),o()).optional().default({})}),Iz=p({preset:o().optional(),cron:o().optional(),timezone:o().optional().default("UTC"),providers:y(ft).optional().default([]),enabled:_().optional()}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'}).optional(),Vz=p({channel:O("webhook"),url:o().url(),events:y(N0).min(1)}),Lz=p({gsc:p({propertyUrl:o()}).optional(),syncSchedule:p({preset:o().optional(),cron:o().optional()}).optional()}).optional(),db=y(o().min(1)),Uz=p({displayName:o().min(1),canonicalDomain:o().min(1),ownedDomains:y(o().min(1)).optional().default([]),aliases:y(o().min(1)).optional().default([]),country:o().length(2),language:o().min(2),queries:db.optional(),keywords:db.optional(),competitors:y(o().min(1)).optional().default([]),providers:y(ft).optional().default([]),providerModels:C0.optional().default({}),locations:y(la).optional().default([]),defaultLocation:o().optional(),measurement:_0.optional().default(Jx),schedule:Iz,notifications:y(Vz).optional().default([]),google:Lz,autoExtractBacklinks:_().optional().default(!1)}).superRefine((e,n)=>{e.queries!==void 0&&e.keywords!==void 0&&n.addIssue({code:"custom",message:"Use spec.queries; spec.keywords is accepted only as a legacy alias when spec.queries is omitted",path:["keywords"]});const s=Rz(e.locations);s.length>0&&n.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${s.join(", ")}`,path:["locations"]}),Oz(e.locations,e.defaultLocation)||n.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})});p({apiVersion:O("canonry/v1"),kind:O("Project"),metadata:Pz,spec:Uz});const Gz=["branded","non-brand"],$z=A(Gz),Hz=A(["all","branded","non-brand"]),Kz=2,Qz=o().regex(/^[a-f0-9]{64}$/),yu=o().trim().min(1).max(256),mb=A(["sensitive","insensitive"]),ke=o().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),Zz=o().trim().min(1).refine(e=>gu(e)!==null,"A competitor domain must be a valid hostname"),Fz=Be("kind",[p({kind:O("exact"),url:o().min(1),pathCase:mb}).strict(),p({kind:O("prefix"),host:o().min(1),pathPrefix:o().min(1),pathCase:mb}).strict(),p({kind:O("host"),host:o().min(1)}).strict()]),Yz=p({canonicalHost:o().min(1),ownedHosts:y(o().min(1)),names:y(o().min(1))}).strict(),Xz=p({projectBrand:Yz}).strict(),Jz=p({stableKey:ke,label:o().trim().min(1),aliases:y(o().min(1)),urlMatchers:y(Fz),mentionNotApplicable:_(),discoveryIdentity:o().min(1).nullable()}).strict(),r2=p({stableKey:ke,label:o().trim().min(1),domain:Zz,aliases:y(o().min(1))}).strict(),Wz=p({stableKey:ke,label:o().trim().min(1),targetKeys:y(ke),competitors:y(r2)}).strict(),e9=A(["manual","query-set","template","discovery"]),t9=p({source:e9,sourceId:o().min(1).nullable(),capturedAt:o().datetime()}).strict(),a9=p({queryId:yu,queryText:o().min(1),provenance:t9}).strict(),n9=p({providers:y(ft).min(1),models:Ie(ft,o().min(1)),location:la.nullable()}).strict(),i9=p({stableKey:o().min(1),queryId:yu,queryText:o().min(1),context:n9,expectedSnapshots:m().int().nonnegative()}).strict(),z0=$z,s9=p({targetKey:ke,queryId:yu,queryClass:z0,executionNodeKey:o().min(1)}).strict(),o9=p({executionNodeKey:o().min(1),targetKey:ke,queryId:yu}).strict(),bu=p({schemaVersion:O(Kz),identities:Xz,targets:y(Jz),groups:y(Wz),querySnapshots:y(a9),assignments:y(s9),executionNodes:y(i9),usageEdges:y(o9),compiledChecksum:Qz}).strict().superRefine((e,n)=>{const s=new Set;for(const u of e.executionNodes)s.has(u.stableKey)&&n.addIssue({code:Ye.custom,path:["executionNodes"],message:`Duplicate execution node key "${u.stableKey}"`}),s.add(u.stableKey);const r=new Set(e.targets.map(u=>u.stableKey));e.usageEdges.forEach((u,f)=>{s.has(u.executionNodeKey)||n.addIssue({code:Ye.custom,path:["usageEdges",f,"executionNodeKey"],message:`Usage edge references unknown execution node "${u.executionNodeKey}"`}),r.has(u.targetKey)||n.addIssue({code:Ye.custom,path:["usageEdges",f,"targetKey"],message:`Usage edge references unknown Target "${u.targetKey}"`})}),e.assignments.forEach((u,f)=>{r.has(u.targetKey)||n.addIssue({code:Ye.custom,path:["assignments",f,"targetKey"],message:`Assignment references unknown Target "${u.targetKey}"`})});for(const u of e.groups)for(const f of u.targetKeys)r.has(f)||n.addIssue({code:Ye.custom,path:["groups"],message:`Group "${u.stableKey}" references unknown Target "${f}"`})}),D0=100;function wo(e){return p({items:y(e),nextCursor:o().min(1).nullable(),totalEstimate:m().int().nonnegative().optional()}).strict()}const E0=A(["no_completed_run","plan_v1","no_population","evidence_incomplete","not_applicable"]),Lt=Be("state",[p({state:O("available"),value:m(),numerator:m().int().nonnegative().optional(),denominator:m().int().positive().optional()}).strict(),p({state:O("unavailable"),reason:E0}).strict()]),T0=A(["all","group","property"]),Wa=Hz,r9=A(["label-asc","label-desc","citationCoverage-asc","citationCoverage-desc","mentionCoverage-asc","mentionCoverage-desc"]),R0=A(["not_measured","queued","running","complete","partial","failed"]),l9=A(["run_measurement","review_flags","complete_setup","republish_setup","none"]);p({scope:T0,groupKey:ke.optional(),targetKey:ke.optional(),queryClass:Wa.optional(),provider:ft.optional(),location:o().trim().min(1).optional(),from:o().trim().min(1).optional(),to:o().trim().min(1).optional(),runId:o().trim().min(1).optional(),search:o().optional(),sort:r9.optional(),cursor:o().trim().min(1).optional(),limit:m().int().positive().max(D0).optional()}).strict();const c9=p({provider:ft,mentionCoverage:Lt,citationCoverage:Lt}).strict(),u9=p({bothSignals:m().int().nonnegative(),mentionedOnly:m().int().nonnegative(),citedOnly:m().int().nonnegative(),neither:m().int().nonnegative(),notMeasured:m().int().nonnegative(),total:m().int().nonnegative()}).strict(),d9=p({targetKey:ke,label:o().min(1),mentionCoverage:Lt,citationCoverage:Lt,providers:y(c9),flags:m().int().nonnegative()}).strict(),m9=p({kind:A(["project","competitor"]),stableKey:o().min(1),label:o().min(1),domain:o().min(1),credits:m().int().nonnegative(),share:m().min(0).max(1)}).strict(),p9=p({groupKey:ke,queryClass:O("non-brand"),denominator:m().int().positive(),entries:y(m9)}).strict();p({mode:A(["active-v1","active-v2"]),scope:p({kind:T0,key:o().min(1).optional(),label:o().min(1)}).strict(),queryClass:Wa,measurement:p({state:R0,currentRunId:o().min(1).optional(),displayedRunId:o().min(1).optional(),completed:m().int().nonnegative(),expected:m().int().nonnegative(),completedAt:o().datetime().optional(),includesHistoricalData:_().optional()}).strict(),nextAction:p({kind:l9,count:m().int().nonnegative().optional()}).strict(),metrics:p({propertiesMentioned:Lt,mentionCoverage:Lt,citationCoverage:Lt,brandPresence:Lt,sov:Lt.describe("Deprecated alias of brandPresence carrying the identical value. Remove once the browser migrates.")}).strict(),properties:wo(d9),outcomes:u9,flags:p({total:m().int().nonnegative()}).strict(),namedShareOfVoice:p9.optional()}).strict();const l2=A(["sources","answers"]),h9=l2.enum;h9.sources;p({targetKey:ke,queryClass:Wa.optional(),provider:ft.optional(),location:o().trim().min(1).optional(),runId:o().trim().min(1).optional(),shape:l2.optional(),cursor:o().trim().min(1).optional(),limit:m().int().positive().max(D0).optional()}).strict();const c2=1,il=m().int().positive(),Ut=o().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),sl=o().trim().min(1).max(256),pb=A(["sensitive","insensitive"]);function au(e){const n=gu(e);if(!n)throw new Error(`Invalid measurement host: ${e}`);return n}function f9(e){const n=[];let s=!1;for(let r=0;r<e.length;r++){const u=e[r];u==="/"?(s||n.push(u),s=!0):(n.push(u),s=!1)}for(;n.length>1&&n.at(-1)==="/";)n.pop();return n.length?n.join(""):"/"}function hb(e){try{return decodeURI(e).normalize("NFC").toLowerCase()}catch{return e.normalize("NFC").toLowerCase()}}function u2(e){const n=new URL(`https://measurement.invalid${e}`).pathname;return f9(n.replace(/%[0-9a-f]{2}/gi,s=>s.toUpperCase()))}function Hp(e){const n=e.trim();if(!n||n.includes("?")||n.includes("#")||n.includes("://")||n.includes("\\"))throw new Error(`Invalid measurement path prefix: ${e}`);const s=n.startsWith("/")?n:`/${n}`;for(const r of s.split("/")){let u;try{u=decodeURIComponent(r)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}if(u==="."||u==="..")throw new Error(`Invalid measurement path prefix: ${e}`)}try{return u2(s)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}}function g9(e){const n=/^[a-z][a-z0-9+.-]*:\/\/[^/?#]*/i.exec(e);if(!n)throw new Error(`Invalid exact measurement URL: ${e}`);return e.slice(n[0].length).split(/[?#]/,1)[0]||"/"}function fb(e){const n=e.trim();if(!n||n.includes("\\"))throw new Error(`Invalid exact measurement URL: ${e}`);let s;try{s=new URL(n)}catch{throw new Error(`Invalid exact measurement URL: ${e}`)}if(s.protocol!=="http:"&&s.protocol!=="https:"||s.username||s.password||s.port||s.search||s.hash)throw new Error(`Invalid exact measurement URL: ${e}`);const r=au(s.hostname),u=Hp(g9(n));return`https://${r}${u}`}const Xr=o().trim().min(1).refine(e=>{try{return au(e),!0}catch{return!1}},"A target URL matcher host must be a valid hostname").overwrite(e=>au(e)),y9=o().trim().min(1).refine(e=>{try{return Hp(e),!0}catch{return!1}},"A target URL matcher pathPrefix must be an absolute path without query or fragment").overwrite(e=>Hp(e)),b9=o().trim().min(1).refine(e=>{try{return fb(e),!0}catch{return!1}},"A target exact matcher must be an HTTP(S) URL without credentials, port, query, or fragment").overwrite(e=>fb(e)),v9=Be("kind",[p({kind:O("exact"),url:b9,pathCase:pb}).strict(),p({kind:O("prefix"),host:Xr,pathPrefix:y9,pathCase:pb}).strict(),p({kind:O("host"),host:Xr}).strict()]),d2=o().trim().min(1).max(256).refine(e=>cs(e).length>0,"A target alias must contain mention text"),x9=Ie(o().trim().min(1),o()),k9=Xr,m2=p({stableKey:Ut,label:o().trim().min(1),urls:y(v9).min(1),aliases:y(d2),metadata:x9.optional()}).strict(),O0=p({stableKey:Ut,label:o().trim().min(1),targetKeys:y(Ut).min(1),competitors:y(k9).optional()}).strict(),p2=p({targetKey:Ut,queryIds:y(sl).min(1),context:la.nullable().optional()}).strict();function w9(e,n){return e<n?-1:e>n?1:0}function S9(e,n=s=>s){const s=new Set,r=new Set;for(const u of e){const f=n(u);s.has(f)&&r.add(f),s.add(f)}return r}function up(e,n,s,r,u){for(const f of S9(n,u))e.addIssue({code:"custom",path:[...s],message:`Duplicate ${r}: ${f}`})}function gb(e){if(e.kind==="host")return{host:e.host,pathname:null};if(e.kind==="prefix")return{host:e.host,pathname:e.pathPrefix};const n=new URL(e.url);return{host:au(n.hostname),pathname:u2(n.pathname||"/")}}function j9(e,n,s,r){return e===s||(n==="insensitive"||r==="insensitive")&&hb(e)===hb(s)}function A9(e,n){if(e.kind!==n.kind)return!1;const s=gb(e),r=gb(n);return s.host!==r.host?!1:e.kind==="host"||n.kind==="host"?!0:j9(s.pathname,e.pathCase,r.pathname,n.pathCase)}function C9(e){const n=new Set;return[...e].sort(w9).filter(s=>{const r=cs(s);return n.has(r)?!1:(n.add(r),!0)})}const h2=p({schemaVersion:O(c2),targets:y(m2).min(1),groups:y(O0).optional(),targetQuerySelections:y(p2).optional()}).strict().superRefine((e,n)=>{const s=e.groups??[],r=e.targetQuerySelections??[];up(n,e.targets.map(x=>x.stableKey),["targets"],"target stable key"),up(n,s.map(x=>x.stableKey),["groups"],"group stable key");const u=new Set(e.targets.map(x=>x.stableKey)),f=new Set(s.map(x=>x.stableKey));for(const x of u)f.has(x)&&n.addIssue({code:"custom",path:["groups"],message:`Target and group stable keys must be globally unique: ${x}`});const g=new Map,b=[];e.targets.forEach((x,k)=>{for(const S of C9(x.aliases)){const C=cs(S),j=g.get(C);j&&j!==x.stableKey&&n.addIssue({code:"custom",path:["targets",k,"aliases"],message:`Target alias is already assigned to target ${j}: ${S}`}),g.set(C,x.stableKey)}x.urls.forEach((S,C)=>{b.find(E=>E.targetKey!==x.stableKey&&A9(E.matcher,S))&&n.addIssue({code:"custom",path:["targets",k,"urls",C],message:"Target URL matcher has an equal-specificity cross-target tie"}),b.push({targetKey:x.stableKey,matcher:S})})}),s.forEach((x,k)=>{up(n,x.targetKeys,["groups",k,"targetKeys"],"group target key");for(let S=0;S<x.targetKeys.length;S++){const C=x.targetKeys[S];u.has(C)||n.addIssue({code:"custom",path:["groups",k,"targetKeys",S],message:`Unknown target: ${C}`})}}),r.forEach((x,k)=>{u.has(x.targetKey)||n.addIssue({code:"custom",path:["targetQuerySelections",k,"targetKey"],message:`Unknown target: ${x.targetKey}`})})});h2.transform(e=>({...e,groups:e.groups??[],targetQuerySelections:e.targetQuerySelections??[]}));p({expectedActiveRevision:il.nullable(),plan:h2}).strict();const N9=p({queryId:sl,queryText:o().min(1)}).strict(),B0=p({stableKey:o().min(1),queryText:o().min(1),context:la.nullable(),expectedSnapshots:m().int().nonnegative()}).strict(),_9=p({kind:O("baseline"),executionNodeKey:o().min(1),queryId:sl}).strict(),z9=p({kind:O("target"),executionNodeKey:o().min(1),queryId:sl,targetKey:Ut}).strict(),Kp=Be("kind",[_9,z9]),f2=p({code:O("target-alias-prefix-overlap"),message:o().min(1),targetKeys:y(Ut).min(1),aliases:y(o().min(1)).min(1)}).strict(),g2=m2.extend({mentionNotApplicable:_()}),y2=p({schemaVersion:O(c2),defaultContext:la.nullable(),effectiveOwnedHosts:y(Xr),projectCanonicalHost:Xr,projectBrandNames:y(d2),targets:y(g2),groups:y(O0),targetQuerySelections:y(p2),querySnapshots:y(N9),executionNodes:y(B0),usageEdges:y(Kp),warnings:y(f2)}).strict(),D9=y2,b2=Be("schemaVersion",[y2,bu]),q0=o().regex(/^[a-f0-9]{64}$/),M0=o().datetime(),v2=p({schemaVersion:O(1),providers:y(o().min(1)).min(1),models:Ie(o().min(1),o().min(1)),checksum:o().regex(/^[a-f0-9]{64}$/)}).strict(),E9=p({groups:y(Ut).optional(),targets:y(Ut).optional()}).strict(),T9=p({groups:y(Ut),targets:y(Ut),queries:y(o().min(1)),resolvedTargets:y(Ut)}).strict().superRefine((e,n)=>{e.resolvedTargets.length===0&&e.queries.length===0&&n.addIssue({code:"custom",path:["resolvedTargets"],message:"A recorded scope must name something it measured"})});p({stableKey:Ut,retiredAt:o().datetime()});p({active:p({revision:il,checksum:q0,createdAt:M0,plan:b2}).nullable()});p({versions:y(p({revision:il,checksum:q0,createdAt:M0,active:_()}))});p({version:p({revision:il,checksum:q0,createdAt:M0,active:_(),plan:b2})});const Kc=p({targets:m().int(),groups:m().int(),queries:m().int(),executionNodes:m().int(),usageEdges:m().int(),baselineEdges:m().int(),targetEdges:m().int(),dedupSavings:m().int()}).strict(),R9=A(["invalid-authoring","duplicate-identity","unknown-target","unknown-query","invalid-project-context","unowned-target-url","owned-competitor","target-query-context-conflict","target-url-ownership-tie","target-alias-cross-target-collision","target-alias-project-brand-collision","target-alias-prefix-overlap"]),x2=p({id:R9,severity:A(["fail","warn"]),message:o().min(1),path:y(Ve([o(),m().int()]))}).strict(),O9=p({baseline:m().int().nonnegative(),target:m().int().nonnegative()}).strict(),k2=p({ok:O(!0),checks:y(x2),executionNodes:y(B0),dedupSaved:m().int().nonnegative(),usageEdges:O9,estCostUsd:ce(),plan:D9,warnings:y(f2),counts:Kc}).strict(),w2=p({ok:O(!1),checks:y(x2).min(1),executionNodes:y(B0).length(0),dedupSaved:O(0),usageEdges:p({baseline:O(0),target:O(0)}).strict(),estCostUsd:ce()}).strict();Be("ok",[k2,w2]);const Rc=p({targetKey:Ut,context:la.nullable(),queryIds:y(sl)}).strict();function yb(e){return p({added:y(e),removed:y(e),changed:y(p({stableKey:Ut,before:e,after:e}).strict()),unchanged:y(Ut)}).strict()}const B9=k2.extend({diff:p({activeRevision:il.nullable(),targets:yb(g2),groups:yb(O0),querySelections:p({added:y(Rc),removed:y(Rc),changed:y(p({targetKey:Ut,before:Rc,after:Rc}).strict()),unchanged:y(p({targetKey:Ut,context:la.nullable()}).strict())}).strict(),execution:p({addedNodeKeys:y(o().min(1)),removedNodeKeys:y(o().min(1)),addedUsageEdges:y(Kp),removedUsageEdges:y(Kp),counts:p({before:Kc.nullable(),after:Kc,delta:Kc.nullable()}).strict()}).strict()}).strict()}).strict(),q9=w2.extend({diff:ce()}).strict();Be("ok",[B9,q9]);const vu=A(["complete","partial","failed","unsupported"]);vu.enum;A(["proposed","alias","shared","unmatched","excluded"]);A(["primary-match","exact-slug-match","excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"]);const M9=A(["invalid-url","unowned-host","duplicate-url","url-cap-reached"]),P9=p({kind:A(["exact","prefix","suffix","contains"]),value:o().trim().min(1)}).strict(),bb=p({host:o().trim().min(1),pathTemplate:o().trim().min(1)}).strict(),P0=p({primary:bb,aliases:y(bb).optional(),excludedSlugSuffixes:y(o().trim().min(1)).optional(),excludedSlugPatterns:y(P9).optional()}).strict();p({sitemapUrl:o().url().refine(e=>{try{const n=new URL(e).protocol;return n==="http:"||n==="https:"}catch{return!1}},"Sitemap URL must use http or https"),rule:P0,maxUrls:m().int().positive().max(1e4).optional()}).strict();const dp=p({url:o(),canonicalUrl:o().nullable(),classification:A(["shared","unmatched","excluded"]),reason:A(["excluded-slug","shared-path","unmatched-path","alias-without-primary","unsupported-slug"])}).strict().superRefine((e,n)=>{({shared:["shared-path"],unmatched:["unmatched-path","alias-without-primary","unsupported-slug"],excluded:["excluded-slug"]})[e.classification].includes(e.reason)||n.addIssue({code:"custom",message:"Discovery classification and reason do not match"})}),I9=p({classification:O("proposed"),reason:O("primary-match"),stableKey:Ut,slug:o().trim().min(1),label:o().trim().min(1),primaryUrl:o().url(),aliasCoverageUrls:y(o().url())}).strict(),V9=p({classification:O("alias"),reason:O("exact-slug-match"),slug:o().trim().min(1),url:o().url(),targetStableKey:Ut}).strict(),L9=p({kind:M9,url:o(),canonicalUrl:o().nullable(),duplicateOf:o().optional()}).strict();p({proposed:y(I9),aliases:y(V9),shared:y(dp),unmatched:y(dp),excluded:y(dp),diagnostics:y(L9)}).strict().superRefine((e,n)=>{const s=[["shared",["shared"]],["unmatched",["unmatched"]],["excluded",["excluded"]]];for(const[r,u]of s)for(const f of e[r])u.includes(f.classification)||n.addIssue({code:"custom",path:[r],message:"Discovery item is in the wrong result bucket"})});const I0=A(["assigned","sibling","ownedUnmapped","external","ambiguous","invalid"]),S2=A(["baseline","target"]),j2=A(["incomplete","evidence-incomplete","no-population","aliasless","no-competitors","no-project-aliases"]),us=Ve([p({numerator:m().int().nonnegative(),denominator:m().int().positive(),rate:m().min(0).max(1)}).strict(),p({numerator:ce(),denominator:ce(),rate:ce(),reason:j2}).strict()]).superRefine((e,n)=>{e.numerator!==null&&e.numerator>e.denominator&&n.addIssue({code:"custom",path:["numerator"],message:"Rate numerator cannot exceed denominator"})}),U9=o().trim().min(1).overwrite(e=>e.toLocaleLowerCase("en")),G9=p({executionId:o().trim().min(1),queryText:o().trim().min(1),provider:U9,context:la.nullable(),requestedModel:o().trim().min(1).optional()}).strict();p({schemaVersion:O(1),expectedSlots:y(G9)}).strict().superRefine((e,n)=>{const s=new Set;for(const[r,u]of e.expectedSlots.entries()){const f=[u.executionId,u.provider].join("\0");s.has(f)&&n.addIssue({code:"custom",path:["expectedSlots",r],message:"Duplicate expected provider slot"}),s.add(f)}});const xu=p({executed:m().int().nonnegative(),expected:m().int().nonnegative(),complete:_(),sourceComplete:_(),sourceCompleteObservations:m().int().nonnegative(),answerComplete:_()}).strict(),vb=Ve([p({domain:o().trim().min(1),own:_(),presentIn:m().int().nonnegative(),of:m().int().positive()}).strict(),p({domain:o().trim().min(1),own:_(),presentIn:ce(),of:ce(),reason:j2}).strict()]),$9=p({domains:y(vb),providers:y(p({provider:ft,domains:y(vb)}).strict())}).strict(),H9=p({provider:ft,completeness:xu,answerCoverage:us}).strict(),K9=p({id:o().trim().min(1),label:o().trim().min(1),targetIds:y(o().trim().min(1)),completeness:xu,answerCoverage:us,targetCoverage:us,sov:$9,providers:y(H9)}).strict(),Q9=p({provider:ft,completeness:xu,citationCoverage:us,mentionCoverage:us}).strict(),Z9=p({id:o().trim().min(1),label:o().trim().min(1),completeness:xu,citationCoverage:us,mentionCoverage:us,providers:y(Q9)}).strict(),A2=p({observationId:o().trim().min(1),expectedSlotId:o().trim().min(1),executionId:o().trim().min(1),usageEdgeId:o().trim().min(1),usageEdgeType:S2,provider:ft,queryText:o().trim().min(1),location:o().nullable(),sourceUrl:o(),bridged:_(),historical:_(),evidenceComplete:_(),classification:I0,normalizedUrl:o().nullable(),matchedTargetIds:y(o().trim().min(1)),matchedUrlIds:y(o().trim().min(1))}).strict(),F9=p({sourceUrl:o(),normalizedUrl:o().nullable(),classification:I0,matchedTargetIds:y(o().trim().min(1)),matchedUrlIds:y(o().trim().min(1))}).strict(),Y9=p({observationId:o().trim().min(1),expectedSlotId:o().trim().min(1),executionId:o().trim().min(1),usageEdgeId:o().trim().min(1),usageEdgeType:S2,provider:ft,queryText:o().trim().min(1),location:o().nullable(),queryClass:Ve([A(["branded","non-brand"]),ce()]),mentioned:_().nullable(),cited:_().nullable(),sources:y(F9),sourceCount:m().int().nonnegative(),sourcesTruncated:_(),bridged:_(),historical:_(),evidenceComplete:_()}).strict(),X9=p({bridgedObservationIds:y(o()),historicalObservationIds:y(o()),evidenceIncompleteObservationIds:y(o()),ambiguousObservationIds:y(o()),unmatchedObservationIds:y(o())}).strict(),J9=p({id:o().trim().min(1),status:A(["completed","partial"]),createdAt:o().datetime(),startedAt:o().datetime().nullable(),finishedAt:o().datetime().nullable()}).strict();p({revision:m().int().positive(),run:J9.nullable(),groups:y(K9),targets:y(Z9),evidence:y(A2),diagnostics:X9}).strict();p({property:p({targetKey:ke,label:o().min(1)}).strict(),queryClass:Wa,measurement:p({state:R0,displayedRunId:o().min(1).optional(),completedAt:o().datetime().optional()}).strict(),evidence:wo(A2).optional(),answers:wo(Y9).optional()}).strict().refine(e=>e.evidence===void 0!=(e.answers===void 0),{message:"Exactly one of evidence or answers is present, naming the shape that was served."});const V0=A(["used","not-used","unknown","not-applicable"]);V0.enum;const L0=A(["native-auto-v1","search-required-v1"]);L0.enum;const Xa=o().trim().min(1),ol=o().trim().min(1),W9=o().trim().min(1),tt=m().int().nonnegative(),rl=p({state:R0,displayedRunId:Xa.nullable(),planRevision:m().int().positive(),completedAt:o().datetime().nullable()}).strict(),ll=p({targetKey:ke,label:ol}).strict(),za={runId:Xa.optional(),provider:ft.optional(),location:W9.optional()},Jr=o().trim().min(1);p({runId:za.runId,groupKey:ke.optional(),queryClass:Wa.default("non-brand"),provider:za.provider,location:za.location,limit:m().int().positive().max(50).optional()}).strict();const eD=ll.extend({mentionCoverage:Lt,citationCoverage:Lt,flags:tt,recommendedInstead:y(p({name:Jr,occurrences:tt}).strict()).max(5),recommendedInsteadTotal:tt,recommendedInsteadTruncated:_()}).strict().superRefine((e,n)=>{e.recommendedInstead.length>e.recommendedInsteadTotal&&n.addIssue({code:Ye.custom,path:["recommendedInsteadTotal"],message:"Total cannot be smaller than the returned replacements"}),e.recommendedInsteadTruncated!==e.recommendedInstead.length<e.recommendedInsteadTotal&&n.addIssue({code:Ye.custom,path:["recommendedInsteadTruncated"],message:"Truncation must agree with the replacement total"})}),tD=p({groupKey:ke,label:ol,propertyCount:tt,propertiesMentioned:Lt,mentionCoverage:Lt,citationCoverage:Lt}).strict();p({portfolio:p({groupKey:ke.nullable(),label:ol.nullable(),measurementScope:Ve([A(["full","spot_check"]),ce()])}).strict(),measurement:rl,queryClass:Wa,metrics:p({propertiesMentioned:Lt,mentionCoverage:Lt,citationCoverage:Lt}).strict(),weakestProperties:y(eD),markets:y(tD),totalProperties:tt,truncated:_()}).strict();p({targetKey:ke,runId:za.runId,provider:za.provider,location:za.location,queryClass:Wa.optional(),offset:m().int().nonnegative().optional(),limit:m().int().positive().max(100).optional()}).strict();A(["answered","missing"]);const Qp={queryId:Xa,text:ol,class:z0,provider:ft,requestedModel:o().nullable(),servedModel:o().nullable(),location:o().nullable()},aD=Be("status",[p({resultId:Xa,...Qp,status:O("answered"),mentioned:_().nullable(),cited:_().nullable(),recommendedInstead:y(Jr),answerExcerpt:o().nullable()}).strict(),p({resultId:ce(),...Qp,status:O("missing"),mentioned:ce(),cited:ce(),recommendedInstead:y(Jr).length(0),answerExcerpt:ce()}).strict()]);p({property:ll,measurement:rl,queryClass:Wa,questions:y(aD),total:tt,truncated:_()}).strict();p({targetKey:ke,resultId:Xa}).strict();const nD=p({url:Xa,classification:I0,matchedTargetKeys:y(ke),assigned:_(),historical:_(),evidenceComplete:_()}).strict().superRefine((e,n)=>{e.assigned!==(e.classification==="assigned")&&n.addIssue({code:Ye.custom,path:["assigned"],message:"Assigned must agree with the source attribution classification"})});p({property:ll,measurement:rl,question:p({resultId:Xa,...Qp,status:O("answered")}).strict(),mentioned:_().nullable(),cited:_().nullable(),recommendedInstead:y(Jr),answer:o().nullable(),sources:y(nD),captureStatus:Ve([vu,ce()]),retrievalStatus:Ve([V0,ce()]),retrievalContract:Ve([L0,ce()])}).strict();p({targetKey:ke,runId:za.runId,provider:za.provider,location:za.location,queryClass:Wa.optional(),limit:m().int().positive().max(50).optional()}).strict();const iD=Be("state",[p({state:O("available"),answeredResults:tt,targetMissResults:tt,recommendationOccurrences:tt}).strict(),p({state:O("unavailable"),reason:E0}).strict()]),sD=p({name:Jr,occurrences:tt,providers:y(ft).max(5),providerTotal:tt,providersTruncated:_(),questions:y(ol).max(5),questionTotal:tt,questionsTruncated:_()}).strict().superRefine((e,n)=>{(e.providers.length>e.providerTotal||e.questions.length>e.questionTotal)&&n.addIssue({code:Ye.custom,message:"Evidence totals cannot be smaller than returned evidence"}),e.providersTruncated!==e.providers.length<e.providerTotal&&n.addIssue({code:Ye.custom,path:["providersTruncated"],message:"Provider truncation must agree with its total"}),e.questionsTruncated!==e.questions.length<e.questionTotal&&n.addIssue({code:Ye.custom,path:["questionsTruncated"],message:"Question truncation must agree with its total"})});p({property:ll,measurement:rl,queryClass:Wa,basis:iD,competitors:y(sD),total:tt,truncated:_()}).strict();p({runId:za.runId,scope:T0.default("all"),groupKey:ke.optional(),targetKey:ke.optional(),queryClass:Wa.default("all"),provider:za.provider,location:za.location,limit:m().int().positive().max(50).optional()}).strict().superRefine((e,n)=>{e.scope==="all"&&(e.groupKey!==void 0||e.targetKey!==void 0)&&n.addIssue({code:Ye.custom,path:["scope"],message:"All scope cannot name a group or Property"}),e.scope==="group"&&(e.groupKey===void 0||e.targetKey!==void 0)&&n.addIssue({code:Ye.custom,path:["groupKey"],message:"Group scope requires groupKey only"}),e.scope==="property"&&(e.targetKey===void 0||e.groupKey!==void 0)&&n.addIssue({code:Ye.custom,path:["targetKey"],message:"Property scope requires targetKey only"})});const C2=A(["no_previous_run","execution_identity_changed","incomplete","not_comparable"]),N2=rl.extend({executionIdentity:Xa.nullable(),measurementScope:Ve([A(["full","spot_check"]),ce()])}).strict(),Br=Be("state",[p({state:O("available"),previous:Lt,current:Lt,delta:m()}).strict().superRefine((e,n)=>{if(e.previous.state!=="available"||e.current.state!=="available"){n.addIssue({code:Ye.custom,message:"Available deltas require two available metrics"});return}Math.abs(e.delta-(e.current.value-e.previous.value))>Number.EPSILON&&n.addIssue({code:Ye.custom,path:["delta"],message:"Delta must equal current minus previous"})}),p({state:O("unavailable"),reason:E0}).strict()]);p({current:N2,comparison:Be("state",[p({state:O("available"),previous:p({displayedRunId:Xa,planRevision:m().int().positive(),completedAt:o().datetime().nullable(),executionIdentity:Xa,measurementScope:A(["full","spot_check"])}).strict(),metrics:p({propertiesMentioned:Br,mentionCoverage:Br,citationCoverage:Br}).strict(),changedProperties:y(ll.extend({mentionCoverage:Br,citationCoverage:Br,flags:tt}).strict()),totalProperties:tt,truncated:_()}).strict(),p({state:O("unavailable"),reason:C2}).strict()])}).strict().superRefine((e,n)=>{if(e.comparison.state==="available"){if(e.current.displayedRunId===null||e.current.executionIdentity===null){n.addIssue({code:Ye.custom,path:["current"],message:"A comparison requires an identified current run"});return}e.comparison.previous.planRevision!==e.current.planRevision&&n.addIssue({code:Ye.custom,path:["comparison","previous","planRevision"],message:"Comparisons cannot cross plan revisions"}),e.comparison.previous.executionIdentity!==e.current.executionIdentity&&n.addIssue({code:Ye.custom,path:["comparison","previous","executionIdentity"],message:"Comparisons cannot cross execution identities"})}});p({runId:za.runId}).strict();const oD=A(["no_completed_run","incomplete","evidence_incomplete","no_population","not_applicable"]),ku=p({state:O("unavailable"),reason:oD}).strict(),rD=p({state:O("available"),expected:tt,executed:tt,answered:tt,missing:tt}).strict(),lD=Be("state",[rD,ku]).superRefine((e,n)=>{e.state==="available"&&(e.executed+e.missing!==e.expected&&n.addIssue({code:Ye.custom,message:"Expected must equal executed plus missing"}),e.answered>e.executed&&n.addIssue({code:Ye.custom,path:["answered"],message:"Answered cannot exceed executed"}))}),cD=p({state:O("available"),complete:tt,partial:tt,failed:tt,unsupported:tt,notRecorded:tt}).strict(),uD=Be("state",[cD,ku]),dD=p({state:O("available"),used:tt,notUsed:tt,unknown:tt,notApplicable:tt,notRecorded:tt}).strict(),mD=Be("state",[dD,ku]),pD=p({state:O("available"),expectedQuestions:tt,answeredQuestions:tt,missingQuestions:tt}).strict(),hD=Be("state",[pD,ku]).superRefine((e,n)=>{e.state==="available"&&e.answeredQuestions+e.missingQuestions!==e.expectedQuestions&&n.addIssue({code:Ye.custom,message:"Expected questions must equal answered plus missing"})});p({run:N2,completeness:lD,capture:uD,retrieval:mD,population:hD,comparison:Be("state",[p({state:O("available"),previousDisplayedRunId:Xa}).strict(),p({state:O("unavailable"),reason:C2}).strict()])}).strict().superRefine((e,n)=>{if(e.completeness.state!=="available")return;const s=e.completeness.executed;e.capture.state==="available"&&e.capture.complete+e.capture.partial+e.capture.failed+e.capture.unsupported+e.capture.notRecorded!==s&&n.addIssue({code:Ye.custom,path:["capture"],message:"Capture counts must total executed snapshots"}),e.retrieval.state==="available"&&e.retrieval.used+e.retrieval.notUsed+e.retrieval.unknown+e.retrieval.notApplicable+e.retrieval.notRecorded!==s&&n.addIssue({code:Ye.custom,path:["retrieval"],message:"Retrieval counts must total executed snapshots"})});const So=o().regex(/^[a-f0-9]{64}$/),Ja=o().trim().min(1).max(256),zi=m().int().positive(),xb=p({kind:A(["user","api-key","system"]),id:o().trim().min(1),label:o().trim().min(1)}).strict(),fD=A(["proposed","included","excluded"]),gD=A(["manual","sitemap"]),U0=p({stableKey:ke,label:o().trim().min(1),status:fD,aliases:y(o().trim().min(1)),urlMatchers:y(o().trim().min(1)),source:gD,discoveredUrl:o().trim().min(1).optional(),discoveryIdentity:o().trim().min(1).optional()}).strict(),wu=p({providers:y(ft).optional(),models:Ie(ft,o().trim().min(1)).optional(),locations:y(o().trim().min(1)).optional()}).strict(),yD=A(["branded","non-brand","unclassified"]),bD=A(["rule","operator"]),_2=p({targetKey:ke,queryId:Ja,contextOverride:wu.optional(),queryClass:yD,classificationSource:bD}).strict(),G0=r2,z2=p({stableKey:ke,label:o().trim().min(1),targetKeys:y(ke),competitors:y(G0)}).strict(),vD=p({sitemapUrl:o().url(),rule:P0,exclusions:y(o().trim().min(1)),inputChecksum:So,reviewedAt:o().datetime().optional()}).strict(),xD=p({providers:y(ft),models:Ie(ft,o().trim().min(1)).optional(),locations:y(o().trim().min(1))}).strict(),kD=p({defaultContext:xD,targets:y(U0),assignments:y(_2),groups:y(z2),discovery:vD.optional()}).strict(),wD=p({id:o().trim().min(1),projectId:o().trim().min(1),schemaVersion:O(2),baseActiveVersionId:o().trim().min(1).nullable(),baseActiveRevision:zi.nullable(),authoring:kD,createdBy:xb,updatedBy:xb,createdAt:o().datetime(),updatedAt:o().datetime()}).strict(),$0=p({targets:m().int().nonnegative(),includedTargets:m().int().nonnegative(),assignments:m().int().nonnegative(),unclassifiedAssignments:m().int().nonnegative(),groups:m().int().nonnegative(),competitors:m().int().nonnegative()}).strict(),SD=p({code:o().trim().min(1),message:o().trim().min(1),path:y(Ve([o(),m().int()]))}).strict(),jD=p({etag:o().trim().min(1),changed:_(),warnings:y(SD),counts:$0}).strict();p({draft:wD.nullable(),etag:o().trim().min(1).nullable()}).strict();wo(U0);wo(_2);wo(z2);p({search:o().optional(),cursor:o().trim().min(1).optional(),limit:m().int().positive().max(D0).optional()}).strict();p({expectedActiveRevision:zi.nullable()}).strict();p({sitemapUrl:o().url(),rule:P0,exclusions:y(o().trim().min(1)).optional()}).strict();const AD=p({discoveryIdentity:o().trim().min(1),action:A(["create","rebind","ignore"]),targetKey:ke.optional(),label:o().trim().min(1).optional()}).strict();p({selections:y(AD),selectedTargetKeys:y(ke).optional()}).strict().superRefine((e,n)=>{e.selections.length===0&&e.selectedTargetKeys===void 0&&n.addIssue({code:"custom",message:"A proposal or reviewed Property selection is required."}),e.selectedTargetKeys&&new Set(e.selectedTargetKeys).size!==e.selectedTargetKeys.length&&n.addIssue({code:"custom",path:["selectedTargetKeys"],message:"Property keys must be unique."})});p({target:U0}).strict();p({targetKey:ke,label:o().trim().min(1)}).strict();p({targetKey:ke,mergedKeys:y(ke).min(1)}).strict();p({targetKey:ke,cleanup:O("assignments-and-group-memberships").optional()}).strict();p({targetKey:ke,discoveryIdentity:o().trim().min(1),discoveredUrl:o().url()}).strict();const D2={targetKeys:y(ke).optional(),groupKeys:y(ke).optional()};function E2(e,n){(e.targetKeys?.length??0)===0&&(e.groupKeys?.length??0)===0&&n.addIssue({code:"custom",message:"At least one Target or group selector is required."})}p(D2).strict().superRefine(E2);const CD=p({...D2,queryIds:y(Ja).min(1),contextOverride:wu.optional()}).strict().superRefine(E2);Ve([p({targetKey:ke,queryIds:y(Ja).min(1),contextOverride:wu.optional()}).strict(),CD]);const ND=p({groupKey:ke,label:o().trim().min(1),memberCount:m().int().positive()}).strict();p({draftEtag:o().trim().min(1),groups:y(ND),resolvedTargetKeys:y(ke),overlapCount:m().int().nonnegative(),assignments:p({requested:m().int().nonnegative(),added:m().int().nonnegative(),alreadyPresent:m().int().nonnegative()}).strict(),execution:p({addedNodes:m().int().nonnegative(),addedProviderCalls:m().int().nonnegative(),fullRunNodes:m().int().nonnegative(),fullRunProviderCalls:m().int().nonnegative()}).strict()}).strict();p({pairs:y(p({targetKey:ke,queryId:Ja}).strict()).min(1),contextOverride:wu.optional()}).strict();Ve([p({targetKey:ke,queryId:Ja}).strict(),p({targetKeys:y(ke).min(1),queryId:Ja}).strict()]);p({targetKey:ke}).strict();p({queryClass:z0,assignments:y(p({targetKey:ke,queryId:Ja}).strict()).min(1)}).strict();p({group:p({stableKey:ke,label:o().trim().min(1),targetKeys:y(ke),competitors:y(G0).optional()}).strict()}).strict();p({groupKey:ke}).strict();p({groupKey:ke,competitor:G0}).strict();p({groupKey:ke,competitorKey:ke}).strict();const nu=p({ruleId:o().trim().min(1),severity:A(["fail","warn"]),message:o().trim().min(1),path:y(Ve([o(),m().int()]))}).strict();Be("ok",[p({ok:O(!0),compiledChecksum:So,checks:y(nu),counts:$0,plan:bu}).strict(),p({ok:O(!1),compiledChecksum:ce(),checks:y(nu).min(1)}).strict()]);const kb=p({added:y(o().trim().min(1)),removed:y(o().trim().min(1)),changed:y(o().trim().min(1)),unchanged:y(o().trim().min(1))}).strict(),_D=p({activeRevision:zi.nullable(),targets:kb,groups:kb,assignments:p({added:m().int().nonnegative(),removed:m().int().nonnegative(),reclassified:m().int().nonnegative()}).strict(),execution:p({addedNodeKeys:y(o().trim().min(1)),removedNodeKeys:y(o().trim().min(1))}).strict()}).strict();Be("ok",[p({ok:O(!0),compiledChecksum:So,checks:y(nu),counts:$0,plan:bu,diff:_D}).strict(),p({ok:O(!1),compiledChecksum:ce(),checks:y(nu).min(1),diff:ce()}).strict()]);p({expectedActiveRevision:zi.nullable(),expectedCompiledChecksum:So}).strict();p({published:_(),active:p({revision:zi,checksum:So,compiledChecksum:So,createdAt:o().datetime(),plan:bu}).strict()}).strict();p({discarded:_()}).strict();p({expectedActiveRevision:zi}).strict();p({deactivated:_(),previousRevision:zi.nullable()}).strict();const zD=A(["republish_required","setup_in_progress","awaiting_first_run","operational","simple"]),DD=A(["republish_setup","continue_setup","run_measurement","view_measurement","start_setup"]),ED=A(["simple","draft-only","active-v1","active-v2"]);p({state:zD,nextAction:DD,mode:ED,activeRevision:zi.nullable(),activeSchemaVersion:Ve([O(1),O(2)]).nullable(),draft:p({etag:o().trim().min(1),updatedAt:o().datetime()}).strict().nullable()}).strict();const T2=p({id:o().trim().min(1),projectId:o().trim().min(1),name:o().trim().min(1),description:o().nullable(),itemCount:m().int().nonnegative(),createdAt:o().datetime(),updatedAt:o().datetime()}).strict(),TD=p({queryId:Ja,queryText:o().min(1),position:m().int().nonnegative()}).strict();T2.extend({items:y(TD)}).strict();p({querySets:y(T2)}).strict();p({name:o().trim().min(1),description:o().nullable().optional(),queryIds:y(Ja)}).strict();const RD=p({id:o().trim().min(1),projectId:o().trim().min(1),name:o().trim().min(1),description:o().nullable(),pattern:o().trim().min(1),variables:y(o().trim().min(1)),createdAt:o().datetime(),updatedAt:o().datetime()}).strict();p({templates:y(RD)}).strict();p({name:o().trim().min(1),description:o().nullable().optional(),pattern:o().trim().min(1),variables:y(o().trim().min(1))}).strict();p({bindings:y(Ie(o().trim().min(1),o().trim().min(1))).min(1),querySetId:o().trim().min(1).optional()}).strict();p({created:y(p({queryId:Ja,queryText:o().min(1)}).strict()),existing:y(p({queryId:Ja,queryText:o().min(1)}).strict())}).strict();const iu=o().regex(/^[a-f0-9]{64}$/),Su=m().int().positive();p({stableKey:ke,kind:A(["target","group"]),retiredAt:o().datetime().nullable()}).strict();p({csv:o()}).strict();A(["matched","ambiguous","unmatched","invalid","duplicate","proposed","excluded"]);const OD=A(["column-count","missing-property","missing-group","invalid-url","property-not-found","property-label-ambiguous","url-not-exact-match","target-proposed","target-excluded","group-label-ambiguous","group-key-conflict"]),Zp=p({dataRow:Su,property:o(),group:o(),url:o().nullable(),normalizedProperty:o(),normalizedGroupLabel:o()}).strict(),qr=Zp.extend({reason:OD}),BD=p({source:A(["draft-target","draft-group","persisted-segment","retired-segment","proposed-group"]),stableKey:ke,kind:A(["target","group"]).optional(),retiredAt:o().datetime().nullable().optional(),normalizedGroupLabel:o().optional()}).strict(),qD=p({proposedGroupKey:ke,evidence:y(BD).min(1)}).strict(),MD=Be("status",[Zp.extend({status:O("matched"),targetKey:ke,groupKey:ke}).strict(),qr.extend({status:O("ambiguous"),candidateTargetKeys:y(ke).min(1).optional(),candidateGroupKeys:y(ke).min(1).optional()}).strict(),qr.extend({status:O("unmatched")}).strict(),qr.extend({status:O("invalid"),groupKeyConflict:qD.optional()}).strict(),Zp.extend({status:O("duplicate"),duplicateOfRow:Su,targetKey:ke,groupKey:ke}).strict(),qr.extend({status:O("proposed"),targetKey:ke}).strict(),qr.extend({status:O("excluded"),targetKey:ke}).strict()]),PD=p({normalizedGroupLabel:o(),groupKey:ke,label:o().trim().min(1),action:A(["create","extend"]),matchedRows:y(Su),targetKeys:y(ke),addedTargetKeys:y(ke),unchangedTargetKeys:y(ke)}).strict(),ID=p({dataRows:m().int().nonnegative(),matchedRows:m().int().nonnegative(),ambiguousRows:m().int().nonnegative(),unmatchedRows:m().int().nonnegative(),invalidRows:m().int().nonnegative(),duplicateRows:m().int().nonnegative(),proposedRows:m().int().nonnegative(),excludedRows:m().int().nonnegative(),needsAttention:m().int().nonnegative(),groupsReady:m().int().nonnegative(),groupsToCreate:m().int().nonnegative(),groupsToExtend:m().int().nonnegative(),membershipsReady:m().int().nonnegative(),addedMemberships:m().int().nonnegative(),unchangedMemberships:m().int().nonnegative()}).strict();p({draftEtag:o().trim().min(1),sourceChecksum:iu,previewChecksum:iu,rows:y(MD),groupChanges:y(PD),counts:ID}).strict();p({csv:o(),sourceChecksum:iu,previewChecksum:iu,acceptedRows:y(Su).min(1)}).strict().superRefine((e,n)=>{new Set(e.acceptedRows).size!==e.acceptedRows.length&&n.addIssue({code:"custom",path:["acceptedRows"],message:"Accepted CSV data rows must be unique."})});jD.extend({appliedRows:m().int().nonnegative(),addedMemberships:m().int().nonnegative(),unchangedMemberships:m().int().nonnegative()}).strict();const R2=A(["introduced","repointed","retired"]),VD=R2.enum;p({modelId:o().trim().min(1),date:o().regex(/^\d{4}-\d{2}-\d{2}$/,"date must be YYYY-MM-DD"),kind:R2,confirmed:_(),sourceUrl:o().url(),note:o().min(1)});const LD=[{modelId:"chatgpt-4o-latest",date:"2024-08-15",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released dynamic model for chatgpt-4o-latest—this model will point to the latest GPT-4o model used by ChatGPT." First moving id in the lineage.'},{modelId:"chatgpt-4o-latest",date:"2026-02-17",kind:"retired",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/deprecations.md",note:'Shutdown 2026-02-17, replacement gpt-5.1-chat-latest. Announced under the heading "2025-11-18: chatgpt-4o-latest snapshot".'},{modelId:"gpt-5.1-chat-latest",date:"2025-11-13",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:"Introduced inside the GPT-5.1 launch entry, not as a standalone entry."},{modelId:"gpt-5.2-chat-latest",date:"2025-12-11",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:"Introduced inside the GPT-5.2 launch entry."},{modelId:"gpt-5.2-chat-latest",date:"2026-02-10",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Updated the gpt-5.2-chat-latest slug to point to the latest model currently used in ChatGPT." Target model NOT named.'},{modelId:"gpt-5.3-chat-latest",date:"2026-03-03",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released gpt-5.3-chat-latest to the Chat Completions and Responses API. This model points to the GPT-5.3 Instant snapshot currently used in ChatGPT."'},{modelId:"gpt-5.3-chat-latest",date:"2026-03-16",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Updated the gpt-5.3-chat-latest slug to point to the latest model currently used in ChatGPT." Target model NOT named.'},{modelId:"chat-latest",date:"2026-05-05",kind:"introduced",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim: "Released chat-latest snapshot which points to the latest Instant model currently used in ChatGPT... The underlying model snapshot will be regularly updated."'},{modelId:"chat-latest",date:"2026-05-28",kind:"repointed",confirmed:!1,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'UNCONFIRMED. The entry reads "Released chat-latest snapshot..." — the verb is "Released", the same boilerplate as the 2026-05-05 entry, not "Updated" as used on 2026-06-24. Only "the latest improvements" vs "our latest improvements" differs. Either a real change logged with copy-pasted text, or a duplicated entry; the record does not disambiguate.'},{modelId:"chat-latest",date:"2026-06-24",kind:"repointed",confirmed:!0,sourceUrl:"https://developers.openai.com/api/docs/changelog",note:'Verbatim (re-read at source 2026-07-20): "Updated the chat-latest snapshot, which points to the latest Instant model currently used in ChatGPT." The verb is "Updated", unlike the "Released" boilerplate of 2026-05-05 and 2026-05-28, which is the wording the changelog reserves for a real change. Target model NOT named. The only unambiguous chat-latest change on record.'}];VD.repointed;new Set(LD.map(e=>e.modelId.toLowerCase()));const UD=A(["not-exposed","no-known-change","known-change"]);UD.enum;const GD=p({modelId:o().trim().min(1),date:o().regex(/^\d{4}-\d{2}-\d{2}$/),confirmed:_(),sourceUrl:o().url()}),$D=p({status:A(["no-known-change","known-change"]),modelIds:y(o().trim().min(1)).min(1),changes:y(GD),changeCount:m().int().nonnegative(),unverifiedChangeCount:m().int().nonnegative(),firstChangeDate:o().optional(),lastChangeDate:o().optional(),knownGoodAsOf:o(),checkedThroughPeriodEnd:_()}),HD={openai:"ChatGPT",chatgpt:"ChatGPT",anthropic:"Claude",claude:"Claude",google:"Gemini",gemini:"Gemini",perplexity:"Perplexity"};function KD(e){const n=e.trim().toLowerCase();return HD[n]??e.charAt(0).toUpperCase()+e.slice(1)}function mp(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):0}function Mr(e){return typeof e=="string"&&e.trim().length>=10?e.trim().slice(0,10):null}function pp(e){return[...new Set(e.filter(n=>n!==null))].sort()}function QD(e,n){const s=KD(e),r=Array.isArray(n.changes)?n.changes:[],u=mp(n.changeCount)||r.length,f=Math.min(u,mp(n.unverifiedChangeCount)||mp(n.unconfirmedChangeCount)||r.filter(S=>S.confirmed===!1).length),g=Mr(n.knownGoodAsOf),b=n.checkedThroughPeriodEnd!==!1,x={engine:s,confirmedCount:u-f,unconfirmedCount:f,knownGoodAsOf:g,checkedThroughPeriodEnd:b};if(r.length>0)return{...x,confirmedDates:pp(r.filter(S=>S.confirmed!==!1).map(S=>Mr(S.date))),unconfirmedDates:pp(r.filter(S=>S.confirmed===!1).map(S=>Mr(S.date)))};const k=pp([Mr(n.firstChangeDate),Mr(n.lastChangeDate)]);return u===0?{...x,confirmedDates:[],unconfirmedDates:[]}:f===0?{...x,confirmedDates:k,unconfirmedDates:[]}:x.confirmedCount===0?{...x,confirmedDates:[],unconfirmedDates:k}:{...x,confirmedDates:[],unconfirmedDates:[]}}function ZD(e){return e.length===1?e[0]:e.length===2?`${e[0]} and ${e[1]}`:`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`}function wb(e,n){return e.length===0?null:e.length===1&&n<=1?`on ${e[0]}`:`more than once between ${e[0]} and ${e[e.length-1]}`}function FD(e){const n=wb(e.confirmedDates,e.confirmedCount),s=wb(e.unconfirmedDates,e.unconfirmedCount),r=`The model behind ${e.engine}`;if(e.confirmedCount>0&&e.unconfirmedCount===0)return n?`${r} was updated ${n}, inside this period.`:`${r} was updated inside this period.`;if(e.confirmedCount===0)return s?`${r} may have been updated ${s}, inside this period, though that is not confirmed.`:`${r} may have been updated inside this period, though that is not confirmed.`;if(n&&s)return`${r} was updated ${n}, inside this period, and may also have been updated ${s}.`;const u=e.unconfirmedCount>1?"more times":"once more";return`${r} was updated inside this period, and may have been updated ${u}, though that is not confirmed.`}function Sb(e){const n=e.filter(r=>!r.checkedThroughPeriodEnd&&r.knownGoodAsOf!==null);return n.length===0?null:`We last checked for model updates on ${n.map(r=>r.knownGoodAsOf).sort()[0]}, and this period runs past that date, so there may be later updates we do not know about.`}function _$(e){const n=Object.entries(e??{}).map(([x,k])=>QD(x,k??{})).sort((x,k)=>x.engine.localeCompare(k.engine));if(n.length===0)return null;const s=n.filter(x=>x.confirmedCount+x.unconfirmedCount>0);if(s.length===0){const x=[...new Set(n.map(E=>E.engine))],k=x.length>1,S=Sb(n),C=[...new Set(n.map(E=>E.knownGoodAsOf).filter(E=>E!==null))].sort(),j=S??(C.length>0?`We last checked for model updates on ${C[0]}.`:null);return{kind:"no-known-change",text:`No model updates are on record for ${ZD(x)} in this period.`,detail:`${k?"These engines":"This engine"} can be moved onto a different underlying model without the data ever showing a different model name, so we check each period against a record of known updates. Nothing is listed inside this one.${j?` ${j}`:""}`}}const r=s.reduce((x,k)=>x+k.confirmedCount+k.unconfirmedCount,0),u=s.some(x=>x.confirmedCount>0),f=r===1?"this update":"these updates",g=u?`Some of the movement in these numbers may come from ${f} rather than from a real change in how AI answers about you, so compare periods carefully.`:`If so, some of the movement in these numbers may come from ${f} rather than from a real change in how AI answers about you, so compare periods carefully.`,b=Sb(n);return{kind:"change",text:`${s.map(FD).join(" ")} ${g}${b?` ${b}`:""}`}}const Oc=p({slope:m(),intercept:m(),r2:m(),start:m(),end:m(),n:m(),startIndex:m(),endIndex:m()}),YD=A(["gsc","ga4","gbp"]);p({id:o(),domain:o(),connectionType:YD,propertyId:o().nullable().optional(),sitemapUrl:o().nullable().optional(),scopes:y(o()).default([]),createdAt:o(),updatedAt:o()});const XD=p({date:o(),query:o(),page:o(),country:o().nullable().optional(),device:o().nullable().optional(),clicks:m(),impressions:m(),ctr:m(),position:m()});A(["clicks","impressions","date"]);p({rows:y(XD),totalMatching:m(),truncated:_(),latestAvailableDate:o().nullable()});const JD=p({date:o(),clicks:m(),impressions:m(),ctr:m(),position:m().nullable()}),WD=p({startDate:o().nullable(),endDate:o().nullable(),latestDataDate:o().nullable(),daysSinceLatestData:m().nullable()}),eE=p({clicks:Oc.nullable(),impressions:Oc.nullable(),ctr:Oc.nullable(),position:Oc.nullable()}),jb=p({startDate:o(),endDate:o(),clicks:m(),impressions:m(),ctr:m().nullable(),position:m().nullable(),source:A(["property-daily","dimensioned","mixed","empty"])}),tE=p({days:m(),prior:jb,trailing:jb,comparable:_(),change:p({clicks:m().nullable(),impressions:m().nullable(),ctr:m().nullable(),position:m().nullable()})});p({totals:p({clicks:m(),impressions:m(),ctr:m(),position:m().nullable(),positionDays:m(),days:m()}),daily:y(JD),window:WD.optional(),trends:eE.optional(),periodComparison:tE.nullable().optional()});const aE=p({page:o(),clicks:m(),impressions:m(),ctr:m()});p({rows:y(aE),totals:p({clicks:m(),impressions:m(),ctr:m(),days:m(),coveredFrom:o().nullable(),coveredThrough:o().nullable(),complete:_()}).nullable(),totalsSource:O("property-daily"),rankedFrom:o().nullable(),rankedThrough:o().nullable()});const Fp=p({id:o(),url:o(),indexingState:o().nullable().optional(),verdict:o().nullable().optional(),coverageState:o().nullable().optional(),pageFetchState:o().nullable().optional(),robotsTxtState:o().nullable().optional(),crawlTime:o().nullable().optional(),lastCrawlResult:o().nullable().optional(),isMobileFriendly:_().nullable().optional(),richResults:y(o()).default([]),referringUrls:y(o()).default([]),inspectedAt:o()});A(["stable","reindexed","deindexed","still-missing","new"]);const nE=p({url:o(),previousState:o().nullable(),currentState:o().nullable(),transitionDate:o()}),iE=p({reason:o(),count:m(),urls:y(Fp).default([])});p({summary:p({total:m(),indexed:m(),notIndexed:m(),deindexed:m(),percentage:m()}),lastInspectedAt:o().nullable(),lastSyncedAt:o().nullable(),indexed:y(Fp).default([]),notIndexed:y(Fp).default([]),deindexed:y(nE).default([]),reasonGroups:y(iE).default([])});p({url:o(),type:A(["URL_UPDATED","URL_DELETED"]),notifiedAt:o()});const sE=p({url:o(),type:A(["URL_UPDATED","URL_DELETED"]),notifiedAt:o(),status:A(["success","error"]),error:o().optional()});p({summary:p({total:m().int().nonnegative(),succeeded:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(sE).default([])});p({date:o(),indexed:m(),notIndexed:m(),unknownPages:m().default(0),verifiedByInspection:m().default(0),derivedFromImpressions:m().default(0),reasonBreakdown:Ie(o(),m()).default({})});const oE=p({siteUrl:o(),permissionLevel:o()});p({sites:y(oE).default([])});const rE=p({type:o(),submitted:o(),indexed:o().optional().describe("Deprecated compatibility field.")}),O2=p({path:o(),parentSitemapUrl:o().optional(),lastSubmitted:o().optional(),isPending:_().optional(),isSitemapsIndex:_().optional(),type:o().optional(),lastDownloaded:o().optional(),warnings:o().optional(),errors:o().optional(),contents:y(rE).optional()});p({sitemaps:y(O2).default([]),summary:p({total:m().int().nonnegative(),indexes:m().int().nonnegative(),files:m().int().nonnegative()}),preferredSubmissionUrls:y(o()).default([])});p({sitemapUrls:y(o().url().refine(e=>{const n=new URL(e).protocol;return n==="http:"||n==="https:"},{message:"Sitemap URL must use http or https."})).min(1).max(50)});const lE=p({sitemapUrl:o(),status:A(["accepted","error"]),submittedAt:o().optional(),error:o().optional()});p({summary:p({total:m().int().nonnegative(),accepted:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(lE)});p({sitemaps:y(O2),primarySitemapUrl:o(),run:p({id:o(),projectId:o(),kind:o(),status:o(),trigger:o(),createdAt:o()}).nullable()});const Xe=o().trim().min(1),Ab=o().regex(/^[a-f0-9]{64}$/i);function cE(e){if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;const n=new Date(`${e}T00:00:00.000Z`);return!Number.isNaN(n.getTime())&&n.toISOString().slice(0,10)===e}const Yp=o().refine(cE,{message:"Expected a calendar date as YYYY-MM-DD."});function uE(e,n){const s=Date.parse(`${e}T00:00:00.000Z`),r=Date.parse(`${n}T00:00:00.000Z`);return Math.floor((r-s)/864e5)+1}const dE=A(["not-connected","selection-required","connected","stale"]),Bc=dE.enum,B2=A(["enabled","suspended","closed","canceled","unspecified","unknown"]);B2.enum;const q2=A(["enabled","paused","removed","unknown"]);q2.enum;const M2=A(["enabled","hidden","removed","unknown"]);M2.enum;const H0=A(["customer","campaign"]);H0.enum;const P2=A(["customer-goal","campaign-goal","custom-goal"]);P2.enum;const I2=p({loginCustomerId:Xe.nullable(),customerId:Xe.nullable(),selectedAt:o().nullable()}).strict(),hp=p({id:Xe,projectId:Xe,scopes:y(o()).default([]),selection:I2,lastValidatedAt:o().nullable(),lastInventorySnapshotAt:o().nullable(),lastMetricsSnapshotAt:o().nullable(),createdAt:o(),updatedAt:o()}).strict(),Xp=p({resourceName:Xe,customerId:Xe,parentCustomerId:Xe.nullable(),descriptiveName:o().nullable(),currencyCode:o().nullable(),timeZone:o().nullable(),manager:_(),hidden:_(),testAccount:_(),level:m().int().nonnegative(),status:B2}).strict(),mE=p({customers:y(Xp),totalAccessible:m().int().nonnegative(),truncated:_(),selection:I2,fetchedAt:o()}).strict();Be("status",[p({connected:O(!1),status:O(Bc["not-connected"]),connection:ce(),selectedCustomer:ce()}).strict(),p({connected:O(!0),status:O(Bc["selection-required"]),connection:hp,selectedCustomer:ce()}).strict(),p({connected:O(!0),status:O(Bc.connected),connection:hp,selectedCustomer:Xp}).strict(),p({connected:O(!0),status:O(Bc.stale),connection:hp,selectedCustomer:Xp}).strict()]);const pE=p({id:Xe,resourceName:Xe,name:o(),status:q2,advertisingChannelType:o().nullable(),biddingStrategyType:o().nullable()}).strict(),hE=p({id:Xe,resourceName:Xe,name:o(),status:M2,category:o(),origin:o(),primaryForGoal:_(),includeInConversionsMetric:_()}).strict(),fE=p({category:o(),origin:o(),biddable:_()}).strict(),gE=p({campaignId:Xe,category:o(),origin:o(),biddable:_()}).strict(),yE=p({id:Xe,name:o(),conversionActionIds:y(Xe)}).strict(),bE=p({campaignId:Xe,goalConfigLevel:H0,customGoalId:Xe.nullable()}).strict(),vE=p({customerId:Xe,fetchedAt:o(),campaigns:y(pE),conversionActions:y(hE),customerConversionGoals:y(fE),campaignConversionGoals:y(gE),campaignConversionGoalsComplete:_().optional(),customConversionGoals:y(yE),campaignGoalConfigurations:y(bE)}).strict(),xE=p({source:P2,category:o().nullable(),origin:o().nullable(),customGoalId:Xe.nullable(),biddable:_().nullable(),conversionActionIds:y(Xe),primaryConversionActionIds:y(Xe),secondaryConversionActionIds:y(Xe),missingConversionActionIds:y(Xe)}).strict(),kE=p({campaignId:Xe,goalConfigLevel:H0,customGoalId:Xe.nullable(),missingCustomGoalId:Xe.nullable(),goals:y(xE)}).strict();p({customerId:Xe,derivedAt:o(),campaigns:y(kE)}).strict();const V2=50,Jp=31,wE=V2*Jp,SE=p({campaignIds:y(Xe).min(1).max(V2),startDate:Yp,endDate:Yp}).strict().superRefine((e,n)=>{if(new Set(e.campaignIds).size!==e.campaignIds.length&&n.addIssue({code:Ye.custom,path:["campaignIds"],message:"Campaign IDs must be unique."}),e.endDate<e.startDate){n.addIssue({code:Ye.custom,path:["endDate"],message:"endDate must not precede startDate."});return}uE(e.startDate,e.endDate)>Jp&&n.addIssue({code:Ye.custom,path:["endDate"],message:`Campaign metrics may cover at most ${Jp} calendar days.`})}),jE=p({campaignId:Xe,date:Yp,impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),conversionValueMicros:m().int().nonnegative().nullable()}).strict(),AE=p({query:SE,rows:y(jE).max(wE),truncated:_(),fetchedAt:o()}).strict(),L2=A(["accessible-customers","inventory","campaign-metrics"]),fp=L2.enum,K0=p({id:Xe,projectId:Xe,connectionId:Xe,runId:Xe,kind:L2,customerId:Xe.nullable(),payloadChecksum:Ab,rawPayloadSha256:Ab.nullable(),rawPayloadBytes:m().int().nonnegative().nullable(),redactedFieldCount:m().int().nonnegative(),capturedAt:o(),createdAt:o()}).strict(),CE=Be("kind",[p({kind:O(fp["accessible-customers"]),data:mE}).strict(),p({kind:O(fp.inventory),data:vE}).strict(),p({kind:O(fp["campaign-metrics"]),data:AE}).strict()]),NE=p({metadata:K0,payload:CE}).strict().superRefine((e,n)=>{e.metadata.kind!==e.payload.kind&&n.addIssue({code:Ye.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),Ke=o().trim().min(1),Cb=o().regex(/^[a-f0-9]{64}$/i),_E=A(["not-connected","selection-required","connected","stale"]),qc=_E.enum,zE=A(["live","draft"]),U2=zE.enum,Qc=p({accountId:Ke.nullable(),containerId:Ke.nullable(),workspaceId:Ke.nullable(),selectedAt:o().nullable()}).strict(),gp=p({id:Ke,projectId:Ke,scopes:y(o()).default([]),selection:Qc,lastValidatedAt:o().nullable(),lastSnapshotAt:o().nullable(),createdAt:o(),updatedAt:o()}).strict(),G2=p({id:Ke,path:o(),name:o(),shareData:_().nullable()}).strict(),$2=p({accountId:Ke,id:Ke,path:o(),name:o(),publicId:o().nullable(),domainName:o().nullable(),usageContexts:y(o())}).strict(),Q0=p({accountId:Ke,containerId:Ke,id:Ke,path:o(),name:o(),description:o().nullable(),fingerprint:o().nullable()}).strict(),DE=p({accounts:y(G2),totalAccessible:m().int().nonnegative(),truncated:_(),fetchedAt:o()}).strict();p({accountId:Ke,containers:y($2),totalAccessible:m().int().nonnegative(),truncated:_(),fetchedAt:o()}).strict();p({accountId:Ke,containerId:Ke,workspaces:y(Q0),totalAccessible:m().int().nonnegative(),truncated:_(),fetchedAt:o()}).strict();const EE=p({id:Ke,name:o(),type:o(),paused:_(),firingTriggerIds:y(Ke),blockingTriggerIds:y(Ke),referencedVariableIds:y(Ke),parameterKeys:y(o()),fingerprint:o().nullable()}).strict(),TE=p({id:Ke,name:o(),type:o(),customEventNames:y(o()),filterKeys:y(o()),autoEventFilterKeys:y(o()),fingerprint:o().nullable()}).strict(),RE=p({id:Ke,name:o(),type:o(),dataLayerVariableName:o().nullable(),parameterKeys:y(o()),fingerprint:o().nullable()}).strict(),H2=A(["recognized","unknown"]),Nb=H2.enum,OE=A(["literal","variable-ref","absent","unknown"]),ju=OE.enum,BE=o().trim().min(5).max(132).regex(/^\{\{\w[\w ./-]{0,127}\}\}$/),To=p({source:O(ju.absent),literal:ce(),variableRef:ce()}).strict(),Ro=p({source:O(ju.unknown),literal:ce(),variableRef:ce()}).strict(),Oo=p({source:O(ju["variable-ref"]),literal:ce(),variableRef:BE}).strict();function cl(e){return p({source:O(ju.literal),literal:e,variableRef:ce()}).strict()}const qE=o().trim().max(23).regex(/^(?:AW-)?\d{1,20}$/i),ME=o().trim().min(1).max(128).regex(/^[\w-]+$/),PE=o().trim().min(1).max(20).regex(/^(?:0|[1-9]\d{0,11})(?:\.\d{1,6})?$/),IE=o().trim().length(3).regex(/^[a-z]{3}$/i);Be("source",[cl(o().trim().min(1).max(256)),Oo,To,Ro]);const VE=Be("source",[cl(qE),Oo,To,Ro]),LE=Be("source",[cl(ME),Oo,To,Ro]),UE=Be("source",[cl(PE),Oo,To,Ro]),GE=Be("source",[Oo,To,Ro]),$E=Be("source",[cl(IE),Oo,To,Ro]),K2=A(["all-pages","custom-event","filtered","unknown"]);K2.enum;const _b=p({operator:o().trim().min(1).max(64),value:o().max(2048),negated:_(),ignoreCase:_()}).strict(),HE=p({triggerId:Ke,triggerType:o(),eventPredicates:y(_b),hostnamePredicates:y(_b),unsupportedConditionCount:m().int().nonnegative()}).strict(),Q2=A(["not-google-ads-tag","unsupported-tag-type","custom-html-opaque","conversion-id-unresolved","conversion-label-unresolved","value-mapping-missing","transaction-id-mapping-missing","currency-mapping-missing","trigger-unresolved","hostname-filter-unresolved"]);Q2.enum;const KE=p({tagId:Ke,tagType:o(),recognition:H2,recognitionReason:o().nullable(),conversionId:VE,conversionLabel:LE,value:UE,transactionId:GE,currency:$E,triggerStrategy:K2,triggerIds:y(Ke),triggerPredicates:y(HE),reviewReasons:y(Q2)}).strict().superRefine((e,n)=>{e.recognition===Nb.recognized&&e.recognitionReason!==null&&n.addIssue({code:Ye.custom,path:["recognitionReason"],message:"Recognized assessments cannot carry an unknown-recognition reason."}),e.recognition===Nb.unknown&&!e.recognitionReason&&n.addIssue({code:Ye.custom,path:["recognitionReason"],message:"Unknown assessments require a recognition reason."})}),Z2=p({accountId:Ke,containerId:Ke,workspaceId:Ke.nullable(),tags:y(EE),triggers:y(TE),variables:y(RE),googleAdsTagAssessments:y(KE).default([])}).strict(),QE=p({accountId:Ke,containerId:Ke,id:Ke,path:o(),name:o(),description:o().nullable(),fingerprint:o().nullable(),deleted:_()}).strict(),F2=p({source:O(U2.live),version:QE,graph:Z2,fetchedAt:o()}).strict(),Y2=p({source:O(U2.draft),workspace:Q0,graph:Z2,conflictCount:m().int().nonnegative(),fetchedAt:o()}).strict(),ZE=p({account:G2,container:$2,workspaces:y(Q0),live:F2.nullable(),draft:Y2.nullable(),fetchedAt:o()}).strict();Be("status",[p({connected:O(!1),status:O(qc["not-connected"]),connection:ce(),selection:ce()}).strict(),p({connected:O(!0),status:O(qc["selection-required"]),connection:gp,selection:Qc}).strict(),p({connected:O(!0),status:O(qc.connected),connection:gp,selection:Qc}).strict(),p({connected:O(!0),status:O(qc.stale),connection:gp,selection:Qc}).strict()]);const X2=A(["accounts","container","live","draft"]),Mc=X2.enum,Z0=p({id:Ke,projectId:Ke,connectionId:Ke,runId:Ke,kind:X2,accountId:Ke.nullable(),containerId:Ke.nullable(),workspaceId:Ke.nullable(),payloadChecksum:Cb,rawPayloadSha256:Cb.nullable(),rawPayloadBytes:m().int().nonnegative().nullable(),redactedFieldCount:m().int().nonnegative(),capturedAt:o(),createdAt:o()}).strict(),FE=Be("kind",[p({kind:O(Mc.accounts),data:DE}).strict(),p({kind:O(Mc.container),data:ZE}).strict(),p({kind:O(Mc.live),data:F2}).strict(),p({kind:O(Mc.draft),data:Y2}).strict()]),YE=p({metadata:Z0,payload:FE}).strict().superRefine((e,n)=>{e.metadata.kind!==e.payload.kind&&n.addIssue({code:Ye.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),Fa=o().trim().min(1),XE=o().trim().min(1).refine(e=>gu(e)!==null,"Expected a hostname or http(s) URL."),F0=A(["configured","statically-consistent","runtime-unverified","observed"]);F0.enum;const J2=A(["pass","fail","unknown"]);J2.enum;const W2=A(["ads-connection-missing","ads-conversion-action-missing","ads-goal-missing","ads-goal-not-biddable","ads-action-not-primary","gtm-connection-missing","gtm-live-graph-missing","gtm-tag-missing","gtm-tag-unrecognized","gtm-tag-paused","gtm-trigger-missing","gtm-variable-missing","gtm-event-mismatch","gtm-hostname-mismatch","gtm-value-mapping-missing","gtm-transaction-id-mapping-missing","gtm-currency-mapping-missing","gtm-conversion-id-mismatch","gtm-conversion-label-mismatch","runtime-event-not-observed","runtime-gtm-not-observed","runtime-ads-not-observed"]);W2.enum;const ek=p({id:Fa,projectId:Fa,name:o().trim().min(1),eventName:o().trim().min(1),googleAds:p({customerId:Fa,conversionActionId:Fa,conversionId:o().trim().min(1).optional(),conversionLabel:o().trim().min(1).optional(),campaignIds:y(Fa).max(50).default([]),requireBiddableGoal:_().default(!0),requirePrimaryAction:_().default(!0)}).strict(),gtm:p({accountId:Fa,containerId:Fa,tagId:Fa,triggerIds:y(Fa).default([]),variableIds:y(Fa).default([])}).strict(),runtime:p({verificationRequired:_().default(!0),requireTransactionId:_().default(!0),requireValue:_().default(!0),requireCurrency:_().default(!0),productionHosts:y(XE).default([])}).strict(),createdAt:o(),updatedAt:o()}).strict();ek.omit({id:!0,projectId:!0,createdAt:!0,updatedAt:!0});const tk=A(["not-run","consistent","inconsistent"]);tk.enum;const ak=A(["not-run","not-observed","observed"]);ak.enum;p({staticCheck:tk,runtimeVerificationRequired:_(),runtimeObservation:ak}).strict();const JE=p({code:W2,subject:o().trim().min(1),outcome:J2,status:F0,evidenceIds:y(Fa).default([])}).strict(),WE=p({contract:ek,status:F0,findings:y(JE),evaluatedAt:o()}).strict(),Hr=o().trim().min(1);function zb(e){const n=e.trim();return/^\d{10}$/.test(n)?n:/^\d{3}-\d{3}-\d{4}$/.test(n)?n.replaceAll("-",""):null}const eT=/^[\w-]+$/;function Y0(e){const n=e.trim();return eT.test(n)?n:null}function tT(e){const n=e.trim();return/^accounts\/([\w-]+)$/.exec(n)?.[1]??Y0(n)}function aT(e,n){const s=e.trim(),r=/^accounts\/([\w-]+)\/containers\/([\w-]+)$/.exec(s);return r?r[1]===n?r[2]:null:Y0(s)}function nT(e,n,s){const r=e.trim(),u=/^accounts\/([\w-]+)\/containers\/([\w-]+)\/workspaces\/([\w-]+)$/.exec(r);return u?u[1]===n&&u[2]===s?u[3]:null:Y0(r)}function iT(e){const n=zb(e.customerId);if(!n)return null;if(e.loginCustomerId===null)return{loginCustomerId:null,customerId:n};if(e.loginCustomerId===void 0)return{customerId:n};const s=zb(e.loginCustomerId);return s?{loginCustomerId:s,customerId:n}:null}function sT(e){const n=tT(e.accountId);if(!n)return null;const s=aT(e.containerId,n);if(!s)return null;if(e.workspaceId===void 0)return{accountId:n,containerId:s};const r=nT(e.workspaceId,n,s);return r?{accountId:n,containerId:s,workspaceId:r}:null}const Au=A(["google-ads","gtm"]);Au.enum;p({provider:Au,publicUrl:o().url().optional(),developerToken:o().trim().min(1).max(512).optional()}).strict();p({provider:Au,authorizationUrl:o().url(),redirectUri:o().url(),expiresAt:o().nullable()}).strict();p({loginCustomerId:Hr.nullable().optional(),customerId:Hr}).strict().superRefine((e,n)=>{iT(e)||n.addIssue({code:Ye.custom,message:"Expected ten-digit Google Ads customer IDs, with optional 3-3-4 display hyphens."})});p({accountId:Hr,containerId:Hr,workspaceId:Hr.optional()}).strict().superRefine((e,n)=>{sT(e)||n.addIssue({code:Ye.custom,message:"GTM resource paths must match the selected account and container."})});p({provider:Au,disconnected:_()}).strict();const nk=100;p({snapshots:y(K0).max(nk),nextCursor:o().nullable(),total:m().int().nonnegative()}).strict();p({snapshot:NE}).strict();p({snapshots:y(Z0).max(nk),nextCursor:o().nullable(),total:m().int().nonnegative()}).strict();p({snapshot:YE}).strict();p({assessment:WE,googleAdsSnapshot:K0.nullable(),gtmSnapshot:Z0.nullable()}).strict();const oT=p({name:o(),accountName:o().nullable(),type:o().nullable(),role:o().nullable()});p({accounts:y(oT),total:m().int().nonnegative()});const rT=p({id:o(),projectId:o(),accountName:o(),locationName:o(),displayName:o(),primaryCategoryDisplayName:o().nullable(),storefrontAddress:o().nullable(),websiteUri:o().nullable(),placeId:o().nullable(),mapsUri:o().nullable(),additionalCategories:y(o()),description:o().nullable(),serviceArea:Ie(o(),ya()).nullable(),regularHours:Ie(o(),ya()).nullable(),primaryPhone:o().nullable(),openStatus:o().nullable(),openingDate:o().nullable(),selected:_(),syncedAt:o().nullable(),createdAt:o(),updatedAt:o()});p({locations:y(rT),totalDiscovered:m().int().nonnegative(),totalSelected:m().int().nonnegative()});p({selectAllNew:_().default(!0),accountName:o().optional(),switchAccount:_().default(!1)});p({selected:_()});p({locationNames:y(o()).optional(),daysOfMetrics:m().int().positive().max(540).optional(),monthsOfKeywords:m().int().positive().max(18).optional()});p({runId:o(),status:o()});const lT=p({locationName:o(),date:o(),metric:o(),value:m().int()});p({metrics:y(lT),total:m().int().nonnegative()});const cT=p({locationName:o(),periodStart:o(),periodEnd:o(),keyword:o(),valueCount:m().int().nullable(),valueThreshold:m().int().nullable()});p({keywords:y(cT),total:m().int().nonnegative(),thresholdedPct:m().int().min(0).max(100)});const uT=p({locationName:o(),placeActionLinkName:o(),placeActionType:o(),uri:o().nullable(),isPreferred:_(),providerType:o().nullable()});p({placeActions:y(uT),total:m().int().nonnegative()});const dT=p({locationName:o(),populatedGroupCount:m().int().nonnegative(),syncedAt:o(),attributes:Ie(o(),ya())});p({lodging:y(dT),total:m().int().nonnegative()});const mT=p({name:o(),valueType:o(),values:y(Ve([_(),o()])),unsetValues:y(o()),uris:y(o())}),pT=p({locationName:o(),attributeCount:m().int().nonnegative(),syncedAt:o(),attributes:y(mT)});p({attributes:y(pT),total:m().int().nonnegative()});const hT=p({locationName:o(),placeId:o(),tier:o(),amenities:y(o()),syncedAt:o(),place:Ie(o(),ya())});p({places:y(hT),total:m().int().nonnegative()});p({scope:p({locationName:o().nullable(),locationCount:m().int().nonnegative()}),performance:p({totals:Ie(o(),m()),recent7d:Ie(o(),m()),prior7d:Ie(o(),m()),deltaPct:Ie(o(),m().nullable())}),freshness:p({dataThroughDate:o().nullable(),latestStoredDate:o().nullable(),pendingDays:m().int().nonnegative()}),timeseries:y(p({date:o(),pending:_(),metrics:Ie(o(),m())})),keywords:p({total:m().int().nonnegative(),thresholdedCount:m().int().nonnegative(),thresholdedPct:m().int().min(0).max(100)}),placeActions:p({total:m().int().nonnegative(),hasReservationCta:_(),hasBookingCta:_(),hasDirectMerchantCta:_()}),lodging:p({lodgingLocationCount:m().int().nonnegative(),populatedLodgingCount:m().int().nonnegative(),emptyLodgingCount:m().int().nonnegative()}),profileCompleteness:p({locationCount:m().int().nonnegative(),withSecondaryCategories:m().int().nonnegative(),secondaryCategoryTotal:m().int().nonnegative(),withDescription:m().int().nonnegative(),withServiceArea:m().int().nonnegative(),withHours:m().int().nonnegative(),withPrimaryPhone:m().int().nonnegative(),permanentlyClosed:m().int().nonnegative(),temporarilyClosed:m().int().nonnegative()})});const fT={BUSINESS_DIRECTION_REQUESTS:"Direction requests",WEBSITE_CLICKS:"Website clicks",CALL_CLICKS:"Call clicks",BUSINESS_BOOKINGS:"Bookings",BUSINESS_CONVERSATIONS:"Conversations",BUSINESS_FOOD_ORDERS:"Food orders",BUSINESS_FOOD_MENU_CLICKS:"Food menu clicks",BUSINESS_IMPRESSIONS_DESKTOP_SEARCH:"Search impressions (desktop)",BUSINESS_IMPRESSIONS_MOBILE_SEARCH:"Search impressions (mobile)",BUSINESS_IMPRESSIONS_DESKTOP_MAPS:"Maps impressions (desktop)",BUSINESS_IMPRESSIONS_MOBILE_MAPS:"Maps impressions (mobile)"};function gT(e){const n=e.replace(/^BUSINESS_/,"").split("_").filter(Boolean).map(r=>r.toLowerCase());if(n.length===0)return e;const s=n.join(" ");return s.charAt(0).toUpperCase()+s.slice(1)}function z$(e){return fT[e]??gT(e)}const yT=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],bT=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function D$(e){return yT.includes(e)?"conversion":bT.includes(e)?"reach":"other"}p({id:o(),domain:o(),siteUrl:o().nullable().optional(),createdAt:o(),updatedAt:o()});const yp=p({id:o(),url:o(),httpCode:m().nullable().optional(),inIndex:_().nullable().optional(),lastCrawledDate:o().nullable().optional(),inIndexDate:o().nullable().optional(),inspectedAt:o(),documentSize:m().nullable().optional(),anchorCount:m().nullable().optional(),discoveryDate:o().nullable().optional()});p({summary:p({total:m(),indexed:m(),notIndexed:m(),unknown:m().optional(),percentage:m()}),lastInspectedAt:o().nullable(),indexed:y(yp).default([]),notIndexed:y(yp).default([]),unknown:y(yp).default([]).optional()});p({query:o(),impressions:m(),clicks:m(),ctr:m(),averagePosition:m()});p({date:o(),indexed:m(),notIndexed:m(),unknown:m()});const vT=p({url:o(),status:A(["success","error"]),submittedAt:o(),error:o().optional()});p({summary:p({total:m().int().nonnegative(),succeeded:m().int().nonnegative(),failed:m().int().nonnegative()}),results:y(vT).default([])});const ik=p({url:o(),verified:_()});p({sites:y(ik).default([])});p({connected:_(),domain:o(),siteUrl:o().nullable(),createdAt:o().nullable(),updatedAt:o().nullable()});p({connected:_(),domain:o(),siteUrl:o().nullable(),availableSites:y(ik).default([])});p({siteUrl:o()});const xT=p({name:o(),alive:_(),lastUsed:o().nullable()});p({connected:_(),endpoint:o(),version:o().optional(),browserVersion:o().optional(),targets:y(xT).default([])});const Bo=A(["live","staging"]);p({projectName:o(),url:o(),stagingUrl:o().optional(),username:o(),defaultEnv:Bo,createdAt:o(),updatedAt:o()});const Db=p({url:o(),reachable:_(),pageCount:m().nullable().optional(),version:o().nullable().optional(),error:o().nullable().optional(),plugins:y(o()).optional(),authenticatedUser:p({id:m(),slug:o()}).nullable().optional()});p({connected:_(),projectName:o(),defaultEnv:Bo,live:Db.nullable(),staging:Db.nullable(),adminUrl:o().nullable().optional()});const kT=p({id:m(),slug:o(),title:o(),status:o(),modifiedAt:o().nullable().optional(),link:o().nullable().optional()}),sk=p({title:o().nullable(),description:o().nullable(),noindex:_().nullable(),writable:_().default(!1),writeTargets:y(o()).default([])}),wT=p({type:o(),json:Ie(o(),ya())}),ST=kT.extend({env:Bo,content:o(),seo:sk,schemaBlocks:y(wT).default([])}),Eb=ST.extend({contentHash:o(),contentSnippet:o()}),ok=p({manualRequired:O(!0),targetUrl:o(),adminUrl:o().nullable().optional(),content:o(),nextSteps:y(o()).default([])}),jT=p({slug:o(),severity:A(["high","medium","low"]),code:A(["noindex","missing-seo-title","missing-meta-description","missing-schema","thin-content"]),message:o()});p({slug:o(),title:o(),status:o(),wordCount:m(),seo:sk,schemaPresent:_(),issues:y(jT).default([])});const AT=p({slug:o(),status:A(["applied","skipped","manual"]),error:o().optional(),manualAssist:ok.optional()});p({env:Bo,strategy:A(["plugin","manual"]),results:y(AT)});const CT=p({slug:o(),status:A(["deployed","stripped","skipped","failed"]),schemasInjected:y(o()).optional(),manualAssist:ok.optional(),error:o().optional()});p({env:Bo,results:y(CT)});const NT=p({slug:o(),title:o(),canonrySchemas:y(o()),thirdPartySchemas:y(o()),hasCanonrySchema:_()});p({env:Bo,pages:y(NT)});const _T=p({name:o(),status:A(["completed","skipped","failed"]),summary:o().optional(),error:o().optional()});p({projectName:o(),steps:y(_T)});p({slug:o(),live:Eb,staging:Eb,hasDifferences:_(),differences:p({title:_(),slug:_(),content:_(),seoTitle:_(),seoDescription:_(),noindex:_(),schema:_()})});const zT=p({name:o(),displayName:o().optional(),keyUrl:o().optional(),modelHint:o().optional(),model:o().optional(),defaultModel:o().optional(),configured:_(),quota:B_.optional(),vertexConfigured:_().optional()}),DT=p({name:o(),displayName:o(),mode:A(["api","browser"]),modelConfigurable:_(),defaultModel:o(),knownModels:y(p({id:o(),displayName:o(),tier:A(["flagship","standard","fast","economy"])})).default([]),modelValidationPattern:p({source:o(),flags:o()}),modelValidationHint:o()}),Tb=p({configured:_()});p({providers:y(zT).default([]),providerCatalog:y(DT).default([]),google:Tb,bing:Tb});const en=A(["queued","running","completed","partial","failed","cancelled"]),sa=en.enum,rk=A(["answer-visibility","site-audit","gsc-sync","inspect-sitemap","ga-sync","bing-inspect","bing-inspect-sitemap","backlink-extract","traffic-sync","aeo-discover-seed","aeo-discover-probe","gbp-sync","ads-sync","google-ads-sync","gtm-sync"]),Te=rk.enum,X0=A(["manual","scheduled","config-apply","backfill","probe"]),go=X0.enum,Pn=A(["cited","not-cited"]),su=Pn.enum,ou=A(["visible","not-visible"]);ou.enum;const Wr=A(["mentioned","not-mentioned"]);Wr.enum;const lk=A(["new","cited","lost","emerging","not-cited"]);lk.enum;const ET=A(["new","mentioned","lost","emerging","not-mentioned"]);ET.enum;const TT=A([go.manual,go.probe]);p({kind:O(Te["answer-visibility"]).optional(),trigger:TT.optional(),providers:y(ft).optional(),queries:y(o().min(1)).min(1).optional(),measurementScope:E9.optional(),location:o().min(1).optional(),allLocations:_().optional(),noLocation:_().optional()}).refine(e=>+!!e.location+ +!!e.allLocations+ +!!e.noLocation<=1,{message:'Only one of "location", "allLocations", or "noLocation" may be provided'});const RT=p({message:o(),raw:ya().optional()}),OT=p({message:o().optional(),providers:Ie(o(),RT).optional()}),BT=p({id:o(),projectId:o(),kind:rk,status:en,trigger:X0.default("manual"),measurementPlanVersionId:o().nullable().optional(),measurementManifest:Ie(o(),ya()).nullable().optional(),measurementScope:T9.nullable().optional(),measurementExecutionIdentity:v2.nullable().optional(),location:o().nullable().optional(),queries:y(o()).nullable().optional(),startedAt:o().nullable().optional(),finishedAt:o().nullable().optional(),error:OT.nullable().optional(),queryBasketRevision:m().int().nullable().optional(),createdAt:o()});function J0(e){if(e.providers){const n=Object.entries(e.providers);if(n.length===1){const[s,r]=n[0];return`${s}: ${r.message}`}if(n.length>1)return n.map(([s,r])=>`${s}: ${r.message}`).join(" • ")}return e.message??"Run failed."}const Cu=p({uri:o(),title:o()}),qT=p({status:A(["applied","ignored","browser-implicit","unknown"]),resolved:la.nullable().optional()}),ck=p({id:o(),runId:o(),queryId:o(),query:o().optional(),provider:ft,citationState:Pn,answerMentioned:_().optional(),visibilityState:ou.optional(),mentionState:Wr.optional(),transition:lk.optional(),answerText:o().nullable().optional(),citedDomains:y(o()).default([]),citedUrls:y(o()).nullable().default(null),captureStatus:Ve([vu,ce()]).default(null),sourceCount:m().int().nonnegative().nullable().default(null),resolvedCount:m().int().nonnegative().nullable().default(null),captureVersion:m().int().positive().nullable().default(null),retrievalStatus:Ve([V0,ce()]).default(null),retrievalContract:Ve([L0,ce()]).default(null),competitorOverlap:y(o()).default([]),citedCompetitorDomains:y(o()).default([]),mentionedCompetitorDomains:y(o()).default([]),recommendedCompetitors:y(o()).default([]),matchedTerms:y(o()).default([]),groundingSources:y(Cu).default([]),searchQueries:y(o()).default([]),model:o().nullable().optional(),servedModel:o().nullable().optional(),location:o().nullable().optional(),requestedContext:la.nullable().optional(),supportedContext:qT.nullable().optional(),createdAt:o()});p({snapshots:y(ck),total:m().int().nonnegative()});const MT=p({queryId:o().nullable(),query:o().nullable(),run1State:Pn.nullable(),run2State:Pn.nullable(),run1AnswerMentioned:_().nullable(),run2AnswerMentioned:_().nullable(),run1VisibilityState:ou.nullable(),run2VisibilityState:ou.nullable(),run1MentionState:Wr.nullable().optional(),run2MentionState:Wr.nullable().optional(),changed:_(),visibilityChanged:_()});p({run1:o(),run2:o(),diff:y(MT)});const PT=BT.extend({snapshots:y(ck).optional()}),IT=p({totalRuns:m().int().nonnegative(),run:PT.nullable()});p({id:o(),projectId:o().nullable().optional(),actor:o(),action:o(),entityType:o(),entityId:o().nullable().optional(),diff:ya().optional(),userAgent:o().nullable().optional(),actorSession:o().nullable().optional(),createdAt:o()});const VT=A(["yes","no","unknown","not-mentioned"]),Rb=y(o().min(1));p({companyName:o().min(1),domain:o().min(1),queries:Rb.optional(),phrases:Rb.optional(),competitors:y(o().min(1)).optional().default([])}).superRefine((e,n)=>{e.queries!==void 0&&e.phrases!==void 0&&n.addIssue({code:"custom",message:"Use queries; phrases is accepted only as a legacy alias when queries is omitted",path:["phrases"]})});const LT=p({name:o(),count:m().int().nonnegative()}),UT=p({id:o(),name:o(),weight:m(),score:m(),findings:y(p({type:o(),message:o()})).default([]),recommendations:y(o()).default([])}),GT=p({url:o(),finalUrl:o(),auditedAt:o(),overallScore:m(),summary:o(),factors:y(UT).default([])}),$T=p({industry:o(),summary:o(),services:y(o()).default([]),categoryTerms:y(o()).default([])}),HT=p({provider:o(),displayName:o(),model:o().nullable().optional(),mentioned:_(),cited:_(),describedAccurately:VT,accuracyNotes:o().nullable().optional(),incorrectClaims:y(o()).default([]),recommendedCompetitors:y(o()).default([]),citedDomains:y(o()).default([]),groundingSources:y(Cu).default([]),searchQueries:y(o()).default([]),answerText:o(),error:o().nullable().optional()}),KT=p({query:o(),providerResults:y(HT).default([])}),QT=p({totalQueries:m().int().nonnegative(),totalProviders:m().int().nonnegative(),totalComparisons:m().int().nonnegative(),mentionCount:m().int().nonnegative(),citationCount:m().int().nonnegative(),topCompetitors:y(LT).default([]),visibilityGap:o(),whatThisMeans:y(o()).default([]),recommendedActions:y(o()).default([])});p({companyName:o(),domain:o(),homepageUrl:o(),generatedAt:o(),queries:y(o()).default([]),competitors:y(o()).default([]),profile:$T,audit:GT,queryResults:y(KT).default([]),summary:QT});const uk=Ve([en,ce()]),W0=A(["pass","partial","fail"]);W0.enum;const dk=A(["up","down","flat"]);dk.enum;const ZT=p({id:o(),name:o(),weight:m(),avgScore:m(),status:W0,pagesPassing:m().int().nonnegative(),pagesPartial:m().int().nonnegative(),pagesFailing:m().int().nonnegative()}),FT=p({factorId:o(),factorName:o(),avgScore:m(),affectedPages:m().int().nonnegative(),totalPages:m().int().nonnegative(),affectedPct:m().int().nonnegative(),topRecommendations:y(o()).default([])});p({project:o(),hasData:_(),runId:o().nullable(),runStatus:uk,sitemapUrl:o().nullable(),auditedAt:o().nullable(),aggregateScore:m(),pagesDiscovered:m().int().nonnegative(),pagesAudited:m().int().nonnegative(),pagesSkipped:m().int().nonnegative(),pagesErrored:m().int().nonnegative(),deltaScore:m().nullable(),trend:Ve([dk,ce()]),previousScore:m().nullable(),previousAuditedAt:o().nullable(),factors:y(ZT).default([]),crossCuttingIssues:y(FT).default([]),prioritizedFixes:y(o()).default([])});const mk=p({id:o(),name:o(),weight:m(),score:m()}),YT=p({url:o(),overallScore:m(),status:A(["success","error"]),error:o().nullable().optional(),factors:y(mk).default([])});p({project:o(),runId:o().nullable(),auditedAt:o().nullable(),total:m().int().nonnegative(),pages:y(YT).default([])});const XT=p({runId:o(),auditedAt:o(),aggregateScore:m(),pagesAudited:m().int().nonnegative()});p({project:o(),points:y(XT).default([])});const JT=A(["disabled","complete","partial","unavailable"]);JT.enum;const WT=p({pagesDiscovered:m().int().nonnegative(),pagesFetched:m().int().nonnegative(),pagesEligible:m().int().nonnegative(),edges:m().int().nonnegative(),findings:m().int().nonnegative()}),eR=Be("state",[p({state:O("unavailable")}),p({state:O("disabled")}),p({state:O("complete"),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative()}),p({state:O("partial"),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative()})]);p({project:o(),hasCrawlData:_(),legacyAuditAvailable:_(),runId:o().nullable(),runStatus:uk,requestedRootUrl:o().nullable(),rootUrl:o().nullable(),crawlSchemaVersion:o().nullable().optional(),engineVersion:o().nullable().optional(),normalizationVersion:o().nullable().optional(),indexabilityVersion:o().nullable().optional(),linkScoreVersion:o().nullable().optional(),effectiveOptions:Ie(o(),ya()).default({}),complete:_(),termination:o().nullable(),detailsAvailable:_(),counts:WT,deadLinks:eR});A(["complete","unknown","max-pages","max-edges","max-fetches","max-duration","max-bytes","max-page-bytes","max-depth","max-links-per-page","max-query-variants","max-sitemap-fanout","max-sitemap-urls","root-host-redirect"]);const Nu=A(["eligible","hidden","resource","redirect","failed","unchecked"]),E$=Nu.enum,T$=Nu.options,lo={discovered:"discovered",robotsBlocked:"robots-blocked",html:"html",redirect:"redirect",nonHtml:"non-html",fetchError:"fetch-error"},Pc={indexable:"indexable",noindex:"noindex",blocked:"blocked",unknown:"unknown"},tR={robotsDisallow:"robots-disallow",redirectTerminal:"redirect-terminal",metaRobotsNoindex:"meta-robots-noindex",xRobotsNoindex:"x-robots-noindex",canonicalToOther:"canonical-to-other",notHtmlOrUnavailable:"not-html-or-unavailable"};function aR(e){return e.indexabilityReasons?.some(n=>n===tR.canonicalToOther)===!0||e.nodeKey!==void 0&&e.canonicalNodeKey!==null&&e.canonicalNodeKey!==void 0&&e.canonicalNodeKey!==e.nodeKey}function R$(e){switch(e.fetchState){case lo.fetchError:return"failed";case lo.discovered:return"unchecked";case lo.nonHtml:return"resource";case lo.redirect:return"redirect";case lo.robotsBlocked:return"hidden";case lo.html:break;default:return"unchecked"}if(aR(e))return"hidden";switch(e.indexabilityState){case Pc.indexable:return"eligible";case Pc.noindex:case Pc.blocked:return"hidden";case Pc.unknown:default:return"unchecked"}}const O$=15,nR=A(["navigation","content","unknown"]);nR.enum;const iR=p({navigation:m().int().nonnegative(),content:m().int().nonnegative(),unknown:m().int().nonnegative()}),pk=A(["placement","ubiquity","unmeasured"]);pk.enum;const _u=A(["applied","applied-placement","applied-placement-with-ubiquity","applied-placement-partial","unavailable-too-few-pages","unavailable-legacy-scan"]);_u.enum;function B$(e){switch(e){case"applied":case"applied-placement":case"applied-placement-with-ubiquity":case"applied-placement-partial":return!0;case"unavailable-too-few-pages":case"unavailable-legacy-scan":return!1}}const zu=A(["all","content","template"]);zu.enum;const sR=A(["anchor","redirect","canonical","link"]);sR.enum;const el=p({nodeKey:o(),url:o(),finalUrl:o().nullable(),path:o(),parentPath:o(),discoverySource:o(),fetchState:o(),httpStatus:m().int().nullable(),canonicalUrl:o().nullable(),indexabilityState:o(),indexabilityReasons:y(o()).default([]),auditState:o(),auditScore:m().nullable(),inventoryEligible:_(),depth:m().int().nullable(),inboundUniqueEdges:m().int().nonnegative(),outboundUniqueEdges:m().int().nonnegative(),inboundOccurrences:m().int().nonnegative(),outboundOccurrences:m().int().nonnegative(),linkScoreRaw:m().nullable(),linkScoreNormalized:m().nullable(),healthState:Nu}),oR=p({type:A(["found","missing","info","timeout","unreachable"]),code:o().min(1),message:o().min(1)}),Ob=mk.extend({status:W0,applicable:_().nullable(),findings:y(oR).default([]),recommendations:y(o()).default([])}),Bb=p({id:o().min(1),severity:A(["critical","warning"]),detail:o().min(1),recommendation:o().min(1)}),Ic=p({project:o(),runId:o(),complete:_(),termination:o().nullable()}),qb=p({nodeKey:o(),url:o(),auditState:o()});Be("state",[p({state:O("no-crawl"),project:o(),runId:ce()}),Ic.extend({state:O("details-unavailable")}),Ic.extend({state:O("not-found")}),Ic.merge(qb).extend({state:O("not-audited"),auditScore:ce(),factors:y(Ob).length(0).default([]),criticalDefects:y(Bb).length(0).default([])}),Ic.merge(qb).extend({state:O("ready"),auditScore:m(),evidenceState:A(["complete","scores-only"]),factors:y(Ob).default([]),criticalDefects:y(Bb).default([])})]);const rR=A(["applied","unavailable-legacy-scan"]);p({project:o(),hasCrawlData:_(),runId:o().nullable(),total:m().int().nonnegative(),nextCursor:o().nullable(),healthStateFilter:Ve([rR,ce()]).default(null),pages:y(el).default([])});const lR=p({path:o(),url:o().nullable(),hasPage:_(),pageCount:m().int().positive(),inventoryEligibleCount:m().int().nonnegative(),fetchedCount:m().int().nonnegative()});p({project:o(),hasCrawlData:_(),runId:o().nullable(),parentPath:o(),nextCursor:o().nullable(),children:y(lR).default([])});const ds=p({edgeKey:o(),sourceNodeKey:o(),sourceUrl:o(),targetNodeKey:o().nullable(),targetUrl:o(),relation:o(),internal:_(),followable:_(),occurrences:m().int().positive(),followableOccurrences:m().int().nonnegative(),nofollowOccurrences:m().int().nonnegative(),anchors:y(o()).default([]),isTemplate:Ve([_(),ce()]),templateRatio:Ve([m(),ce()]),templateSource:pk,placementOccurrences:Ve([iR,ce()])}),cR=p({nodeKey:o(),url:o(),path:o(),depth:m().int().nonnegative().nullable(),indexabilityState:o(),fetchState:o(),auditState:o(),auditScore:m().nullable(),inventoryEligible:_(),inboundUniqueEdges:m().int().nonnegative(),outboundUniqueEdges:m().int().nonnegative(),linkScoreNormalized:m().nullable(),healthState:Nu,x:m(),y:m()}),uR=p({edgeKey:o(),sourceNodeKey:o(),targetNodeKey:o(),followable:_(),occurrences:m().int().positive(),isTemplate:_()}),dR=A(["no-crawl","legacy-snapshot","details-unavailable","layout-failed","empty-crawl"]),mR=Be("state",[p({state:O("ready"),version:o().min(1),computedAt:o().min(1),templateLinksExcluded:_()}),p({state:O("unavailable"),version:ce(),reason:dR})]);p({project:o(),hasCrawlData:_(),runId:o().nullable(),rootNodeKey:o().nullable(),layout:mR,templateDetection:_u,linkKind:zu,totalNodes:m().int().nonnegative(),totalEdges:m().int().nonnegative(),totalTemplateEdges:m().int().nonnegative(),totalContentEdges:m().int().nonnegative(),nodes:y(cR).default([]),edges:y(uR).default([]),omittedNodes:m().int().nonnegative(),omittedEdges:m().int().nonnegative(),sampled:_()});const q$=2e4,M$=5e4,pR=A(["focus","inbound","outbound","both","transitive"]),hR=el.extend({distance:m().int().nonnegative(),relationToFocus:pR});p({project:o(),hasCrawlData:_(),runId:o().nullable(),complete:_(),termination:o().nullable(),state:A(["no-crawl","details-unavailable","ready"]),focusNodeKey:o().nullable(),focusUrl:o().nullable(),hops:m().int().min(0).max(3),totalNodes:m().int().nonnegative(),totalEdges:m().int().nonnegative(),nodes:y(hR).default([]),edges:y(ds).default([]),omittedNodes:m().int().nonnegative(),omittedEdges:m().int().nonnegative(),countAccuracy:A(["exact","lower-bound"]),truncated:_()});const Mb=p({nodeKey:o(),url:o(),path:o()});p({project:o(),runId:o().nullable(),complete:_(),termination:o().nullable(),state:A(["no-crawl","details-unavailable","found","unreachable","truncated"]),from:Mb.nullable(),to:Mb.nullable(),maxDepth:m().int().positive(),visitedNodes:m().int().nonnegative(),nodes:y(el).default([]),edges:y(ds).default([])});const hk=A(["added","removed","changed"]),fR=p({entity:O("page"),change:hk,key:o(),changedFields:y(o()).default([]),before:el.nullable(),after:el.nullable()}),gR=p({entity:O("link"),change:hk,key:o(),changedFields:y(o()).default([]),before:ds.nullable(),after:ds.nullable()}),yR=Be("entity",[fR,gR]),Pb=p({added:m().int().nonnegative(),removed:m().int().nonnegative(),changed:m().int().nonnegative()}),bR=p({scope:A(["all","pages","links"]),change:A(["all","added","removed","changed"])});Be("state",[p({project:o(),state:O("unavailable"),reason:A(["no-crawl","insufficient-history","details-unavailable","partial-not-comparable"]),fromRunId:o().nullable(),toRunId:o().nullable()}),p({project:o(),state:O("incompatible"),reason:O("incompatible-versions"),fromRunId:o(),toRunId:o(),mismatchedVersions:y(o()).min(1)}),p({project:o(),state:O("ready"),fromRunId:o(),toRunId:o(),versions:p({crawlSchema:o(),normalization:o(),indexability:o(),linkScore:o()}),filters:bR,summaryState:A(["exact","omitted-on-continuation"]),summary:p({pages:Pb,links:Pb}).nullable(),total:m().int().nonnegative().nullable(),nextCursor:o().nullable(),changes:y(yR).default([])})]);p({project:o(),hasCrawlData:_(),runId:o().nullable(),total:m().int().nonnegative(),nextCursor:o().nullable(),templateDetection:_u,linkKind:zu,edges:y(ds).default([])});p({project:o(),hasCrawlData:_(),runId:o().nullable(),nodeKey:o().nullable(),url:o().nullable(),templateDetection:_u,linkKind:zu,inbound:y(ds).default([]),outbound:y(ds).default([]),inboundTruncated:_(),outboundTruncated:_()});const Ib=p({findingKey:o(),severity:o(),sourceNodeKey:o().nullable(),sourceUrl:o().nullable(),targetNodeKey:o().nullable(),targetUrl:o().nullable(),evidence:Ie(o(),ya()).default({})});Be("state",[p({project:o(),runId:o().nullable(),state:O("unavailable"),legacyAuditAvailable:_()}),p({project:o(),runId:o(),state:O("disabled"),checkDeadLinks:O(!1)}),p({project:o(),runId:o(),state:O("complete"),checkDeadLinks:O(!0),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative(),total:m().int().nonnegative(),nextCursor:o().nullable(),deadLinks:y(Ib).default([])}),p({project:o(),runId:o(),state:O("partial"),checkDeadLinks:O(!0),checked:m().int().nonnegative(),found:m().int().nonnegative(),unverified:m().int().nonnegative(),total:m().int().nonnegative(),nextCursor:o().nullable(),deadLinks:y(Ib).default([])})]);p({sitemapUrl:o().url().optional(),limit:m().int().positive().max(2e3).optional(),maxPages:m().int().positive().max(5e4).optional(),maxEdges:m().int().positive().max(1e6).optional(),maxDepth:m().int().min(0).max(100).optional(),checkDeadLinks:_().default(!1)});p({runId:o(),status:en});const vR=p({runId:o(),status:en,createdAt:o(),startedAt:o().nullable(),finishedAt:o().nullable(),hasCrawlData:_()});p({project:o(),scans:y(vR).default([])});const xR=A(["queued","discovering","checking","arranging-map","completed","partial","failed","cancelled"]),kR=p({state:A(["pending","ready","unavailable"]),layoutVersion:o().nullable(),failureCode:o().nullable(),updatedAt:o().nullable()}),wR=p({id:o(),state:o(),pagesDiscovered:m().int().nonnegative(),pagesFetched:m().int().nonnegative(),pagesEligible:m().int().nonnegative(),pagesErrored:m().int().nonnegative(),edgesDiscovered:m().int().nonnegative(),lastUpdatedAt:o(),startedAt:o().nullable(),finishedAt:o().nullable(),error:o().nullable()});p({project:o(),runId:o(),status:en,phase:xR,attempt:wR.nullable(),layout:kR,error:o().nullable()});const SR=A(["waiting","collecting","terminal"]),jR=p({nodeKey:o(),url:o(),auditScore:m(),checksNeedingAttention:m().int().nonnegative()});p({project:o(),runId:o(),status:en,state:SR,attemptId:o().nullable(),pagesAudited:m().int().nonnegative(),updatedAt:o().nullable(),examples:y(jR).max(12).default([])});const eh=A(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync","doctor"]);eh.enum;p({id:o(),projectId:o(),kind:eh,cronExpr:o(),preset:o().nullable().optional(),timezone:o().default("UTC"),enabled:_().default(!0),providers:y(ft).default([]),sourceId:o().nullable().optional(),lastRunAt:o().nullable().optional(),nextRunAt:o().nullable().optional(),createdAt:o(),updatedAt:o()});p({kind:eh.optional(),preset:o().optional(),cron:o().optional(),timezone:o().optional().default("UTC"),enabled:_().optional().default(!0),providers:y(ft).optional().default([]),sourceId:o().optional()}).refine(e=>e.preset&&!e.cron||!e.preset&&e.cron,{message:'Exactly one of "preset" or "cron" must be provided'});const th=A(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);th.enum;const ah=A(["cited","aspirational","wasted-surface"]),Vb=ah.enum;Vb.cited,Vb.aspirational;const Du=A(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),AR=Du.enum;AR["direct-competitor"];const Eu=A(["queued","seeding","probing","completed","failed"]);Eu.enum;const fk=p({domain:o().min(1),hits:m().int().positive(),competitorType:Du.default("unknown")}),CR=p({id:o(),sessionId:o(),projectId:o(),query:o(),bucket:ah.nullable().default(null),citationState:Pn,citedDomains:y(o()).default([]),answerMentioned:_().nullable().default(null),createdAt:o()}),NR=p({id:o(),projectId:o(),status:Eu,icpDescription:o().nullable().optional(),seedProvider:o().nullable().optional(),seedCountRaw:m().int().nullable().optional(),seedCount:m().int().nullable().optional(),seedFromAnswerCount:m().int().nullable().optional(),seedFromGroundingCount:m().int().nullable().optional(),seedBrandFilteredCount:m().int().nullable().optional(),buyerDescription:o().nullable().optional(),locations:y(la).nullable().optional(),seedRawCandidates:y(o()).nullable().optional(),dedupClusterMinSims:y(m()).nullable().optional(),dedupBandPairFraction:m().nullable().optional(),dedupPairsTotal:m().int().nullable().optional(),seedProviders:y(o()).nullable().optional(),seedProviderCounts:Ie(o(),m().int()).nullable().optional(),canonicalCount:m().int().nullable().optional(),dedupThreshold:m().nullable().optional(),probeCount:m().int().nullable().optional(),citedCount:m().int().nullable().default(null),aspirationalCount:m().int().nullable().default(null),wastedCount:m().int().nullable().default(null),competitorMap:y(fk).default([]),warning:o().nullable().optional(),error:o().nullable().optional(),startedAt:o().nullable().optional(),finishedAt:o().nullable().optional(),createdAt:o()});NR.extend({probes:y(CR).default([])});const _R=500,zR=8,DR=["gemini","openai"],ER=A(DR);p({icpDescription:o().min(1).optional(),buyerDescription:o().min(1).optional(),seedProviders:y(ER).min(1).transform(e=>[...new Set(e)].sort()).optional(),dedupThreshold:m().min(0).max(1).optional(),maxProbes:m().int().positive().max(_R).optional(),probeConcurrency:m().int().min(1).max(zR).optional(),locations:y(o().min(1)).optional()});p({buckets:y(ah).min(1).optional(),includeCompetitors:_().optional(),competitorTypes:y(Du).min(1).optional()});p({sessionId:o(),projectId:o(),status:Eu,queriesByBucket:p({cited:y(o()),aspirational:y(o()),"wasted-surface":y(o())}),suggestedCompetitors:y(fk)});p({sessionId:o(),projectId:o(),promoted:p({queries:y(o()),competitors:y(o())}),skipped:p({queries:y(o()),competitors:y(o())})});Ve([O("cli"),o().regex(/^discovery:.+$/)]);const TR=p({query:o().min(1),probeHits:m().int().positive()}),RR=p({rawCandidates:m().int().nonnegative(),admitted:m().int().nonnegative(),rejected:p({belowFloor:m().int().nonnegative(),length:m().int().nonnegative(),navigational:m().int().nonnegative(),duplicate:m().int().nonnegative(),offAnchor:m().int().nonnegative(),semanticDuplicate:m().int().nonnegative()})});p({sessionId:o(),projectId:o(),provider:o(),status:Eu,minProbeHits:m().int().positive(),anchorApplied:_(),semanticNoveltyApplied:_(),candidates:y(TR),stats:RR});const nh=A(["own","direct-competitor","ota-aggregator","editorial-media","other"]);nh.enum;const gk=A(["7d","30d","90d","all"]),Lb=A(["improving","declining","stable"]),OR=A(["mentioned","cited"]);OR.enum;const Wp=p({citationRate:m(),cited:m().int(),total:m().int(),mentionRate:m(),mentionedCount:m().int()}),ih=o().trim().min(1),BR=y(ih).min(1).superRefine((e,n)=>{for(let s=1;s<e.length;s+=1)e[s-1]>=e[s]&&n.addIssue({code:"custom",message:"mixed model IDs must be sorted and unique",path:[s]})}),jo=Be("status",[p({status:O("known"),model:ih}),p({status:O("unknown")}),p({status:O("mixed"),models:BR,includesUnknown:_()})]),qR=p({observedAt:o(),bucketStartDate:o(),from:jo,to:jo,fromPreWindowAnchor:_().optional(),anchorObservedAt:o().optional()}),yk=p({latestObservation:p({observedAt:o(),state:jo}),events:y(qR),eventTotal:m().int().nonnegative().optional(),anchorUnavailable:_().optional()}),MR=Ie(o(),yk),PR=yk.extend({latestServedModelIds:y(ih).default([])}),IR=Ie(o(),PR),VR=p({observedAt:o(),configured:jo,served:jo}),LR=p({scope:A(["non-brand","pooled"]),rate:m().nullable(),projectMentionSnapshots:m().int().nonnegative(),competitorMentionSnapshots:m().int().nonnegative()}),UR=p({startDate:o(),endDate:o(),dataStartDate:o(),dataEndDate:o(),sweepCount:m().int().nonnegative(),citationRate:m(),cited:m().int(),total:m().int(),queryCount:m().int(),mentionRate:m(),mentionedCount:m().int(),mentionShare:LR,byProvider:Ie(o(),Wp),modelEvidenceByProvider:Ie(o(),jo).default({}),basketRevision:m().int().nullable().default(null)}),GR=p({revision:m().int(),at:o(),added:y(o()),removed:y(o())}),$R=p({date:o(),delta:m().int(),label:o()}),HR=p({at:o(),identity:v2});p({window:gk,mentionShareScope:A(["non-brand","pooled"]),buckets:y(UR),overall:Wp,byProvider:Ie(o(),Wp),trend:Lb,mentionTrend:Lb,queryChanges:y($R),basketChanges:y(GR).default([]),executionIdentityChanges:y(HR).default([]),referenceBasketRevision:m().int().nullable().default(null),modelAttribution:MR.default({}),servedModelAttribution:IR.default({}),modelServiceMismatch:Ie(o(),VR).default({}),modelPointerChanges:Ie(o(),$D).default({})});const Ub=p({category:th,label:o(),count:m().int(),percentage:m(),topDomains:y(p({domain:o(),count:m().int()}))}),KR=p({domain:o(),count:m().int(),percentage:m(),category:th,label:o(),surfaceClass:nh}),QR=p({surfaceClass:nh,label:o(),count:m().int(),percentage:m(),domainCount:m().int()}),Gb=p({totalCitedSlots:m().int(),domainTotal:m().int(),entries:y(KR),truncatedDomainCount:m().int(),truncatedCitedSlots:m().int(),bySurfaceClass:y(QR)});p({overall:y(Ub),byQuery:Ie(o(),y(Ub)),ranked:Gb,byProvider:Ie(o(),Gb),runId:o(),window:gk,limit:m().int().nullable()});const sh=p({total:m().int(),checked:m().int(),mentioned:m().int(),cited:m().int(),mentionRate:m().nullable(),citedRate:m().nullable()}),bk=sh.extend({provider:o(),firstObserved:o(),lastObserved:o()}),ZR=sh.extend({queryId:o().nullable(),query:o(),firstObserved:o(),lastObserved:o(),providers:y(bk).optional()}),FR=p({since:o().nullable(),until:o().nullable(),lastRuns:m().int().nullable(),runCount:m().int()}),YR=A(["provider"]),e0=p({domain:o(),mentions:m().int()}),XR=p({queryClass:A(["branded","non-brand","pooled"]),percent:m().nullable(),competitorCount:m().int().nonnegative(),projectMentions:m().int(),competitorMentions:m().int(),snapshotsWithAnswerText:m().int(),perCompetitor:y(e0)});p({project:o(),groupBy:YR.optional(),window:FR,totals:sh,byProvider:y(bk).optional(),queries:y(ZR),shareOfVoice:XR.optional()});const JR=A(["within-noise","moved","insufficient-data","model-discontinuous","model-unknown"]),WR=A(["up","down","flat"]),$b=p({availability:A(["available","no-observations","no-competitive-frame"]),point:m().nullable(),ciLow:m().nullable(),ciHigh:m().nullable(),numerator:m().int(),denominator:m().int()}),eO=A(["mention-share-of-voice","cited-share-of-voice","mention-rate","cited-rate"]),tO=p({key:eO,label:o(),queryClass:A(["all","non-brand","pooled"]),driftRobust:_(),from:$b,to:$b,rateRatio:m().nullable(),direction:Ve([WR,ce()]),verdict:JR}),Hb=p({month:o(),since:o(),until:o(),runCount:m().int(),lowRunCount:_()}),aO=p({queryCount:m().int(),excludedFromOnly:m().int(),excludedToOnly:m().int(),providers:y(o()),excludedProviders:y(o())}),nO=p({provider:o(),fromModels:y(o()),toModels:y(o())}),iO=A(["included","model-discontinuous","model-unknown"]),sO=p({provider:o(),status:iO,fromModels:y(o()),toModels:y(o())}),oO=A(["comparable","model-discontinuous","model-unknown","insufficient-data"]),rO=p({status:oO,comparedProviders:y(o()),providers:y(sO)}),lO=p({provider:o(),from:p({checked:m().int(),mentioned:m().int(),cited:m().int()}),to:p({checked:m().int(),mentioned:m().int(),cited:m().int()})}),cO=p({from:p({count:m().int(),of:m().int()}),to:p({count:m().int(),of:m().int()})});p({project:o(),from:Hb,to:Hb,basket:aO,metrics:y(tO),queriesMentioned:cO,byProvider:y(lO),modelChanges:y(nO),continuity:rO,competitors:p({from:y(e0),to:y(e0)})});A(["json","csv"]);const uO=p({runId:o(),runKind:O("answer-visibility"),runStatus:en,runTrigger:X0,runCreatedAt:o(),runStartedAt:o().nullable(),runFinishedAt:o().nullable(),snapshotId:o(),snapshotCreatedAt:o(),queryId:o().nullable(),query:o().nullable(),provider:o(),model:o().nullable(),location:o().nullable(),citationState:Pn,cited:_(),answerMentioned:_().nullable(),mentionState:Ve([Wr,ce()]),citedDomains:y(o()),citedUrls:y(o()).nullable(),captureStatus:Ve([vu,ce()]),sourceCount:m().int().nonnegative().nullable(),resolvedCount:m().int().nonnegative().nullable(),captureVersion:m().int().positive().nullable(),competitorOverlap:y(o()),recommendedCompetitors:y(o()),answerText:o().nullable(),groundingSources:y(Cu),searchQueries:y(o())}),dO=p({since:o().nullable(),until:o().nullable(),includeProbes:_()});p({schemaVersion:O("canonry.results-export/v1"),generatedAt:o(),project:p({id:o(),name:o(),displayName:o(),canonicalDomain:o(),country:o(),language:o()}),filters:dO,recordCount:m().int().nonnegative(),records:y(uO)});const Tu=A(["organic","paid"]);Tu.enum;p({id:o(),projectId:o(),propertyId:o(),clientEmail:o(),connected:_(),createdAt:o(),updatedAt:o()});p({date:o(),landingPage:o(),sessions:m(),organicSessions:m(),users:m()});const oh=A(["session","first_user","manual_utm"]),mO=p({source:o(),medium:o(),trafficClass:Tu,sessions:m(),users:m().optional(),sourceDimension:oh}),pO=p({source:o(),medium:o(),trafficClass:Tu,sourceDimension:oh,landingPage:o(),sessions:m(),users:m().optional()}),hO=p({source:o(),medium:o(),sessions:m(),users:m(),channelGroup:o()}),Pr=p({sessions:m(),sharePct:m(),sharePctDisplay:o()}),fO=p({organic:Pr,social:Pr,direct:Pr,ai:Pr,other:Pr});p({totalSessions:m(),totalOrganicSessions:m(),totalDirectSessions:m(),totalUsers:m().nullable(),topPages:y(p({landingPage:o(),sessions:m(),organicSessions:m(),directSessions:m(),users:m()})),aiReferrals:y(mO),aiReferralLandingPages:y(pO),aiSessionsDeduped:m(),aiUsersDeduped:m().optional(),paidAiSessionsDeduped:m(),paidAiUsersDeduped:m().optional(),organicAiSessionsDeduped:m(),organicAiUsersDeduped:m().optional(),aiSessionsBySession:m(),aiUsersBySession:m().optional(),paidAiSessionsBySession:m(),paidAiUsersBySession:m().optional(),organicAiSessionsBySession:m(),organicAiUsersBySession:m().optional(),socialReferrals:y(hO),socialSessions:m(),socialUsers:m(),channelBreakdown:fO,organicSharePct:m(),aiSharePct:m(),aiSharePctBySession:m(),paidAiSharePct:m(),paidAiSharePctBySession:m(),organicAiSharePct:m(),organicAiSharePctBySession:m(),directSharePct:m(),socialSharePct:m(),organicSharePctDisplay:o(),aiSharePctDisplay:o(),aiSharePctBySessionDisplay:o(),paidAiSharePctDisplay:o(),paidAiSharePctBySessionDisplay:o(),organicAiSharePctDisplay:o(),organicAiSharePctBySessionDisplay:o(),directSharePctDisplay:o(),socialSharePctDisplay:o(),otherSessions:m(),otherSharePct:m(),otherSharePctDisplay:o(),lastSyncedAt:o().nullable()});p({connected:_(),propertyId:o().nullable(),clientEmail:o().nullable(),authMethod:A(["service-account","oauth"]).nullable(),lastSyncedAt:o().nullable(),createdAt:o().nullable().optional(),updatedAt:o().nullable().optional()});const gO=p({propertyId:o(),displayName:o(),accountName:o()});p({properties:y(gO)});p({synced:_(),rowCount:m().int().nonnegative(),aiReferralCount:m().int().nonnegative(),socialReferralCount:m().int().nonnegative(),days:m().int().nonnegative(),requestedDays:m().int().nonnegative(),clamped:_(),syncedAt:o(),measurement:p({acquisition:p({days:m().int().nonnegative(),status:A(["ready","error"]),rowCount:m().int().nonnegative(),error:o().optional()}),leads:p({days:m().int().nonnegative(),status:A(["ready","error","not-configured"]),rowCount:m().int().nonnegative(),attributionScope:A(["landing-page","channel"]).optional(),error:o().optional()})}),syncedComponents:y(o()).optional()});p({date:o(),source:o(),medium:o(),trafficClass:Tu,landingPage:o(),sessions:m(),users:m(),sourceDimension:oh});const yO=p({source:o(),sessions:m(),paidSessions:m(),organicSessions:m()}),bO=p({date:o(),sessions:m(),paidSessions:m(),organicSessions:m(),bySource:y(yO)});p({days:y(bO),sources:y(o()),totalSessions:m(),totalPaidSessions:m(),totalOrganicSessions:m()});p({date:o(),source:o(),medium:o(),sessions:m(),users:m(),channelGroup:o()});p({date:o(),sessions:m(),organicSessions:m(),users:m(),usersSource:A(["deduplicated","landing-page-sum"])});p({id:o(),projectId:o(),runId:o().nullable(),overallCitedRate:m(),overallMentionRate:m(),totalPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),providerBreakdown:Ie(o(),p({citedRate:m(),mentionRate:m(),cited:m().int().nonnegative(),mentioned:m().int().nonnegative(),total:m().int().nonnegative()})),createdAt:o(),status:A(["ready","no-data"]),reason:O("no-runs-yet").optional()});const vk=A(["claude","openai","gemini","zai","deepinfra"]),vO=p({id:vk,label:o(),defaultModel:o(),configured:_(),keySource:A(["config","env"]).nullable()});p({providers:y(vO).default([]),defaultProvider:vk.nullable()});const xO=A(["aero","user","compaction"]);xO.enum;const xk=128;p({key:o().min(1).max(xk),value:o().min(1)});p({key:o().min(1).max(xk)});const qo=A(["commoncrawl","bing-webmaster"]);qo.enum;const rh=A(["queued","downloading","querying","ready","failed"]);rh.enum;p({id:o(),release:o(),status:rh,phaseDetail:o().nullable().optional(),vertexPath:o().nullable().optional(),edgesPath:o().nullable().optional(),vertexSha256:o().nullable().optional(),edgesSha256:o().nullable().optional(),vertexBytes:m().int().nullable().optional(),edgesBytes:m().int().nullable().optional(),projectsProcessed:m().int().nullable().optional(),domainsDiscovered:m().int().nullable().optional(),downloadStartedAt:o().nullable().optional(),downloadFinishedAt:o().nullable().optional(),queryStartedAt:o().nullable().optional(),queryFinishedAt:o().nullable().optional(),error:o().nullable().optional(),createdAt:o(),updatedAt:o()});const kO=p({linkingDomain:o(),numHosts:m().int(),source:qo}),wO=p({projectId:o(),release:o(),targetDomain:o(),totalLinkingDomains:m().int(),totalHosts:m().int(),top10HostsShare:o(),queriedAt:o(),source:qo,excludedLinkingDomains:m().int().optional(),excludedHosts:m().int().optional()});p({source:qo,summary:wO.nullable(),total:m().int(),rows:y(kO)});p({release:o(),totalLinkingDomains:m().int(),totalHosts:m().int(),top10HostsShare:o(),queriedAt:o(),source:qo});const SO=p({source:qo,connected:_(),hasData:_(),latestRelease:o().nullable(),totalLinkingDomains:m().int(),lastSyncedAt:o().nullable()});p({projectId:o(),targetDomain:o(),sources:y(SO),anyConnected:_(),anyData:_()});p({duckdbInstalled:_(),duckdbVersion:o().nullable().optional(),duckdbSpec:o(),pluginDir:o()});p({installed:_(),version:o(),path:o(),alreadyPresent:_()});p({release:o(),vertexUrl:o(),edgesUrl:o(),vertexBytes:m().int().nullable(),edgesBytes:m().int().nullable(),lastModified:o().nullable()});p({release:o(),syncStatus:rh.nullable(),bytes:m().int(),lastUsedAt:o().nullable()});const lh=A(["positive","caution","negative","neutral"]),wi=p({label:o(),value:o(),delta:o(),tone:lh,description:o(),tooltip:o().optional(),trend:y(m()),progress:m().optional(),providerCoverage:o().optional()}),Kb=p({projectMentionSnapshots:m().int().nonnegative(),competitorMentionSnapshots:m().int().nonnegative(),perCompetitor:y(p({domain:o(),mentionSnapshots:m().int().nonnegative(),shareOfCompetitiveTotal:m()})),snapshotsWithAnswerText:m().int().nonnegative(),snapshotsTotal:m().int().nonnegative(),score:m().int().min(0).max(100).nullable()}),jO=wi.extend({breakdown:Kb,scope:A(["non-brand","pooled"]),branded:Kb}),bp=p({gained:m().int().nonnegative(),lost:m().int().nonnegative(),tone:lh,hasPreviousRun:_(),gainedQueries:y(o()).optional(),lostQueries:y(o()).optional()}),AO=p({hasPreviousRun:_(),comparable:_(),querySetChanged:_(),previousRunAt:o().nullable(),currentQueryCount:m().int().nonnegative(),previousQueryCount:m().int().nonnegative(),comparableQueryCount:m().int().nonnegative(),addedQueryCount:m().int().nonnegative(),removedQueryCount:m().int().nonnegative(),addedQueries:y(o()),removedQueries:y(o())}),CO=p({id:o(),projectId:o(),runId:o().nullable(),type:A(["regression","gain","opportunity","first-citation","provider-pickup","persistent-gap","competitor-gained","competitor-lost","gbp-lodging-gap","gbp-listing-discrepancy","gbp-cta-gap","gbp-description-missing","gbp-metric-drop","gbp-keyword-drop"]),severity:A(["critical","high","medium","low"]),title:o(),query:o(),provider:o(),recommendation:p({action:o(),target:o().optional(),reason:o()}).optional(),cause:p({cause:o(),competitorDomain:o().optional(),details:o().optional()}).optional(),dismissed:_(),createdAt:o()}),NO=p({id:o(),projectId:o(),runId:o().nullable(),overallCitedRate:m(),overallMentionRate:m(),totalPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),providerBreakdown:Ie(o(),p({citedRate:m(),mentionRate:m(),cited:m().int().nonnegative(),mentioned:m().int().nonnegative(),total:m().int().nonnegative()})),createdAt:o(),status:A(["ready","no-data"]),reason:O("no-runs-yet").optional()});p({project:qz,latestRun:IT,health:NO.nullable(),topInsights:y(CO),queryCounts:p({totalQueries:m().int().nonnegative(),citedQueries:m().int().nonnegative(),notCitedQueries:m().int().nonnegative(),citedRate:m(),mentionedQueries:m().int().nonnegative(),notMentionedQueries:m().int().nonnegative(),mentionRate:m()}),providers:y(p({provider:o(),citedRate:m(),cited:m().int().nonnegative(),total:m().int().nonnegative()})),transitions:p({since:o().nullable(),gained:m().int().nonnegative(),lost:m().int().nonnegative(),emerging:m().int().nonnegative()}),scores:p({mention:wi,visibility:wi,mentionShare:jO,gapQueries:wi,mentionGaps:wi,indexCoverage:wi,competitorPressure:wi,runStatus:wi}),movementSummary:bp,citationMovement:bp,mentionMovement:bp,movementComparison:AO,competitors:y(p({id:o(),domain:o(),citationCount:m().int().nonnegative(),totalQueries:m().int().nonnegative(),pressureLabel:A(["None","Low","Moderate","High"]),citedQueries:y(o())})),providerScores:y(p({provider:o(),model:o().nullable(),score:m(),cited:m().int().nonnegative(),total:m().int().nonnegative(),trend:y(m()).optional()})),attentionItems:y(p({id:o(),tone:lh,title:o(),detail:o(),actionLabel:o(),href:o()})),runHistory:y(p({runId:o(),createdAt:o(),citedCount:m().int().nonnegative(),totalCount:m().int().nonnegative(),citationRate:m(),mentionedCount:m().int().nonnegative(),mentionRate:m(),status:o()})),suggestedQueries:p({rows:y(p({query:o(),impressions:m(),clicks:m(),avgPosition:m(),reason:o()})),totalCandidates:m().int().nonnegative(),skippedAlreadyTracked:m().int().nonnegative()}),dateRangeLabel:o(),contextLabel:o()});A(["snapshot","insight"]);const _O=p({kind:O("snapshot"),id:o(),runId:o(),query:o(),provider:o(),model:o().nullable(),citationState:Pn,matchedField:A(["answerText","citedDomains","citedUrls","searchQueries","query"]),snippet:o(),createdAt:o()}),zO=p({kind:O("insight"),id:o(),runId:o().nullable(),type:A(["regression","gain","opportunity","first-citation","provider-pickup","persistent-gap","competitor-gained","competitor-lost","gbp-lodging-gap","gbp-listing-discrepancy","gbp-cta-gap","gbp-description-missing","gbp-metric-drop","gbp-keyword-drop"]),severity:A(["critical","high","medium","low"]),title:o(),query:o(),provider:o(),matchedField:A(["title","query","recommendation","cause"]),snippet:o(),dismissed:_(),createdAt:o()}),DO=Be("kind",[_O,zO]);p({query:o(),totalHits:m().int().nonnegative(),truncated:_(),hits:y(DO)});const kk=A(["create","expand","refresh","add-schema"]);kk.enum;function P$(e){switch(e){case"create":return"Create";case"expand":return"Expand";case"refresh":return"Refresh";case"add-schema":return"Add schema"}}const wk=A(["gsc","competitor-evidence","both"]);wk.enum;const Sk=A(["high","medium","low"]);Sk.enum;const EO=A(["blog-post","comparison","listicle","how-to","guide","glossary"]);EO.enum;const jk=A(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);jk.enum;const ch=A(["ownable","ceded"]);ch.enum;const TO=p({url:o(),gscImpressions:m().nonnegative(),gscClicks:m().nonnegative(),gscAvgPosition:m().nonnegative().nullable(),organicSessions:m().nonnegative()}),RO=p({domain:o(),url:o(),title:o(),citationCount:m().int().nonnegative()}),OO=p({demand:m(),competitor:m(),absence:m(),gapSeverity:m()}),BO=p({actionId:o(),state:jk,lastUpdated:o()}),Ak=p({targetRef:o(),query:o(),action:kk,ourBestPage:TO.nullable(),winningCompetitor:RO.nullable(),score:m(),scoreBreakdown:OO,drivers:y(o()),demandSource:wk,actionConfidence:Sk,existingAction:BO.nullable(),winnabilityClass:ch,winnability:m().min(0).max(1).nullable()});p({targets:y(Ak),contextMetrics:p({totalAiReferralSessions:m().int().nonnegative(),latestRunId:o(),runTimestamp:o()})});const qO=p({targetRef:o(),addressedUrl:o().nullable(),note:o().nullable(),dismissedAt:o()});p({dismissals:y(qO)});p({targetRef:o().min(1),addressedUrl:o().url().optional(),note:o().max(500).optional()});p({targetRef:o(),promptVersion:o(),provider:o(),model:o(),responseText:o(),costMillicents:m().int().nonnegative(),generatedAt:o()});p({provider:o().optional(),model:o().optional(),forceRefresh:_().optional()});const MO=p({targetQuery:o().trim().min(1),winnabilityClass:ch,angle:o().trim().min(1),whyWinnable:o().trim().min(1),schemaHookup:o().trim().min(1),controllableSurfaceRationale:o().trim().min(1)});p({targetRef:o(),promptVersion:o(),provider:o(),model:o(),brief:MO,costMillicents:m().int().nonnegative(),generatedAt:o()});const PO=p({domain:o(),competitorType:Du,hits:m().int().nonnegative(),updatedAt:o()});p({classifications:y(PO)});const IO=p({uri:o(),title:o(),domain:o(),isOurDomain:_(),isCompetitor:_(),citationCount:m().int().nonnegative(),providers:y(ft)}),Ck=p({query:o(),groundingSources:y(IO)});p({sources:y(Ck),latestRunId:o()});const Nk=p({query:o(),competitorDomains:y(o()),competitorCount:m().int().nonnegative(),missRate:m().min(0).max(1),lastSeenInRunId:o()});p({gaps:y(Nk),latestRunId:o()});const _k=A(["ok","warn","fail","skipped"]);_k.enum;const uh=A(["global","project"]);uh.enum;const zk=A(["auth","config","providers","integrations","database","schedules","agent"]);zk.enum;const VO=p({id:o(),category:zk,scope:uh,title:o(),status:_k,code:o().describe('Stable machine-readable code (e.g. "google.token.refresh-failed"). Use this for filtering and remediation logic.'),summary:o(),remediation:o().nullable().optional().describe('Operator-facing next step. Null when status is "ok" or no specific remediation applies.'),details:Ie(o(),ya()).optional().describe("Structured context — principal email, redirect URI, missing scopes, etc. Stable per check id."),durationMs:m().int().nonnegative().describe("How long the check took to execute.")});p({scope:uh,project:o().nullable().describe('Project name when scope is "project", null otherwise.'),generatedAt:o().describe("ISO-8601 timestamp when this doctor run started."),durationMs:m().int().nonnegative(),summary:p({total:m().int().nonnegative(),ok:m().int().nonnegative(),warn:m().int().nonnegative(),fail:m().int().nonnegative(),skipped:m().int().nonnegative()}),checks:y(VO)});const LO=p({provider:o(),citationState:Pn,cited:_(),mentioned:_(),runId:o(),runCreatedAt:o()}),UO=p({queryId:o(),query:o(),providers:y(LO),citedCount:m().int().nonnegative(),mentionedCount:m().int().nonnegative(),totalProviders:m().int().nonnegative()}),GO=p({queryId:o(),query:o(),provider:o(),citingCompetitors:y(o()),runId:o(),runCreatedAt:o()}),$O=p({providersConfigured:m().int().nonnegative(),providersCiting:m().int().nonnegative(),providersMentioning:m().int().nonnegative(),totalQueries:m().int().nonnegative(),queriesCitedAndMentioned:m().int().nonnegative(),queriesCitedOnly:m().int().nonnegative(),queriesMentionedOnly:m().int().nonnegative(),queriesInvisible:m().int().nonnegative(),latestRunId:o().nullable(),latestRunAt:o().nullable()});p({summary:$O,byQuery:y(UO),competitorGaps:y(GO),status:A(["ready","no-data"]),reason:A(["no-runs-yet","no-queries"]).optional()});const I$=[7,14,30,90],V$=30;Ve([O(7),O(14),O(30),O(90)]).describe("Report window in days (7, 14, 30, or 90). Defaults to 30 when omitted.");const HO=A(["prompt","request-param","browser-geo","ignored"]),KO=p({label:o(),city:o(),region:o(),country:o(),otherConfiguredLabels:y(o())}),QO=p({provider:o(),treatment:HO,description:o()}),ZO=p({generatedAt:o(),project:p({id:o(),name:o(),displayName:o(),canonicalDomain:o(),country:o(),language:o()}),location:KO.nullable(),providerLocationHandling:y(QO),periodStart:o().nullable(),periodEnd:o().nullable(),periodDays:m().int().positive()}),FO=p({citationRate:m(),citedQueryCount:m(),totalQueryCount:m(),mentionRate:m(),mentionedQueryCount:m(),trend:A(["up","down","flat","unknown"]),queryCount:m(),competitorCount:m(),providerCount:m(),gsc:p({clicks:m(),impressions:m(),ctr:m(),avgPosition:m(),periodStart:o(),periodEnd:o()}).nullable(),ga:p({sessions:m(),users:m(),periodStart:o(),periodEnd:o()}).nullable(),findings:y(p({title:o(),detail:o(),tone:A(["positive","caution","negative","neutral"])}))}),YO=p({citationState:A(["cited","not-cited","pending"]),answerMentioned:_().nullable(),model:o().nullable()}),XO=p({queries:y(o()),providers:y(o()),matrix:y(y(YO.nullable())),providerRates:y(p({provider:o(),citedCount:m(),mentionedCount:m(),totalCount:m(),citationRate:m(),mentionRate:m()}))}),JO=p({domain:o(),citationCount:m(),totalCount:m(),pressureLabel:A(["High","Moderate","Low","None"]),citedQueries:y(o()),sharePct:m(),theirCitedPages:y(p({url:o(),citedFor:y(o())}))}),WO=p({projectCitationCount:m(),competitors:y(JO)}),eB=p({domain:o(),mentionCount:m(),totalCount:m(),pressureLabel:A(["High","Moderate","Low","None"]),mentionedQueries:y(o()),sharePct:m().nullable()}),vp=p({projectMentionCount:m(),totalAnswerSnapshots:m(),competitors:y(eB)}),tB=vp.extend({scope:A(["non-brand","pooled"]),nonBrand:vp,branded:vp}),aB=p({category:o(),label:o(),count:m(),sharePct:m()}),nB=p({categories:y(aB),topDomains:y(p({domain:o(),count:m(),isCompetitor:_()}))}),iB=p({query:o(),clicks:m(),impressions:m(),ctr:m(),avgPosition:m(),category:A(["brand","lead-gen","industry","other"])}),sB=p({periodStart:o(),periodEnd:o(),totalClicks:m(),totalImpressions:m(),ctr:m(),avgPosition:m(),topQueries:y(iB),categoryBreakdown:y(p({category:A(["brand","lead-gen","industry","other"]),clicks:m(),impressions:m(),sharePct:m()})),trend:y(p({date:o(),clicks:m(),impressions:m()})),trackedButNoGsc:y(o()),gscButNotTracked:y(o())}),oB=p({totalSessions:m(),totalUsers:m(),totalOrganicSessions:m(),periodStart:o(),periodEnd:o(),topLandingPages:y(p({page:o(),sessions:m(),users:m(),organicSessions:m()})),channelBreakdown:y(p({channel:o(),sessions:m(),sharePct:m()}))}),rB=p({totalSessions:m(),organicSessions:m(),paidSessions:m(),channels:y(p({channelGroup:o(),sessions:m(),sharePct:m()})),topCampaigns:y(p({source:o(),medium:o(),sessions:m()}))}),lB=p({totalSessions:m(),paidSessions:m(),organicSessions:m(),totalUsers:m().optional(),paidUsers:m().optional(),organicUsers:m().optional(),bySource:y(p({source:o(),sessions:m(),users:m().optional(),paidSessions:m(),organicSessions:m(),sharePct:m()})),trend:y(p({date:o(),sessions:m()})),topLandingPages:y(p({page:o(),sessions:m(),users:m().optional()}))}),cB=p({windowStart:o(),windowEnd:o(),hasData:_(),verifiedCrawlerHits:p({current:m(),prior:m(),deltaPct:m().nullable()}),unverifiedCrawlerHits:p({current:m(),prior:m(),deltaPct:m().nullable()}),aiUserFetchHits:p({current:m(),prior:m(),deltaPct:m().nullable()}),referralArrivals:p({current:m(),prior:m(),deltaPct:m().nullable()}),referralRedirects:m().int().nonnegative(),referralArrivalsByClass:p({paid:p({current:m(),prior:m(),deltaPct:m().nullable()}),organic:p({current:m(),prior:m(),deltaPct:m().nullable()}),unclassified:p({current:m(),prior:m(),deltaPct:m().nullable()})}),referralArrivalsClassSummary:o(),byOperator:y(p({operator:o(),verifiedHits:m(),unverifiedHits:m(),userFetchHits:m(),referralArrivals:m(),deltaPct:m().nullable()})),topCrawledPaths:y(p({path:o(),verifiedHits:m(),distinctOperators:m()})),referralProducts:y(p({product:o(),arrivals:m(),distinctLandingPaths:m()})),dailyTrend:y(p({date:o(),verifiedCrawlerHits:m(),userFetchHits:m(),referralArrivals:m()})),topReferralLandingPaths:y(p({path:o(),arrivals:m(),distinctProducts:m()}))}),uB=p({provider:A(["google","bing"]).nullable(),total:m(),indexed:m(),notIndexed:m(),deindexed:m(),unknown:m(),indexedPct:m()}),dB=p({runId:o(),date:o(),citationRate:m(),citedQueryCount:m(),totalQueryCount:m(),mentionRate:m(),mentionedQueryCount:m(),providerRates:y(p({provider:o(),citationRate:m(),mentionRate:m()}))}),t0=p({id:o(),type:A(["regression","gain","opportunity"]),severity:A(["critical","high","medium","low"]),title:o(),query:o(),provider:o(),recommendation:o().nullable(),createdAt:o(),instanceCount:m()}),mB=p({horizon:A(["immediate","short-term","medium-term"]),title:o(),rationale:o()}),co=p({current:m(),prior:m(),deltaAbs:m(),deltaPct:m().nullable(),direction:A(["up","down","flat"]),window:m().optional()}),pB=p({provider:o(),current:m(),prior:m(),deltaAbs:m(),direction:A(["up","down","flat"])}),hB=p({enoughHistory:_(),headline:o(),citationRate:co.nullable(),mentionRate:co.nullable(),citedQueryCount:co.nullable(),mentionedQueryCount:co.nullable(),gscClicksDelta:co.nullable(),aiReferralsDelta:co.nullable(),comparisonWindowDays:m().int().positive(),providerMovements:y(pB),wins:y(t0),regressions:y(t0)});A(["agency","client"]);const fB=A(["agency","client","both"]),gB=A(["immediate","short-term","medium-term"]),yB=A(["high","medium","low"]);A(["positive","caution","negative","neutral"]);const bB=A(["content","competitors","provider","search-demand","indexing","location","monitoring"]),dh=p({audience:fB,priority:m(),horizon:gB,category:bB,title:o(),action:o(),why:y(o()),evidence:y(o()),successMetric:o(),confidence:yB,targetRef:o().optional()}),vB=p({headline:o(),overview:o(),actionItems:y(dh),confidenceNotes:y(o())}),xB=p({title:o(),detail:o(),severity:A(["positive","caution","negative","neutral"]),evidence:y(o())}),kB=p({priorities:y(dh),diagnostics:y(xB)});function L$(e){return e.horizon==="immediate"?"negative":e.confidence==="high"?"caution":e.confidence==="low"?"neutral":"caution"}function U$(e){switch(e){case"critical":return"Critical";case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}function G$(e){switch(e){case"immediate":return"Immediate";case"short-term":return"Short term";case"medium-term":return"Medium term"}}function $$(e){switch(e){case"content":return"Content";case"competitors":return"Competitors";case"provider":return"Provider";case"search-demand":return"Search demand";case"indexing":return"Indexing";case"location":return"Location";case"monitoring":return"Monitoring"}}function H$(e){switch(e){case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}p({meta:ZO,executiveSummary:FO,citationScorecard:XO,competitorLandscape:WO,mentionLandscape:tB,aiSourceOrigin:nB,gsc:sB.nullable(),ga:oB.nullable(),socialReferrals:rB.nullable(),aiReferrals:lB.nullable(),serverActivity:cB.nullable(),indexingHealth:uB.nullable(),citationsTrend:y(dB),whatsChanged:hB,insights:y(t0),recommendedNextSteps:y(mB),actionPlan:y(dh),clientSummary:vB,agencyDiagnostics:kB,contentOpportunities:y(Ak),contentGaps:y(Nk),groundingSources:y(Ck)});const wB=Ve([O(60),O(90)]),SB=A(["earliest","middle","prior","latest"]),uo=p({clicks:m().int().nonnegative(),impressions:m().int().nonnegative()}),Dk=p({name:SB,startDate:o(),endDate:o()}),jB=Dk.extend({totals:uo}),AB=Dk.extend({organicSessions:m().int().nonnegative()}),xp=p({startDate:o(),endDate:o(),observedDays:m().int().nonnegative()}),Vc=p({verified:m().int().nonnegative(),claimedUnverified:m().int().nonnegative(),unknownAiLike:m().int().nonnegative()}),Qb=p({total:m().int().nonnegative(),paid:m().int().nonnegative(),organic:m().int().nonnegative(),unknown:m().int().nonnegative()});p({contractVersion:O("organic-evidence/v1"),periodDays:wB,asOfDate:o().nullable(),coverage:p({gsc:_(),ga4:_(),server:_(),visibility:_()}),sourceCoverage:p({gsc:xp.nullable(),ga4:xp.nullable(),server:xp.nullable(),visibility:p({completedAt:o(),ageDays:m().nonnegative()}).nullable()}),gsc:p({propertyTotals:uo,namedBrand:uo,namedNonBrand:uo,suppressedOrUnreportedResidual:uo,cohorts:y(jB)}).nullable(),ga4:p({organicSessions:m().int().nonnegative(),cohorts:y(AB)}).nullable(),gaAiReferrals:p({paidSessions:m().int().nonnegative(),organicSessions:m().int().nonnegative()}).nullable(),server:p({crawlerHits:Vc,userFetchHits:Vc,referralSessions:Qb}).nullable(),visibility:p({runId:o(),completedAt:o(),ageDays:m().nonnegative(),answerPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative()}).nullable(),measurement:K_,pages:y(p({path:o(),gsc:uo,ga4OrganicSessions:m().int().nonnegative(),server:p({crawlerHits:Vc,userFetchHits:Vc,referralSessions:Qb})})),findings:y(p({tone:A(["positive","caution","neutral"]),title:o(),detail:o()})),limitations:y(p({code:o(),detail:o()}))});const CB=A(["claude","codex"]);CB.enum;const NB=A(["claude","codex","all"]);NB.enum;const Ek=p({content:m().int().nonnegative(),sitemap:m().int().nonnegative(),robots:m().int().nonnegative(),asset:m().int().nonnegative(),other:m().int().nonnegative()}),_B=A(["content","sitemap","robots","asset","other"]),mh=A(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);mh.enum;const zB=A(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);zB.enum;const DB=A(["raw-request","aggregate-bucket"]),EB=DB.enum,TB=A(["observed","provider-aggregated","inferred"]),RB=TB.enum,OB=p({type:o().nullable(),labels:Ie(o(),o())}),BB=p({sourceType:mh,evidenceKind:O(EB["raw-request"]),confidence:O(RB.observed),eventId:o().min(1),observedAt:o().min(1),method:o().nullable(),requestUrl:o().nullable(),host:o().nullable(),path:o().min(1),queryString:o().nullable(),status:m().int().nullable(),userAgent:o().nullable(),remoteIp:o().nullable(),referer:o().nullable(),latencyMs:m().nullable(),requestSizeBytes:m().int().nullable(),responseSizeBytes:m().int().nullable(),providerResource:OB,providerLabels:Ie(o(),o())});p({events:y(BB),rawEntryCount:m().int().nonnegative(),skippedEntryCount:m().int().nonnegative(),nextPageToken:o().optional(),filter:o()});const Tk=A(["connected","paused","error","archived"]),K$=Tk.enum,Rk=A(["oauth","service-account"]);Rk.enum;const qB=A(["verified","claimed_unverified","unknown_ai_like"]),Q$=qB.enum,MB=p({id:o().min(1),source:o().min(1),version:o().min(1)}),Ok=p({manifestId:o().min(1),manifest:MB.nullable(),hits:m().int().nonnegative()});p({gcpProjectId:o().min(1),serviceName:o().nullable().optional(),location:o().nullable().optional(),authMode:Rk});p({baseUrl:o().url(),username:o().min(1)});const ph=A(["production","preview"]);ph.enum;p({projectId:o().min(1),teamId:o().min(1),environment:ph});const Bk=p({id:o(),projectId:o(),sourceType:mh,displayName:o(),status:Tk,lastSyncedAt:o().nullable(),lastCursor:o().nullable(),lastError:o().nullable(),skippedThroughAt:o().nullable(),queueBacklogCount:m().int().nonnegative().nullable(),queueBacklogObservedAt:o().nullable(),archivedAt:o().nullable(),config:Ie(o(),ya()),createdAt:o(),updatedAt:o()});p({gcpProjectId:o().min(1),serviceName:o().min(1).optional(),location:o().min(1).optional(),displayName:o().min(1).optional(),keyJson:o().optional()});p({baseUrl:o().url(),username:o().min(1),applicationPassword:o().min(1),displayName:o().min(1).optional()});p({projectId:o().min(1),teamId:o().min(1),token:o().min(1),environment:ph.optional(),displayName:o().min(1).optional()});const PB=A(["direct-push","queue-pull"]),Mo=PB.enum,hh=o().regex(/^(?=.{1,63}$)[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,"Cloudflare Queue name must be 1-63 characters, use only letters, numbers, or dashes, and start and end with a letter or number"),qk=p({schemaVersion:O(1),workerVersion:o().min(1),expectedBotListVersion:o().min(1),zoneId:o().nullable()}),IB=qk.extend({deliveryMode:O(Mo["direct-push"]),accountId:o().nullable()}),VB=qk.extend({deliveryMode:O(Mo["queue-pull"]),accountId:o().min(1),queueId:o().min(1),queueName:hh,retentionSeconds:m().int().min(60).max(1209600)});function Mk(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;const n=e;return"deliveryMode"in n?e:{...n,deliveryMode:"direct-push"}}A0(Mk,Be("deliveryMode",[IB,VB]));const Pk=p({displayName:o().min(1).optional(),zoneId:o().min(1).optional()}),LB=Pk.extend({deliveryMode:O(Mo["direct-push"]),accountId:o().min(1).optional()}),UB=Pk.extend({deliveryMode:O(Mo["queue-pull"]),accountId:o().min(1),queueId:o().min(1),queueName:hh,retentionSeconds:m().int().min(60).max(1209600),apiToken:o().min(1)});A0(Mk,Be("deliveryMode",[LB,UB]));const Ik=p({sourceId:o().min(1),workerScript:o().min(1),wranglerToml:o().min(1),workerVersion:o().min(1),instructions:o().min(1)}),GB=Ik.extend({deliveryMode:O(Mo["direct-push"]),activationRequired:_().default(!1)}),$B=Ik.extend({deliveryMode:O(Mo["queue-pull"]),activationRequired:_().default(!1),accountId:o().min(1),queueId:o().min(1),queueName:hh,retentionSeconds:m().int().min(60).max(1209600)});Be("deliveryMode",[GB,$B]);const HB=p({eventId:o().min(1),observedAt:o().datetime(),method:o().nullable(),host:o().nullable(),path:o().min(1),queryString:o().nullable(),status:m().int().nullable(),userAgent:o().nullable(),remoteIp:o().nullable(),referer:o().nullable(),cf:p({verifiedBot:_().nullable(),botScore:m().int().nullable(),country:o().nullable(),asn:m().int().nullable(),asOrganization:o().nullable()}).nullable()});p({schemaVersion:O(1),workerVersion:o().min(1),events:y(HB).min(1).max(100)});p({acceptedEvents:m().int(),droppedEvents:m().int(),workerVersionAck:o(),crawlerBucketRows:m().int(),aiUserFetchBucketRows:m().int(),aiReferralBucketRows:m().int(),sampleRows:m().int()});p({sourceId:o(),runId:o(),syncedAt:o(),pulledEvents:m().int().nonnegative(),selfTrafficExcluded:m().int().nonnegative(),crawlerHits:m().int().nonnegative(),aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),unknownHits:m().int().nonnegative(),crawlerBucketRows:m().int().nonnegative(),aiUserFetchBucketRows:m().int().nonnegative(),aiReferralBucketRows:m().int().nonnegative(),sampleRows:m().int().nonnegative(),remainingBacklogCount:m().int().nonnegative().optional(),windowStart:o(),windowEnd:o()});p({days:m().int().positive().optional()});p({advanceToNow:O(!0)});p({sourceId:o(),runId:o(),status:en,windowStart:o(),windowEnd:o(),daysRequested:m().int().positive(),daysApplied:m().int().positive()});const KB=p({crawlerHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),crawlerInfraHits:m().int().nonnegative(),crawlerSegments:Ek,aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralLandedHits:m().int().nonnegative(),aiReferralRedirectedHits:m().int().nonnegative(),sampleCount:m().int().nonnegative()});p({sources:y(Bk)});const QB=Bk.extend({totals24h:KB,latestRun:p({runId:o(),status:en,startedAt:o().nullable(),finishedAt:o().nullable(),error:o().nullable()}).nullable()});p({sources:y(QB)});const ZB=A(["crawler","ai-user-fetch","ai-referral"]),fh=ZB.enum,Vk=A(["hour","day"]);Vk.enum;const FB=p({bucket:o(),crawlerHits:m().int().nonnegative(),aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralLandedHits:m().int().nonnegative()}),YB=p({kind:O(fh.crawler),sourceId:o(),tsHour:o(),botId:o(),operator:o(),verificationStatus:o(),verificationManifests:y(Ok).optional(),verificationUnattributedHits:m().int().nonnegative().optional(),pathNormalized:o(),pathClass:_B,status:m().int(),hits:m().int().nonnegative()}),XB=p({kind:O(fh["ai-user-fetch"]),sourceId:o(),tsHour:o(),botId:o(),operator:o(),verificationStatus:o(),verificationManifests:y(Ok).optional(),verificationUnattributedHits:m().int().nonnegative().optional(),pathNormalized:o(),status:m().int(),hits:m().int().nonnegative()}),JB=p({kind:O(fh["ai-referral"]),sourceId:o(),tsHour:o(),product:o(),operator:o(),sourceDomain:o(),evidenceType:o(),landingPathNormalized:o(),status:m().int(),hits:m().int().nonnegative(),paidHits:m().int().nonnegative(),organicHits:m().int().nonnegative(),unknownHits:m().int().nonnegative()}),WB=Be("kind",[YB,XB,JB]);p({windowStart:o(),windowEnd:o(),series:p({granularity:Vk,points:y(FB)}),totals:p({crawlerHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),crawlerInfraHits:m().int().nonnegative(),crawlerSegments:Ek,aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralLandedHits:m().int().nonnegative(),aiReferralRedirectedHits:m().int().nonnegative(),aiReferralPaidHits:m().int().nonnegative(),aiReferralOrganicHits:m().int().nonnegative(),aiReferralUnknownHits:m().int().nonnegative()}),eventRows:p({total:m().int().nonnegative(),returned:m().int().nonnegative(),truncated:_()}),events:y(WB)});const Lk=A(["queued","running","completed","partial","failed"]),Z$=Lk.enum,Uk=A(["queued","running","completed","failed"]),F$=Uk.enum;p({queries:y(o().trim().min(1).max(4e3)).min(1).max(50),provider:o().trim().min(1).optional(),model:o().trim().min(1).max(200).optional(),location:la.nullable().optional(),idempotencyKey:o().trim().min(1).max(128).optional()}).superRefine((e,n)=>{e.model&&!e.provider&&n.addIssue({code:Ye.custom,path:["provider"],message:"provider is required when model is supplied"})});const Gk=p({id:o(),projectId:o(),status:Lk,provider:o(),requestedModel:o().nullable(),resolvedModel:o(),location:la.nullable(),totalQueries:m().int(),completedQueries:m().int(),failedQueries:m().int(),error:o().nullable(),startedAt:o().nullable(),finishedAt:o().nullable(),createdAt:o()}),eq=p({id:o(),position:m().int(),query:o(),status:Uk,requestedModel:o().nullable(),resolvedModel:o(),servedModel:o().nullable(),answerText:o().nullable(),groundingSources:y(Cu),citedDomains:y(o()),searchQueries:y(o()),namedCompetitors:y(o()).default([]),citedCompetitorDomains:y(o()).default([]),answerMentioned:_().nullable(),citationState:Pn.nullable(),error:o().nullable(),startedAt:o().nullable(),finishedAt:o().nullable(),createdAt:o()});Gk.extend({queries:y(eq)});p({runs:y(Gk)});p({apiKey:o().min(1)});p({id:o(),name:o(),status:o(),currencyCode:o().nullable(),timezone:o().nullable(),url:o().nullable(),reviewStatus:o().nullable(),integrityReviewStatus:o().nullable(),integrityDecision:o().nullable()});p({q:o().trim().min(1).max(200),limit:m().int().min(1).max(100).default(20)});const tq=p({id:o(),type:o(),canonicalName:o(),countryCode:o(),name:o(),regionCode:o().nullable()});p({count:m().int().nonnegative(),query:o(),results:y(tq)});const aq=p({id:o(),clientType:o().optional(),name:o().optional(),pixelId:o().optional()});p({pixels:y(aq)});const nq=p({id:o(),name:o().optional()}),iq=p({id:o(),name:o().optional(),eventType:o().optional(),customEventName:o().nullable().optional(),attributionWindowDays:m().int().positive().optional(),adAccountId:o().optional(),sourceIds:y(o()).optional(),sources:y(nq).optional(),archived:_().optional(),version:m().int().nonnegative().optional()});p({eventSettings:y(iq)});p({connected:_(),adAccountId:o().nullable().optional(),displayName:o().nullable().optional(),currencyCode:o().nullable().optional(),timezone:o().nullable().optional(),status:o().nullable().optional(),reviewStatus:o().nullable().optional(),integrityReviewStatus:o().nullable().optional(),integrityDecision:o().nullable().optional(),lastSyncedAt:o().nullable().optional(),conversionTrackingConfigured:_().optional()});p({disconnected:_()});p({runId:o(),status:o()});const sq=p({type:o().nullable().optional(),title:o().nullable().optional(),body:o().nullable().optional(),targetUrl:o().nullable().optional(),fileId:o().nullable().optional()}),ul=A(["impressions","clicks"]),oq=ul.enum,dl=A(["impression","click"]);dl.enum;const rq=p({id:o(),adGroupId:o(),name:o(),status:o(),reviewStatus:o().nullable().optional(),creative:sq.nullable().optional(),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:o().optional()}),lq=p({id:o(),campaignId:o(),name:o(),description:o().nullable().optional(),status:o(),billingEventType:Ve([dl,ce()]).optional(),maxBidMicros:m().int().nullable().optional(),contextHints:y(o()).default([]),ads:y(rq).default([]),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:o().optional()}),cq=p({id:o(),name:o(),description:o().nullable().optional(),status:o(),startTime:m().int().nullable().optional(),endTime:m().int().nullable().optional(),biddingType:Ve([ul,ce()]).optional(),dailySpendLimitMicros:m().int().nullable().optional(),lifetimeSpendLimitMicros:m().int().nullable().optional(),conversionEventSettingIds:y(o()).default([]),locationIds:y(o()).optional(),adGroups:y(lq).default([]),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:o().optional()});p({campaigns:y(cq)});const $k=A(["campaign","ad_group"]);$k.enum;const uq=p({level:$k,entityId:o(),date:o(),impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int(),ctr:m().nullable(),cpcMicros:m().int().nullable(),inProgress:_()});p({rows:y(uq),currencyCode:o().nullable().optional()});const Hk=p({from:o().nullable(),to:o().nullable(),inProgressDate:o().nullable()}),Kk=p({impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int(),ctr:m().nullable(),cpcMicros:m().int().nullable()});p({connected:_(),displayName:o().nullable().optional(),currencyCode:o().nullable().optional(),lastSyncedAt:o().nullable().optional(),campaignCount:m().int(),adGroupCount:m().int(),adCount:m().int(),window:Hk,totals:Kk});const Qk=A(["unavailable","partial","complete"]);Qk.enum;const Zk=A(["no_ads_connection","connection_not_synced","no_ads_sync","entity_rows_missing_sync_run_id","entity_rows_span_multiple_sync_runs","source_sync_missing","source_sync_not_ads_sync","source_sync_not_completed"]);Zk.enum;const Fk=A(["unavailable","reported"]);Fk.enum;const dq={storedSnapshot:"stored_ads_snapshot"},Yk=A(["unavailable","partial_snapshot","metrics_unavailable","observed_activity","no_observed_activity"]);Yk.enum;const mq=p({id:o(),name:o(),status:o(),reviewStatus:o().nullable()}),pq=p({id:o(),name:o(),status:o(),billingEventType:Ve([dl,ce()]),maxBidMicros:m().int().nullable(),contextHints:y(o()),ads:y(mq)}),hq=p({id:o(),name:o(),status:o(),biddingType:Ve([ul,ce()]),dailySpendLimitMicros:m().int().nullable(),lifetimeSpendLimitMicros:m().int().nullable(),conversionEventSettingIds:y(o()),adGroups:y(pq)});p({snapshot:p({status:Qk,issue:Ve([Zk,ce()]),lastSyncedAt:o().nullable(),campaignCount:m().int().nonnegative(),adGroupCount:m().int().nonnegative(),adCount:m().int().nonnegative(),sourceSync:p({runId:o(),status:en}).nullable()}),historicalCampaignRollups:p({status:Fk,window:Hk,totals:Kk.nullable()}),storedConfiguration:p({basis:O(dq.storedSnapshot),connection:p({status:o().nullable(),reviewStatus:o().nullable(),integrityReviewStatus:o().nullable(),integrityDecision:o().nullable(),conversionTrackingConfigured:_()}).nullable(),campaigns:y(hq)}),assessment:p({state:Yk})});const Un=o().min(8).max(128).regex(/^[\w.:-]+$/,"operationKey may contain letters, numbers, dot, underscore, colon, and hyphen"),vt=o().min(1).max(200),fs=o().min(3).max(1e3).refine(e=>e.trim().length>0),Ao=m().int().min(946684800).max(4102444800),Co=m().int().positive().max(Number.MAX_SAFE_INTEGER),gh=o().regex(/^[a-f0-9]{64}$/),Xk=y(vt).max(100).refine(e=>new Set(e).size===e.length,"conversionEventSettingIds must be unique"),Jk=o().url().refine(e=>new URL(e).protocol==="https:",{message:"URL must use https"}),Wk=A(["image_upload","campaign_create","campaign_update","campaign_pause","campaign_tree_activate","ad_group_create","ad_group_update","ad_group_pause","ad_create","ad_update","ad_pause"]);Wk.enum;const e3=A(["pending","reconciling","succeeded","failed","unknown"]),yo=e3.enum,t3=A(["known_entity","create_fingerprint","manual_only"]);t3.enum;const a3=A([yo.pending,yo.unknown,yo.reconciling]);a3.enum;const n3=A(["active","paused","archived"]);n3.enum;const i3=A(["file","campaign","ad_group","ad"]);i3.enum;const s3=A(["campaign","ad_group","ad"]);s3.enum;const yh=p({id:vt,expectedUpdatedAt:m().int().nonnegative()}).strict(),fq=yh,ru=100,gq=yh.extend({ads:y(fq).min(1).max(ru-1)}).strict(),yq=yh.extend({adGroups:y(gq).min(1).max(ru-1)}).strict();function bq(e,n){return e<n?-1:e>n?1:0}function Zb(e,n,s){for(let r=1;r<e.length;r+=1)if(bq(e[r-1].id,e[r].id)>=0){s.addIssue({code:"custom",path:n,message:"Activation manifest entities must be uniquely sorted by id"});return}}const o3=p({campaign:yq}).strict().superRefine((e,n)=>{1+e.campaign.adGroups.reduce((u,f)=>u+1+f.ads.length,0)>ru&&n.addIssue({code:"custom",path:["campaign"],message:`Activation manifests may contain at most ${ru} entities`}),Zb(e.campaign.adGroups,["campaign","adGroups"],n);const r=new Set;for(let u=0;u<e.campaign.adGroups.length;u+=1){const f=e.campaign.adGroups[u];Zb(f.ads,["campaign","adGroups",u,"ads"],n);for(let g=0;g<f.ads.length;g+=1){const b=f.ads[g];r.has(b.id)&&n.addIssue({code:"custom",path:["campaign","adGroups",u,"ads",g,"id"],message:"An ad may appear only once in an activation manifest"}),r.add(b.id)}}}),r3=gh,vq=A(["approved","executing","consumed","revoked","expired","unknown"]),Mn=vq.enum,xq=A(["pending","executing","active","failed","rollback_executing","rolled_back","rollback_failed","unknown"]),Di=xq.enum,kq=p({name:fs.optional(),description:o().max(4e3).nullable().optional(),status:n3.optional(),startTime:Ao.nullable().optional(),endTime:Ao.nullable().optional(),lifetimeSpendLimitMicros:Co.min(1e6).optional(),locationIds:y(vt).max(100).optional(),biddingType:ul.optional(),conversionEventSettingIds:Xk.optional(),campaignId:vt.optional(),contextHints:y(o().min(1).max(1e3)).max(100).optional(),maxBidMicros:Co.max(1e8).optional(),billingEventType:dl.optional(),adGroupId:vt.optional(),creativeFingerprint:gh.optional()}).strict();p({operationKey:Un,imageUrl:Jk});p({operationKey:Un,name:fs,description:o().max(4e3).optional(),startTime:Ao.optional(),endTime:Ao.optional(),lifetimeSpendLimitMicros:Co.min(1e6),locationIds:y(vt).min(1).max(100),biddingType:ul.optional(),conversionEventSettingIds:Xk.optional()}).superRefine((e,n)=>{e.startTime!==void 0&&e.endTime!==void 0&&e.endTime<=e.startTime&&n.addIssue({code:"custom",path:["endTime"],message:"endTime must be after startTime"}),e.biddingType===oq.clicks&&(e.conversionEventSettingIds===void 0||e.conversionEventSettingIds.length===0)&&n.addIssue({code:"custom",path:["conversionEventSettingIds"],message:"conversionEventSettingIds must be non-empty when biddingType is clicks"})});p({operationKey:Un,campaignId:vt,name:fs,description:o().max(4e3).optional(),contextHints:y(o().min(1).max(1e3)).min(1).max(100),maxBidMicros:Co.max(1e8),billingEventType:dl.optional()});const l3=p({title:o().min(3).max(50),body:o().min(1).max(100),targetUrl:Jk,fileId:vt});p({operationKey:Un,adGroupId:vt,name:fs,creative:l3});function bh(e){return Object.keys(e).some(n=>n!=="operationKey"&&n!=="expectedUpdatedAt")}p({operationKey:Un,expectedUpdatedAt:m().int().nonnegative(),name:fs.optional(),description:o().max(4e3).nullable().optional(),startTime:Ao.nullable().optional(),endTime:Ao.nullable().optional(),lifetimeSpendLimitMicros:Co.min(1e6).optional(),locationIds:y(vt).min(1).max(100).optional()}).refine(bh,{message:"At least one campaign field must be updated"});p({operationKey:Un,expectedUpdatedAt:m().int().nonnegative(),name:fs.optional(),description:o().max(4e3).nullable().optional(),contextHints:y(o().min(1).max(1e3)).min(1).max(100).optional(),maxBidMicros:Co.max(1e8).optional()}).refine(bh,{message:"At least one ad group field must be updated"});p({operationKey:Un,expectedUpdatedAt:m().int().nonnegative(),name:fs.optional(),creative:l3.optional()}).refine(bh,{message:"At least one ad field must be updated"});p({operationKey:Un});const Ru=p({id:o(),adAccountId:o().nullable(),operationKey:o(),kind:Wk,state:e3,entityType:Ve([i3,ce()]),entityId:o().nullable(),upstreamUpdatedAt:m().int().nullable(),errorCode:o().nullable(),errorMessage:o().nullable(),reconcileStrategy:Ve([t3,ce()]),reconcileParentId:vt.nullable(),reconcileFingerprint:gh.nullable(),reconcileFields:kq.nullable(),reconcileAttempts:m().int().nonnegative(),lastReconciledAt:o().nullable(),createdAt:o(),updatedAt:o()});p({operation:Ru,replayed:_()});const ht=Gx({offset:!0}),Po={id:vt,projectId:vt,adAccountId:vt,manifestHash:r3,manifest:o3,executorApiKeyId:vt,approverApiKeyId:vt,expiresAt:ht,approvedAt:ht,createdAt:ht,updatedAt:ht,revocationRequestedAt:ht.nullable()},wq=p({...Po,state:O(Mn.approved),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),Sq=p({...Po,state:O(Mn.executing),operationId:vt,executionStartedAt:ht,consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),jq=p({...Po,state:O(Mn.consumed),operationId:vt,executionStartedAt:ht,consumedAt:ht,revokedAt:ce(),expiredAt:ce()}).strict(),Aq=p({...Po,state:O(Mn.revoked),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:ht,expiredAt:ce()}).strict(),Cq=p({...Po,state:O(Mn.expired),operationId:ce(),executionStartedAt:ce(),consumedAt:ce(),revokedAt:ce(),expiredAt:ht}).strict(),Nq=p({...Po,state:O(Mn.unknown),operationId:vt,executionStartedAt:ht,consumedAt:ce(),revokedAt:ce(),expiredAt:ce()}).strict(),c3=Be("state",[wq,Sq,jq,Aq,Cq,Nq]).superRefine((e,n)=>{e.executorApiKeyId===e.approverApiKeyId&&n.addIssue({code:"custom",path:["executorApiKeyId"],message:"The activation executor must use a different API key from the approver"}),e.revocationRequestedAt!==null&&e.state!==Mn.executing&&e.state!==Mn.unknown&&e.state!==Mn.consumed&&n.addIssue({code:"custom",path:["revocationRequestedAt"],message:"Only an executing, cancelled, or unresolved activation can carry a cancellation request"})}),Ei={id:vt,operationId:vt,ordinal:m().int().nonnegative(),entityType:s3,entityId:vt,expectedUpdatedAt:m().int().nonnegative(),createdAt:ht,updatedAt:ht},ml={errorCode:ce(),errorMessage:ce()},vh={errorCode:o().min(1).max(100),errorMessage:o().min(1).max(500),remediation:o().min(1).max(500)},_q=p({...Ei,...ml,state:O(Di.pending),providerUpdatedAt:ce(),remediation:ce(),startedAt:ce(),finishedAt:ce()}).strict(),zq=p({...Ei,...ml,state:O(Di.executing),providerUpdatedAt:ce(),remediation:ce(),startedAt:ht,finishedAt:ce()}).strict(),Dq=p({...Ei,...ml,state:O(Di.active),providerUpdatedAt:m().int().nonnegative(),remediation:ce(),startedAt:ht,finishedAt:ht}).strict(),Eq=p({...Ei,...vh,state:O(Di.failed),providerUpdatedAt:Ve([m().int().nonnegative(),ce()]),startedAt:ht,finishedAt:ht}).strict(),Tq=p({...Ei,...ml,state:O(Di.rollback_executing),providerUpdatedAt:m().int().nonnegative(),remediation:o().min(1).max(500),startedAt:ht,finishedAt:ce()}).strict(),Rq=p({...Ei,...ml,state:O(Di.rolled_back),providerUpdatedAt:m().int().nonnegative(),remediation:o().min(1).max(500),startedAt:ht,finishedAt:ht}).strict(),Oq=p({...Ei,...vh,state:O(Di.rollback_failed),providerUpdatedAt:m().int().nonnegative(),startedAt:ht,finishedAt:ht}).strict(),Bq=p({...Ei,...vh,state:O(Di.unknown),providerUpdatedAt:Ve([m().int().nonnegative(),ce()]),startedAt:ht,finishedAt:ht}).strict(),qq=Be("state",[_q,zq,Dq,Eq,Tq,Rq,Oq,Bq]),a0={exact:"exact",refreshSemanticallyUnchanged:"refresh_semantically_unchanged"},Mq=A([a0.exact,a0.refreshSemanticallyUnchanged]);p({manifest:o3,executorApiKeyId:vt,expiresAt:ht,versionPolicy:Mq.default(a0.exact)}).strict();p({grant:c3}).strict();p({}).strict();p({operationKey:Un,grantId:vt,manifestHash:r3}).strict();p({grant:c3,operation:Ru,steps:y(qq)}).strict();const Pq=[yo.pending,yo.unknown,yo.reconciling];function Iq(e){if(e===void 0||e==="")return Pq;if(Array.isArray(e)){const n=[];for(const s of e)typeof s=="string"?n.push(...s.split(",")):n.push(s);return n}return typeof e=="string"?e.split(",").filter(Boolean):e}p({state:A0(Iq,y(a3).min(1).max(3).refine(e=>new Set(e).size===e.length,"state values must be unique")),limit:Yx().int().min(1).max(200).default(100),cursor:o().min(1).max(1e3).optional()});p({operations:y(Ru),count:m().int().nonnegative(),nextCursor:o().nullable()});p({}).strict();p({operation:Ru,resolved:_()});p({campaignId:o().min(1).max(200).optional(),lookbackDays:Yx().int().min(1).max(30).default(7)});const u3=A(["campaign","ad_group","ad"]);u3.enum;const d3=A(["both","live-only","stored-only"]);d3.enum;const Vq=O("live-provider-read"),Lq=p({date:o().nullable(),startTime:m().nullable(),endTime:m().nullable(),impressions:m().nullable(),clicks:m().nullable(),spend:m().nullable(),conversions:m().nullable(),ctr:m().nullable(),cpc:m().nullable(),cpm:m().nullable()}),Fb=p({impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int()}),Uq=p({date:o(),live:Fb.nullable(),stored:Fb.nullable(),drifted:_()}),Gq=p({field:o(),live:o().nullable(),stored:o().nullable()}),$q=p({name:o().nullable(),status:o(),reviewStatus:o().nullable(),mode:o().nullable(),updatedAt:m().nullable()}),Hq=p({name:o(),status:o(),reviewStatus:o().nullable(),upstreamUpdatedAt:m().nullable(),syncedAt:o()}),Kq=p({entityType:u3,id:o(),parentId:o().nullable(),presence:d3,live:$q.nullable(),stored:Hq.nullable(),fieldDeltas:y(Gq),liveMetrics:y(Lq).nullable(),metricDeltas:y(Uq).nullable(),drifted:_()}),Qq=p({surface:o(),entityId:o().nullable(),upstreamStatus:m().int().nullable()});p({basis:Vq,fetchedAt:o(),adAccountId:o(),storedSnapshotSyncedAt:o().nullable(),metricsWindow:p({lookbackDays:m().int().positive()}),bounds:p({maxCampaigns:m().int().positive(),maxAdGroupsPerCampaign:m().int().positive(),maxAdsPerAdGroup:m().int().positive(),maxReaderCalls:m().int().positive(),readerCalls:m().int().nonnegative(),maxPagesPerReaderCall:m().int().positive(),maxUpstreamHttpRequests:m().int().positive(),truncated:_()}),entities:y(Kq),drift:p({entitiesCompared:m().int().nonnegative(),driftedEntities:m().int().nonnegative(),statusDrifted:m().int().nonnegative(),metricsDrifted:m().int().nonnegative()}),errors:y(Qq)});const m3=A(["admin","viewer"]),Zq=/^[a-z\d][\w.-]{0,63}$/i,Fq=o().regex(Zq,"A name may use letters, digits, dots, dashes and underscores, and must start with a letter or digit."),Yb=12,Yq=o().min(Yb,`A password must be at least ${Yb} characters.`),p3=p({id:o(),name:o(),role:m3,createdAt:o(),lastLoginAt:o().nullable()});p({users:y(p3)});p({name:Fq,password:Yq,role:m3});p({name:o().min(1),password:o().min(1)});p({authRequired:_(),user:p3.pick({name:!0,role:!0}).nullable()});const zt=1,kp=A(["system","project","queries","competitors","run"]),wp=A(["0","1","2-3","4-5","6-10","11+"]);function cn(e){return!Number.isFinite(e)||e<=0?"0":e<2?"1":e<4?"2-3":e<6?"4-5":e<11?"6-10":"11+"}const Xb=A(["api_unavailable","database_unavailable","worker_unavailable","no_provider","no_queries","provider_save_failed","project_create_failed","query_save_failed","run_rejected","run_failed","run_cancelled","unknown"]),Lc=p({eventId:o().uuid(),flowVersion:O(zt),onboardingSessionId:o().uuid()});Be("event",[Lc.extend({event:O("onboarding.started"),step:kp,resumed:_()}).strict(),Lc.extend({event:O("onboarding.step_completed"),step:kp,method:A(["existing","inline","manual","generated","skipped","automatic"]),countBucket:wp.optional()}).strict(),Lc.extend({event:O("onboarding.blocked"),step:kp,action:A(["continue","configure_provider","generate_queries","save","launch_run","retry_run"]),reasonCode:Xb}).strict(),Lc.extend({event:O("run.requested"),origin:O("dashboard_setup"),result:A(["queued","rejected"]),providerCountBucket:wp,queryCountBucket:wp,reasonCode:Xb.optional()}).strict()]);p({accepted:_()});const Xq=4;function Jq(e){return e.length<Xq}var Wq=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(Wq||{});const Y$={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},X$={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},eM=J0;function tM(e){const n=[];if(e.message&&n.push(e.message),e.providers)for(const[s,r]of Object.entries(e.providers)){const u=`[${s}] ${r.message}`;r.raw!==void 0?n.push(`${u}
|
|
53
53
|
|
|
54
54
|
${JSON.stringify(r.raw,null,2)}`):n.push(u)}return n.length>0?n.join(`
|
|
55
55
|
|
|
@@ -80,4 +80,4 @@ spec:
|
|
|
80
80
|
`);Ri(qe),ta(!0)}}catch(F){$n(F instanceof Error?F.message:"Failed to generate queries"),B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.blocked",step:"queries",action:"generate_queries",reasonCode:Nv(F,"unknown")},"onboarding.blocked:queries:generate")}finally{fl(!1)}}},Zn=async()=>{if(!Ne)return;const F=Dt;if(F.length!==0){Mi(!0),bl(null);try{await xA(Ne,F),Gu(!0),await r(),B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.step_completed",step:"competitors",method:"manual",countBucket:cn(F.length)},"onboarding.step_completed:competitors"),je(4)}catch(qe){bl(qe instanceof Error?qe.message:"Failed to save competitors"),B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.blocked",step:"competitors",action:"save",reasonCode:"unknown"},"onboarding.blocked:competitors:save")}finally{Mi(!1)}}},$i=async()=>{const F=Ss.trim();if(F){js(!0),$o(null);try{await AA("gemini",{apiKey:F}),Yt({title:"Gemini configured",detail:"Provider is ready — continuing setup.",tone:"positive",dedupeKey:"setup:gemini:configured",dedupeMode:"drop"}),Uo(""),await r(),Oi(b.providerStatuses.find(qe=>qe.name.toLowerCase()==="gemini")?.name??"gemini"),B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.step_completed",step:"system",method:"inline"},"onboarding.step_completed:system")}catch(qe){$o(qe instanceof Error?qe.message:"Failed to save Gemini key"),B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.blocked",step:"system",action:"configure_provider",reasonCode:"provider_save_failed"},"onboarding.blocked:system:provider_save_failed")}finally{js(!1)}}},hn=async()=>{if(!Ne||Ha){ws(Ha??"Complete setup before launching the first sweep.");const F=Kn??(Ne?Da===0?"no_queries":"run_rejected":"unknown");B({flowVersion:zt,onboardingSessionId:j,event:"run.requested",origin:"dashboard_setup",result:"rejected",providerCountBucket:cn(xa.length),queryCountBucket:cn(Da),reasonCode:F});return}Hn(!0),ws(null);try{const F=await $u.mutateAsync({projectName:Ne,projectLabel:fe||V||Ne,sourceAction:"setup-launch"});Vi(F.id),dn(!0),B({flowVersion:zt,onboardingSessionId:j,event:"run.requested",origin:"dashboard_setup",result:"queued",providerCountBucket:cn(xa.length),queryCountBucket:cn(Da)}),await r()}catch(F){ws(F instanceof Error?F.message:"Failed to queue the visibility sweep. Retry when the instance is ready."),B({flowVersion:zt,onboardingSessionId:j,event:"run.requested",origin:"dashboard_setup",result:"rejected",providerCountBucket:cn(xa.length),queryCountBucket:cn(Da),reasonCode:Nv(F,"run_rejected")})}finally{Hn(!1)}},mt=()=>je(F=>Math.max(0,F-1)),As=(F,qe,gn)=>{B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.step_completed",step:F,method:"existing",...gn===void 0?{}:{countBucket:cn(gn)}},`onboarding.step_completed:${F}`),je(qe)},vl=()=>{B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.step_completed",step:"queries",method:"skipped",countBucket:"0"},"onboarding.step_completed:queries"),je(3)},fn=()=>{B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.step_completed",step:"competitors",method:"skipped",countBucket:"0"},"onboarding.step_completed:competitors"),je(4)},Fn=(()=>{switch(Oe){case 0:return c.jsxs(_a,{className:"surface-card step-card",children:[c.jsx("div",{className:"section-head",children:c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 1 of 5"}),c.jsx("h2",{children:"System check"})]})}),c.jsx("p",{className:"supporting-copy",children:"Checking that your Canonry instance is configured and reachable."}),c.jsx("div",{className:"compact-stack",children:S.healthChecks.map(F=>c.jsxs("div",{className:"health-check-row",children:[c.jsxs("div",{children:[c.jsx("p",{className:"run-row-title",children:F.label}),c.jsx("p",{className:"supporting-copy",children:F.detail}),F.id==="provider"&&F.state!=="ready"&&c.jsxs("div",{className:"mt-3 rounded-md border border-default bg-bg-elevated/40 p-3 space-y-2",children:[c.jsxs("p",{className:"text-xs text-secondary",children:["Paste a Gemini key to enable visibility checks (free at"," ",c.jsx("a",{href:"https://aistudio.google.com/apikey",target:"_blank",rel:"noreferrer",className:"text-positive-400 hover:text-positive underline underline-offset-2",children:"aistudio.google.com"}),")."]}),c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("input",{type:"password",value:Ss,onChange:qe=>Uo(qe.target.value),placeholder:"AI... (paste here)",className:"flex-1 rounded-md border border-base bg-bg px-2.5 py-1.5 text-sm text-heading placeholder:text-faint focus:border-mono-600 focus:outline-none font-mono",disabled:Li}),c.jsx(xe,{type:"button",size:"sm",disabled:Li||!Ss.trim(),onClick:$t($i),children:Li?"Saving...":"Save"})]}),Go&&c.jsxs("div",{role:"alert",className:"space-y-1 text-xs text-negative",children:[c.jsx("p",{children:Go}),c.jsx("p",{children:"Check that the key is complete, then retry Save."})]}),c.jsxs("p",{className:"text-sm text-secondary",children:["Connect more answer engines later in"," ",c.jsx(et,{to:"/settings",className:"text-link hover:underline",children:"Settings"}),"."]})]})]}),c.jsx(ga,{tone:F.state==="ready"?"positive":"caution",title:F.id==="api"?No(k.apiStatus):F.id==="worker"?No(k.workerStatus):F.detail,children:F.state==="ready"?"Ready":"Attention"})]},F.id))}),c.jsxs("div",{className:"setup-nav",children:[S.launchState.blockedReason?c.jsx("p",{role:"status",className:"supporting-copy text-negative",children:S.launchState.blockedReason}):c.jsx("span",{}),c.jsx(xe,{type:"button",disabled:!S.launchState.enabled,title:S.launchState.blockedReason,onClick:()=>{B({flowVersion:zt,onboardingSessionId:j,event:"onboarding.step_completed",step:"system",method:"automatic"},"onboarding.step_completed:system"),je(we)},children:"Continue"})]})]});case 1:return c.jsxs(_a,{className:"surface-card step-card",children:[c.jsxs("div",{className:"section-head",children:[c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 2 of 5"}),c.jsx("h2",{children:"Create project"})]}),Ne?c.jsx(ga,{tone:"positive",children:"Created"}):null]}),Ne?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"text-neutral",children:["Project ",c.jsx("span",{className:"text-heading font-medium",children:Ne})," created successfully."]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:mt,children:"Back"}),c.jsx(xe,{type:"button",onClick:()=>As("project",2),children:"Continue"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"project-name",children:"Project name"}),c.jsx("input",{id:"project-name",className:"setup-input",type:"text",placeholder:"my-website",value:V,onChange:F=>ne(F.target.value)}),Wt&&Wt!==V?c.jsxs("p",{className:"supporting-copy",children:["Slug: ",Wt]}):null]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"display-name",children:"Display name (optional)"}),c.jsx("input",{id:"display-name",className:"setup-input",type:"text",placeholder:"My Website",value:fe,onChange:F=>De(F.target.value)})]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"domain",children:"Canonical domain"}),c.jsx("input",{id:"domain",className:"setup-input",type:"text",placeholder:"example.com",value:le,onChange:F=>at(F.target.value)})]}),c.jsxs("div",{className:"setup-field-row",children:[c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"country",children:"Country"}),c.jsx("input",{id:"country",className:"setup-input",type:"text",placeholder:"US",maxLength:2,value:H,onChange:F=>ue(F.target.value.toUpperCase())})]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"language",children:"Language"}),c.jsx("input",{id:"language",className:"setup-input",type:"text",placeholder:"en",maxLength:5,value:ie,onChange:F=>re(F.target.value.toLowerCase())})]})]}),c.jsxs("label",{className:"flex items-start gap-3 rounded-md border border-default bg-surface p-3 cursor-pointer hover:border-strong",children:[c.jsx("input",{type:"checkbox",className:"mt-0.5 h-4 w-4 rounded border-strong bg-bg",checked:W,onChange:F=>Z(F.target.checked)}),c.jsxs("span",{className:"flex-1",children:[c.jsx("span",{className:"block text-sm text-heading",children:"Auto-extract backlinks"}),c.jsxs("span",{className:"block text-xs text-muted mt-0.5",children:["When a new Common Crawl release syncs, automatically extract backlinks for this project."," ",c.jsx(et,{to:"/backlinks",className:"text-positive-400 hover:text-positive underline underline-offset-2",children:"Manage backlinks"})]})]})]}),st?c.jsx("p",{className:"text-negative-400 text-sm",children:st}):null,c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:mt,children:"Back"}),c.jsx(xe,{type:"button",disabled:!Wt||!le||Pt,onClick:$t(Gi),children:Pt?"Creating...":"Create project"})]})]})]});case 2:return c.jsxs(_a,{className:"surface-card step-card",children:[c.jsxs("div",{className:"section-head",children:[c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 3 of 5"}),c.jsx("h2",{children:"Add queries"})]}),X.isError?c.jsx(ga,{tone:"negative",children:"Load failed"}):Io?c.jsxs(ga,{tone:"positive",children:[lt.length," saved"]}):c.jsxs(ga,{tone:"neutral",children:[lt.length," quer",lt.length!==1?"ies":"y"]})]}),c.jsx("p",{className:"supporting-copy",children:"Enter the queries you want to track, one per line. A rough first list is fine: you can edit them, research more, and add to them at any time from the project."}),X.isError?c.jsxs("div",{className:"compact-stack",children:[c.jsx("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:"Saved queries could not be loaded. Retry before changing the query basket."}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:mt,children:"Back"}),c.jsx(xe,{type:"button",onClick:()=>{X.refetch()},children:"Retry loading queries"})]})]}):Io?c.jsxs("div",{className:"compact-stack",children:[c.jsx("ul",{className:"detail-list",children:lt.map(F=>c.jsx("li",{children:F},F))}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:mt,children:"Back"}),c.jsx(xe,{type:"button",onClick:()=>As("queries",3,lt.length),children:"Continue"})]})]}):c.jsxs("div",{className:"compact-stack",children:[xa.length>0?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("div",{className:"flex items-center gap-2 text-muted text-xs uppercase tracking-wide",children:[c.jsx("span",{className:"flex-1 border-t border-base"}),"auto-generate",c.jsx("span",{className:"flex-1 border-t border-base"})]}),c.jsxs("div",{className:"flex items-end gap-2",children:[c.jsxs("div",{className:"setup-field flex-1",children:[c.jsx("label",{className:"setup-label",htmlFor:"gen-provider",children:"Provider"}),c.jsx("select",{id:"gen-provider",className:"setup-input",value:un,onChange:F=>Oi(F.target.value),children:xa.map(F=>c.jsxs("option",{value:F.name,children:[F.displayName??F.name,F.model?` (${F.model})`:""]},F.name))})]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"gen-count",children:"Count"}),c.jsx("select",{id:"gen-count",className:"setup-input",value:Bi,onChange:F=>Uu(Number(F.target.value)),children:[3,5,10,15,20].map(F=>c.jsx("option",{value:F,children:F},F))})]}),c.jsx(xe,{type:"button",variant:"outline",disabled:Lo||!un,onClick:$t(Qn),children:Lo?"Analyzing site...":"Generate"})]}),gl?c.jsx("p",{className:"text-negative-400 text-sm",children:gl}):null]}):null,c.jsxs("div",{className:"flex items-center gap-2 text-muted text-xs uppercase tracking-wide",children:[c.jsx("span",{className:"flex-1 border-t border-base"}),"or type manually",c.jsx("span",{className:"flex-1 border-t border-base"})]}),c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"queries",children:"Queries (one per line)"}),c.jsx("textarea",{id:"queries",className:"setup-textarea",rows:6,placeholder:`emergency dentist brooklyn
|
|
81
81
|
best invisalign downtown brooklyn
|
|
82
82
|
pediatric dentist brooklyn heights`,value:Gn,onChange:F=>Ri(F.target.value)})]}),vs?c.jsx("p",{className:"text-negative-400 text-sm",children:vs}):null,c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:mt,children:"Back"}),c.jsx(xe,{type:"button",variant:"ghost",onClick:vl,children:"Skip for now"}),c.jsx(xe,{type:"button",disabled:lt.length===0||ks,onClick:$t(Ho),children:ks?"Saving...":`Save ${lt.length} quer${lt.length!==1?"ies":"y"}`})]})]})]});case 3:return c.jsxs(_a,{className:"surface-card step-card",children:[c.jsxs("div",{className:"section-head",children:[c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 4 of 5"}),c.jsx("h2",{children:"Add competitors"})]}),Jt?c.jsx(ga,{tone:"positive",children:"Saved"}):null]}),c.jsx("p",{className:"supporting-copy",children:"Domains that compete for the same queries. One per line."}),Jt?c.jsxs("div",{className:"compact-stack",children:[c.jsx("ul",{className:"detail-list",children:Dt.map(F=>c.jsx("li",{children:F},F))}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:mt,children:"Back"}),c.jsx(xe,{type:"button",onClick:()=>As("competitors",4,Dt.length),children:"Continue"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsxs("div",{className:"setup-field",children:[c.jsx("label",{className:"setup-label",htmlFor:"competitors",children:"Competitor domains (one per line)"}),c.jsx("textarea",{id:"competitors",className:"setup-textarea",rows:4,placeholder:`competitor1.com
|
|
83
|
-
competitor2.com`,value:Xt,onChange:F=>tn(F.target.value)})]}),yl?c.jsx("p",{className:"text-negative-400 text-sm",children:yl}):null,c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:mt,children:"Back"}),c.jsxs("div",{className:"flex gap-2",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:fn,children:"Skip"}),c.jsx(xe,{type:"button",disabled:Dt.length===0||qi,onClick:$t(Zn),children:qi?"Saving...":`Save ${Dt.length} competitor${Dt.length!==1?"s":""}`})]})]})]})]});case 4:{const F=an.data,qe=F?.status??(Ii===M?.id?M.status:void 0),gn=qe==="completed"||qe==="partial"||qe==="failed"||qe==="cancelled",Yn=F?.snapshots??[],Cs=Yn.filter(nn=>nn.citationState==="cited").length,Ns=Yn.filter(nn=>nn.answerMentioned===!0).length,Ea=new Set(Yn.map(nn=>nn.query).filter(nn=>!!nn)).size,aa=qe?_v(qe,Yn.length):!1,Ko=J&&!$a,Hu=Pi??(F?.error?eM(F.error):qe==="cancelled"?"The sweep was cancelled before it produced a baseline.":(qe==="completed"||qe==="partial")&&Yn.length===0?"The sweep finished without producing any snapshots. Confirm the query set and provider configuration, then retry.":M?.statusDetail||"The sweep did not produce a baseline. Review provider configuration, then retry.");let yn=null;return Ko||aa?yn=c.jsx(ga,{tone:"positive",children:"Complete"}):Pi&&!$a?yn=c.jsx(ga,{tone:"negative",children:"Failed"}):gn?yn=c.jsx(ga,{tone:"negative",children:qe==="cancelled"?"Cancelled":"Failed"}):$a&&(yn=c.jsx(ga,{tone:"caution",children:"Running"})),c.jsxs(_a,{className:"surface-card step-card",children:[c.jsxs("div",{className:"section-head",children:[c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 5 of 5"}),c.jsx("h2",{children:"Launch first run"})]}),yn]}),Ko?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"text-secondary",children:["Setup is complete. ",c.jsx("span",{className:"text-strong font-medium",children:Ne})," already has a successful answer-visibility baseline."]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(xe,{type:"button",onClick:Ct,children:g?"Finish and open project":"Open project dashboard →"})]})]}):$a?gn?aa?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"text-neutral",children:["Sweep complete. Your first answer-visibility snapshot for"," ",c.jsx("span",{className:"text-heading font-medium",children:Ne}),":"]}),c.jsxs("div",{className:"grid grid-cols-3 gap-2 mt-1",children:[c.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[c.jsx("p",{className:"text-xs font-medium text-secondary",children:"Mentioned"}),c.jsxs("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:[Ns,c.jsxs("span",{className:"text-faint text-lg",children:[" / ",Ea]})]}),c.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries naming your brand"})]}),c.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[c.jsx("p",{className:"text-xs font-medium text-secondary",children:"Cited"}),c.jsxs("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:[Cs,c.jsxs("span",{className:"text-faint text-lg",children:[" / ",Ea]})]}),c.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries citing your site"})]}),c.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[c.jsx("p",{className:"text-xs font-medium text-secondary",children:"Results"}),c.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:Yn.length}),c.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"completed engine checks"})]})]}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:g?"Your project is ready. Review the evidence in the project.":"Open the project to review the evidence."}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(xe,{type:"button",onClick:Ct,children:g?"Finish and open project":"Open project dashboard →"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[c.jsx("p",{children:Hu}),c.jsx("p",{className:"mt-1 text-xs text-secondary",children:"Fix provider or query configuration if needed, then retry without leaving setup."})]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",asChild:!0,children:c.jsx(et,{to:"/settings",children:"Configure providers"})}),c.jsx(xe,{type:"button",disabled:mn||!!Ha,onClick:$t(hn),children:mn?"Retrying...":"Retry visibility sweep"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsx("p",{className:"text-neutral",children:"Sweep running. This usually takes 30 to 60 seconds."}),c.jsx("div",{className:"rounded-md border border-default bg-surface p-3 text-xs text-muted",children:c.jsxs("p",{children:["Status: ",c.jsx("span",{className:"text-neutral",children:qe??"queued"})]})}),an.isError&&c.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[c.jsx("p",{children:an.error instanceof Error?an.error.message:"Could not refresh the sweep status."}),c.jsx(xe,{type:"button",variant:"outline",size:"sm",className:"mt-2",onClick:()=>{an.refetch()},children:"Retry status check"})]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(xe,{type:"button",variant:"outline",onClick:Ct,children:g?"Finish and open project":"Watch on project page"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"supporting-copy",children:["Setup is done. You can run a first sweep now to get a baseline for"," ",c.jsx("span",{className:"text-heading font-medium",children:Ne}),", or finish and run it later from the project. A sweep calls the answer engines, so it costs provider usage."]}),(Ha||Pi)&&c.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[c.jsx("p",{children:Pi??Ha}),c.jsx("p",{className:"mt-1 text-xs text-secondary",children:"Resolve the blocker above, then retry the sweep here."})]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:mt,children:"Back"}),c.jsx(xe,{type:"button",variant:"ghost",onClick:Ct,children:"Finish without running"}),c.jsx(xe,{type:"button",disabled:mn||!!Ha,title:Ha,onClick:$t(hn),children:mn?"Launching...":Pi?"Retry visibility sweep":"Launch visibility sweep"})]})]})]})}default:return null}})();return c.jsxs("div",{className:"page-container",children:[g?c.jsx(_o,{current:"visibility"}):null,c.jsxs("div",{className:"page-header",children:[c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{ref:u?f:void 0,tabIndex:u?-1:void 0,className:"page-title",children:u?"Set up AI Visibility":"Setup"}),c.jsx("p",{className:"page-subtitle",children:u?"Choose what to track, then run your first visibility sweep.":"Create a project and run its first visibility check."})]}),g?c.jsx("div",{className:"page-header-right",children:c.jsx(xe,{type:"button",variant:"outline",onClick:Ct,children:"Skip AI Visibility"})}):null]}),c.jsx(IL,{current:Oe,labels:ML}),c.jsx("section",{className:"setup-wizard",children:Fn})]})}const GL=D.lazy(async()=>({default:(await Ln(()=>import("./SiteHealthSection-B9WF97sJ.js").then(n=>n.d),__vite__mapDeps([0,1,2,3,4]),import.meta.url)).SiteHealthSection})),$L=1800,HL="https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent",KL="Help me set up Canonry for my public site.\n\nUse Canonry's official docs:\n- Agent quickstart: https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent\n- CLI reference: https://github.com/Canonry/canonry/blob/main/skills/canonry/references/canonry-cli.md\n- Plugin setup: https://github.com/Canonry/canonry/blob/main/docs/plugins.md\n- MCP setup: https://github.com/Canonry/canonry/blob/main/docs/mcp.md\n\nUse an existing Canonry installation or connected plugin/MCP if one is already available. Do not create a duplicate. The `cnry` and `canonry` commands are interchangeable.\n\n1. Ask for my public domain, country, and language. Do not create or scan anything yet.\n2. Check the local setup with `command -v cnry`, `cnry --version`, `cnry doctor --format json`, and `cnry project list --format json`. If Canonry is missing, propose `npm install -g @canonry/canonry` and wait for approval. If initialization is required, tell me to run `cnry init` in my private terminal and wait. Never ask me to paste passwords, API keys, OAuth credentials, or `cnry init` output.\n3. Show the normalized domain, proposed project name, exact `cnry project create ...` command, and wait for explicit approval before creating it.\n4. Propose a bounded Site Health scan, including `--max-pages` and whether dead-link checking is enabled. Show the exact `cnry technical-aeo run ... --wait --format json` command and wait for separate approval before scanning.\n5. After the crawl, summarize the findings and propose AI Visibility setup. Ask before adding queries, connecting providers, starting any provider-backed or quota-consuming run, editing files, or publishing.";function QL(e,n){return e==="legacy"?"legacy":e==="platform"?"platform":n.state==="success"?n.projectCount===0?"platform":"legacy":n.state==="error"?"retry":"loading"}function ZL(e,n){try{const s=new Intl.DisplayNames(["en"],{type:"region"}),r=new Intl.DisplayNames(["en"],{type:"language"}),u=e.length===2?s.of(e.toUpperCase()):void 0,f=n?r.of(n.toLowerCase()):void 0;return`${u??(e||"Country")} · ${f??(n||"Language")}`}catch{return`${e||"Country"} · ${n||"Language"}`}}function FL(e){const n=e.replace(/^\[|\]$/g,"");return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(n)||n.includes(":")}function YL(e){const n=e.trim();if(!n)return null;const s=/^[a-z][a-z\d+.-]*:\/\//i.test(n)?n:`https://${n}`;let r;try{r=new URL(s)}catch{return null}if(r.protocol!=="http:"&&r.protocol!=="https:")return null;const u=r.hostname.toLowerCase().replace(/^www\./,"");if(!u||u==="localhost"||FL(u)||!u.includes("."))return null;const f=u.replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return f?{canonicalDomain:u,projectName:f,displayName:u}:null}async function XL(e,n=$L){let s;const r=new Promise(f=>{s=setTimeout(()=>f({state:"timed-out"}),n)}),u=await Promise.race([e.then(f=>({state:"queued",run:f})),r]);return s&&clearTimeout(s),u}function JL(e,n){e.catch(()=>{Yt({title:"Site Health scan did not start",detail:"The project is safe. Choose Run scan in Site Health to retry.",tone:"negative",dedupeKey:`site-health-dispatch:${n}`})})}function Dv(e,n){return e instanceof oa&&e.statusCode===409?"A project with this name already exists. Change the project name, or open the existing project.":e instanceof Error&&e.message?e.message:n}function WL(){return c.jsxs("div",{className:"page-container max-w-3xl","aria-busy":"true","aria-live":"polite",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Preparing setup"}),c.jsx("p",{className:"page-subtitle",children:"Checking the projects already on this install."})]})}),c.jsxs("div",{className:"flex items-center gap-3 rounded-lg border border-default bg-surface p-4 text-sm text-secondary",role:"status",children:[c.jsx(bo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading projects…"]})]})}function eU({onRetry:e}){return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Can’t load projects"}),c.jsx("p",{className:"page-subtitle",children:"Canonry could not confirm whether this install already has a project."})]})}),c.jsxs("div",{className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",tabIndex:-1,children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:"Setup is paused to protect existing projects."}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),c.jsx(xe,{type:"button",className:"mt-4",variant:"secondary",onClick:e,children:"Retry project check"})]})]})}function tU({projectName:e,initialRunId:n}){return c.jsx(Th,{title:"Site Health setup",children:c.jsx(aU,{projectName:e,initialRunId:n})})}function aU({projectName:e,initialRunId:n}){const s=ms(),r=Ft({...gs({client:se}),enabled:!!e,retry:!1,refetchOnMount:"always"});if(!e)return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Project not found"}),c.jsx("p",{className:"page-subtitle",children:"This setup link does not identify a project."})]})}),c.jsx(xe,{type:"button",variant:"secondary",onClick:()=>{s({to:"/projects"})},children:"View projects"})]});if(r.isPending)return c.jsxs("div",{className:"page-container max-w-3xl","aria-busy":"true","aria-live":"polite",children:[c.jsx(_o,{current:"site"}),c.jsxs("div",{className:"mt-8 flex items-center gap-3 text-sm text-secondary",role:"status",children:[c.jsx(bo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health setup…"]})]});if(r.isError)return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Can’t resume setup"}),c.jsx("p",{className:"page-subtitle",children:"Canonry could not load the project for this Site Health scan."})]})}),c.jsxs("div",{className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",children:[c.jsx("p",{className:"text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),c.jsx(xe,{type:"button",className:"mt-4",variant:"secondary",onClick:()=>{r.refetch()},children:"Retry project check"})]})]});const u=r.data.find(x=>x.name===e);if(!u)return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Project not found"}),c.jsxs("p",{className:"page-subtitle",children:["Canonry could not find ",e,". It will not open a different project."]})]})}),c.jsx(xe,{type:"button",variant:"secondary",onClick:()=>{s({to:"/projects"})},children:"View projects"})]});const f=()=>{s({to:"/setup",search:{onboarding:"site-health",setupProject:u.name},replace:!0})},g=()=>{s({to:"/setup",search:{experience:"legacy",onboarding:"site-health",setupProject:u.name},replace:!0})},b=()=>{s({to:"/projects/$projectName",params:{projectName:u.name},replace:!0})};return c.jsxs("div",{className:"page-container max-w-7xl py-8 md:py-10",children:[c.jsx("h1",{className:"sr-only",children:"Set up Canonry"}),c.jsx(D.Suspense,{fallback:c.jsxs("div",{className:"space-y-5",children:[c.jsx(_o,{current:"site"}),c.jsxs("div",{className:"flex min-h-72 items-center justify-center gap-3 text-sm text-secondary",role:"status",children:[c.jsx(bo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health…"]})]}),children:c.jsx(GL,{projectName:u.name,projectId:u.id,initialRunId:n,onReleaseInitialRun:f,showOnboardingActions:!0,onContinueOnboarding:g,onSkipOnboarding:b})})]})}function nU(){const e=Tv({from:"/setup"}),n=e.onboarding==="site-health"&&!e.setupProject,s=e.onboarding==="site-health"&&e.experience!=="legacy",r=W6(),u=e.experience==="legacy"?"legacy":r,[f,g]=D.useState(!1),b=Ft({...gs({client:se}),enabled:u==="auto",retry:!1,refetchOnMount:"always"}),x=u==="auto"&&b.isSuccess&&b.isFetchedAfterMount&&b.data.length===0;D.useEffect(()=>{x&&g(!0)},[x]);const k=u!=="auto"?{state:"idle"}:b.isSuccess&&b.isFetchedAfterMount?{state:"success",projectCount:b.data.length}:b.isError?{state:"error"}:{state:"loading"},S=u==="legacy"?"legacy":f||x?"platform":QL(u,k);return n||s?c.jsx(tU,{projectName:e.setupProject,initialRunId:e.siteHealthRunId}):S==="legacy"?c.jsx(VL,{visibilityProjectName:e.setupProject,siteHealthOnboarding:e.onboarding==="site-health"}):S==="loading"?c.jsx(WL,{}):S==="retry"?c.jsx(eU,{onRetry:()=>{b.refetch()}}):c.jsx(iU,{onActivationStarted:()=>g(!0)})}function iU({onActivationStarted:e}){return c.jsx(Th,{title:"Site Health setup",children:c.jsx(sU,{onActivationStarted:e})})}function sU({onActivationStarted:e}){const n=ms(),s=Vn(),r=zL(),[u,f]=D.useState(""),[g,b]=D.useState(""),[x,k]=D.useState(""),[S,C]=D.useState("US"),[j,E]=D.useState("en"),[B,q]=D.useState(!1),[U,G]=D.useState("idle"),[te,X]=D.useState(null),[ae,oe]=D.useState(null),[ge,M]=D.useState(!1),[J,_e]=D.useState(null),[he,we]=D.useState(!1),Oe=D.useRef(null),je=YL(u),Fe=g||je?.projectName||"",ye=x||je?.displayName||"",V=U==="creating"||U==="dispatching",ne=ae??J,fe=ZL(S,j);D.useEffect(()=>{ne&&Oe.current?.focus()},[ne]);const De=(re,W)=>n({to:"/setup",search:{...W?{siteHealthRunId:W}:{},onboarding:"site-health",setupProject:re.name},replace:!0}),le=async re=>{G("dispatching"),_e(null);try{const W=r.mutateAsync({projectName:re.name,projectId:re.id,projectLabel:re.displayName||re.name,suppressErrorToast:!0,body:{checkDeadLinks:!0}}),Z=await XL(W);if(Z.state==="queued"){await De(re,Z.run.runId);return}JL(W,re.id),await De(re)}catch(W){G("recovery"),_e(Dv(W,"The project was created, but the Site Health scan could not be started."))}},at=async re=>{if(re.preventDefault(),!(!je||!B||V)){G("creating"),oe(null),M(!1),_e(null);try{const W=await ux({name:Fe,displayName:ye,canonicalDomain:je.canonicalDomain,country:S,language:j});e(),X(W),await s.invalidateQueries({queryKey:Ai({client:se})}),await le(W)}catch(W){G("idle");const Z=W instanceof oa&&W.statusCode===409;M(Z),oe(Dv(W,"Could not create the project. Try again.")),Z&&(e(),s.invalidateQueries({queryKey:Ai({client:se})}))}}},H=()=>{te&&!V&&le(te)},ue=()=>{V||n({to:"/projects"})},ie=async()=>{try{await navigator.clipboard.writeText(KL),we(!0)}catch{Yt({tone:"negative",title:"Could not copy setup request",detail:"Open the agent quickstart to continue with the CLI instead."})}};return te&&U==="recovery"?c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx(_o,{current:"site"}),c.jsx("div",{className:"page-header mt-8",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Project created"}),c.jsxs("p",{className:"page-subtitle",children:[te.displayName||te.name," is ready. The Site Health scan needs another try."]})]})}),c.jsxs("div",{ref:Oe,className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",tabIndex:-1,children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:J}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"You can retry the scan or continue setup and retry from Site Health."}),c.jsxs("div",{className:"mt-4 flex flex-wrap gap-3",children:[c.jsx(xe,{type:"button",onClick:H,children:"Retry Site Health scan"}),c.jsx(xe,{type:"button",variant:"secondary",onClick:()=>{De(te)},children:"Continue setup"})]})]})]}):c.jsxs("div",{className:"page-container max-w-xl py-8 md:py-12",children:[c.jsx(_o,{current:"site"}),c.jsxs("header",{className:"mb-8 mt-8",children:[c.jsx("h1",{id:"site-map-setup-title",className:"text-2xl font-semibold tracking-[-0.025em] text-heading",children:"Map your site"}),c.jsx("p",{className:"mt-2 max-w-lg text-sm leading-6 text-secondary",children:"Enter your public website to see its pages, structure, and internal links."})]}),c.jsxs("form",{"aria-labelledby":"site-map-setup-title",className:"space-y-6",onSubmit:$t(at),noValidate:!0,children:[c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm font-medium text-heading",htmlFor:"launchpad-domain",children:"Website URL"}),c.jsx("input",{id:"launchpad-domain",className:"h-11 w-full rounded-md border border-strong bg-bg-elevated/50 px-3 text-base text-heading outline-none transition placeholder:text-muted focus:border-mono-500 focus:ring-1 focus:ring-mono-500",type:"text",inputMode:"url",autoComplete:"url",autoCapitalize:"none",spellCheck:!1,required:!0,"aria-invalid":!!(u&&!je),"aria-describedby":u&&!je?"launchpad-domain-hint launchpad-domain-error":"launchpad-domain-hint",placeholder:"https://example.com",value:u,onChange:re=>{f(re.target.value),oe(null),M(!1)}}),c.jsxs("p",{id:"launchpad-domain-hint",className:"text-sm text-secondary",children:["Only public pages are scanned."," ",c.jsx(et,{to:"/setup",search:{experience:"legacy"},className:"font-medium text-link underline-offset-4 hover:underline",children:"Set up without a site scan"})]}),u&&!je?c.jsx("p",{id:"launchpad-domain-error",className:"text-sm text-negative",role:"alert",children:"Enter a public domain, such as example.com."}):null]}),c.jsxs("details",{className:"group border-y border-default",children:[c.jsxs("summary",{className:"flex min-h-11 cursor-pointer list-none items-center justify-between gap-4 py-3 text-sm [&::-webkit-details-marker]:hidden",children:[c.jsx("span",{className:"font-medium text-heading",children:"Advanced settings"}),c.jsxs("span",{className:"flex items-center gap-2 text-secondary",children:[fe,c.jsx(u0,{className:"size-4 transition-transform group-open:rotate-180 motion-reduce:transition-none","aria-hidden":"true"})]})]}),c.jsxs("div",{className:"space-y-5 border-t border-default py-4",children:[je?c.jsxs("div",{children:[c.jsx("p",{className:"mb-3 text-sm font-medium text-heading",children:"Project"}),c.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-project-name",children:"Project name"}),c.jsx("input",{id:"launchpad-project-name",className:"setup-input h-10",type:"text",value:Fe,onChange:re=>b(re.target.value)})]}),c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-display-name",children:"Display name"}),c.jsx("input",{id:"launchpad-display-name",className:"setup-input h-10",type:"text",value:ye,onChange:re=>k(re.target.value)})]})]})]}):null,c.jsxs("div",{children:[c.jsx("p",{className:"mb-3 text-sm font-medium text-heading",children:"Locale"}),c.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-country",children:"Country"}),c.jsx("input",{id:"launchpad-country",className:"setup-input h-10",type:"text",maxLength:2,value:S,onChange:re=>C(re.target.value.toUpperCase())})]}),c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-language",children:"Language"}),c.jsx("input",{id:"launchpad-language",className:"setup-input h-10",type:"text",maxLength:5,value:j,onChange:re=>E(re.target.value.toLowerCase())})]})]})]})]})]}),c.jsxs("label",{className:"flex min-h-11 cursor-pointer items-start gap-3 py-2",children:[c.jsx("input",{className:"mt-0.5 size-4 shrink-0 rounded border-strong bg-bg",type:"checkbox",checked:B,onChange:re=>q(re.target.checked),"aria-label":"Allow Canonry to scan this public site.","aria-describedby":"local-crawl-note"}),c.jsxs("span",{className:"grid gap-0.5",children:[c.jsx("span",{className:"text-sm leading-5 text-heading",children:"Allow Canonry to scan this public site."}),c.jsx("span",{id:"local-crawl-note",className:"text-sm leading-5 text-secondary",children:"The crawl runs on this Canonry instance, follows internal links, and stores its results locally."})]})]}),ne?c.jsxs("div",{ref:Oe,className:"rounded-md border border-negative bg-negative-soft p-3",role:"alert",tabIndex:-1,children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:ne}),ge?c.jsx(xe,{type:"button",variant:"secondary",size:"sm",className:"mt-3",onClick:ue,children:"View projects"}):null]}):null,c.jsxs("div",{className:"grid gap-2",children:[c.jsx(xe,{className:"h-11 w-full",type:"submit",disabled:!je||!B||V,children:U==="creating"||U==="dispatching"?c.jsxs(c.Fragment,{children:[c.jsx(bo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"})," Mapping site…"]}):"Map site"}),c.jsx(xe,{className:"w-full",type:"button",variant:"ghost",disabled:V,onClick:ue,children:"Cancel"}),U==="dispatching"?c.jsx("span",{className:"text-center text-sm text-secondary",role:"status",children:"Opening Site Health when the scan is ready."}):null]})]}),c.jsxs("section",{className:"mt-8 border-t border-default pt-6","aria-labelledby":"agent-setup-title",children:[c.jsx("p",{id:"agent-setup-title",className:"text-sm font-medium text-heading",children:"Use your agent instead"}),c.jsx("p",{className:"mt-1 text-sm leading-5 text-secondary",children:"Copy a complete CLI setup request into any coding agent."}),c.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-1",children:[c.jsxs(xe,{type:"button",variant:"ghost",size:"sm",className:"-ml-3",onClick:$t(ie),children:[he?c.jsx(d0,{className:"size-3.5","aria-hidden":"true"}):c.jsx(Uv,{className:"size-3.5","aria-hidden":"true"}),c.jsx("span",{"aria-live":"polite",children:he?"Copied setup request":"Copy setup request"})]}),c.jsx(xe,{asChild:!0,variant:"ghost",size:"sm",children:c.jsxs("a",{href:HL,target:"_blank",rel:"noopener noreferrer",children:["Agent quickstart",c.jsx(qj,{className:"size-3.5","aria-hidden":"true"}),c.jsx("span",{className:"sr-only",children:" (opens in a new tab)"})]})})]})]})]})}function oU(){return c.jsx("div",{className:"page-container",children:c.jsx("section",{className:"page-section",children:c.jsxs(_a,{className:"surface-card empty-card",children:[c.jsx("h1",{children:"Route not found"}),c.jsx("p",{children:"The current path does not map to a dashboard view."}),c.jsx(xe,{asChild:!0,children:c.jsx(et,{to:"/",children:"Return to overview"})})]})})})}const Ga=Ci(()=>Ln(()=>import("./ProjectPage-CoRkwGec.js"),__vite__mapDeps([5,1,6,0,2,3,4,7,8,9,10,11,12]),import.meta.url),"ProjectPage"),rU=Ci(()=>Ln(()=>import("./RunsPage-7wdCl_J3.js"),__vite__mapDeps([13,1,6,10,4,2,11,12]),import.meta.url),"RunsPage"),lU=Ci(()=>Ln(()=>import("./HistoryPage-D0BWQK0c.js"),__vite__mapDeps([14,1,8,10,4,2,11,12]),import.meta.url),"HistoryPage"),cU=Ci(()=>Ln(()=>import("./SettingsPage-D37dV5-m.js"),__vite__mapDeps([15,1,10,4,2,11,12]),import.meta.url),"SettingsPage"),uU=Ci(()=>Ln(()=>import("./BacklinksPage-BcWequGL.js"),__vite__mapDeps([16,1,2,10,4,11,12]),import.meta.url),"BacklinksPage"),dU=Ci(()=>Ln(()=>import("./TrafficPage-Bn1yDSRr.js"),__vite__mapDeps([17,1,7,2,10,4,11,12]),import.meta.url),"TrafficPage"),mU=Ci(()=>Ln(()=>import("./TrafficSourceDetailPage-CURlB_yO.js"),__vite__mapDeps([18,1,7,3,4,2,10,11,12]),import.meta.url),"TrafficSourceDetailPage"),pU=Ci(()=>Ln(()=>import("./MeasurementPropertyPage-D96eQnYJ.js"),__vite__mapDeps([19,1,3,4,9,2,10,11,12]),import.meta.url),"MeasurementPropertyPage");function hU(){return c.jsx(fL,{children:c.jsx(hL,{})})}const ra=dj()({component:hU,validateSearch:e=>({manageQueries:e.manageQueries===!0||e.manageQueries==="true"?!0:void 0,runId:typeof e.runId=="string"?e.runId:void 0,siteHealthRunId:typeof e.siteHealthRunId=="string"?e.siteHealthRunId:void 0,evidenceId:typeof e.evidenceId=="string"?e.evidenceId:void 0,runStatus:typeof e.runStatus=="string"?e.runStatus:void 0,runKind:typeof e.runKind=="string"?e.runKind:void 0,runProject:typeof e.runProject=="string"?e.runProject:void 0,runWindow:typeof e.runWindow=="string"?e.runWindow:void 0,runQuery:typeof e.runQuery=="string"?e.runQuery:void 0,onboarding:e.onboarding==="site-health"?"site-health":void 0,experience:e.experience==="legacy"?"legacy":void 0,setupProject:typeof e.setupProject=="string"?e.setupProject:void 0,scope:typeof e.scope=="string"?e.scope:void 0,class:typeof e.class=="string"?e.class:void 0})}),fU=xt({getParentRoute:()=>ra,path:"/",component:xL,beforeLoad:async({context:e})=>{let n=e.queryClient.getQueryData(Ai({client:se}));if(n===void 0)try{n=await e.queryClient.ensureQueryData(gs({client:se}))}catch{return}if(n.length===0)throw Ov({to:"/setup"})}}),gU=xt({getParentRoute:()=>ra,path:"/projects",component:wL}),yU=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,va=xt({getParentRoute:()=>ra,path:"/projects/$projectName",component:()=>c.jsx(zp,{}),beforeLoad:async({context:e,params:n,location:s})=>{const r=n.projectName;if(!yU.test(r))return;let u=e.queryClient.getQueryData(Ai({client:se}));if(!u)try{u=await e.queryClient.ensureQueryData(gs({client:se}))}catch{return}const f=u.find(g=>g.id===r);if(f)throw Ov({to:s.pathname.replace(`/projects/${r}`,`/projects/${encodeURIComponent(f.name)}`),replace:!0})}}),bU=xt({getParentRoute:()=>va,path:"/",component:()=>c.jsx(Ga,{tab:"overview"})}),vU=xt({getParentRoute:()=>va,path:"/portfolio",component:()=>c.jsx(Ga,{tab:"portfolio"})}),xU=xt({getParentRoute:()=>va,path:"/search-console",component:()=>c.jsx(Ga,{tab:"search-console"})}),kU=xt({getParentRoute:()=>va,path:"/conversions",component:()=>c.jsx(Ga,{tab:"conversions"})}),wU=xt({getParentRoute:()=>va,path:"/local",component:()=>c.jsx(Ga,{tab:"local"})}),SU=xt({getParentRoute:()=>va,path:"/discovery",component:()=>c.jsx(Ga,{tab:"discovery"})}),jU=xt({getParentRoute:()=>va,path:"/properties/$targetKey",component:()=>c.jsx(pU,{})}),AU=xt({getParentRoute:()=>va,path:"/report",component:()=>c.jsx(Ga,{tab:"report"})}),CU=xt({getParentRoute:()=>va,path:"/activity",component:()=>c.jsx(Ga,{tab:"activity"})}),NU=xt({getParentRoute:()=>va,path:"/backlinks",component:()=>c.jsx(Ga,{tab:"backlinks"})}),_U=xt({getParentRoute:()=>va,path:"/technical-aeo",component:()=>c.jsx(Ga,{tab:"technical-aeo"})}),zU=xt({getParentRoute:()=>va,path:"/history",component:()=>c.jsx(Ga,{tab:"history"})}),DU=xt({getParentRoute:()=>va,path:"/settings",component:()=>c.jsx(Ga,{tab:"settings"})}),EU=xt({getParentRoute:()=>ra,path:"/runs",component:rU}),TU=xt({getParentRoute:()=>ra,path:"/history",component:lU}),RU=xt({getParentRoute:()=>ra,path:"/settings",component:cU,beforeLoad:({context:e})=>{}}),OU=xt({getParentRoute:()=>ra,path:"/setup",component:nU}),BU=xt({getParentRoute:()=>ra,path:"/backlinks",component:uU}),qU=xt({getParentRoute:()=>ra,path:"/traffic",component:dU}),MU=xt({getParentRoute:()=>ra,path:"/traffic/$projectName/$sourceId",component:mU}),PU=xt({getParentRoute:()=>ra,path:"*",component:oU}),IU=ra.addChildren([fU,gU,va.addChildren([bU,vU,xU,kU,wU,SU,jU,AU,CU,NU,_U,zU,DU]),EU,TU,RU,OU,BU,qU,MU,PU]);function VU(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const Ev=VU(),LU=Ev==="/"?"":Ev.replace(/\/$/,"");function UU(e,n){return mj({routeTree:IU,basepath:LU||"/",context:{queryClient:e},...n?.initialEntries})}const GU=6e4;function $U(){const[e,n]=D.useState(ap()?"ready":"checking"),[s,r]=D.useState(null),[u,f]=D.useState(!1),[g,b]=D.useState(""),[x,k]=D.useState(""),[S,C]=D.useState(""),[j,E]=D.useState(null),[B,q]=D.useState(!1),[U,G]=D.useState(!1),te=D.useRef(null),X=D.useRef(null),ae=D.useRef(null),oe=()=>{const he=s?`${s.name}:${s.role}`:"no-accounts";if(!te.current||ae.current!==he){X.current?.clear();const we=ZA();X.current=we,te.current=UU(we),ae.current=he}return{queryClient:X.current,router:te.current}},ge=he=>he.authRequired?(f(!0),r(he.user),n(he.user?"ready":"account-login"),!0):!1;D.useEffect(()=>{if(ap())return;let he=!1;return Promise.allSettled([Ny(),Cy()]).then(([we,Oe])=>{if(he||we.status==="fulfilled"&&ge(we.value))return;if(Oe.status==="rejected"){const Fe=Oe.reason;E(Fe instanceof Error?Fe.message:"Failed to reach the Canonry API"),n("login");return}const je=Oe.value;je.authenticated?n("ready"):n(je.setupRequired?"setup":"login")}),()=>{he=!0}},[]),D.useEffect(()=>{if(e!=="ready"||ap())return;const he=setInterval(()=>{if(u){Ny().then(we=>{we.authRequired&&!we.user&&(G(!0),r(null),n("account-login"))}).catch(()=>{});return}Cy().then(we=>{we.authenticated||(G(!0),n(we.setupRequired?"setup":"login"))}).catch(()=>{})},GU);return Ay(()=>{G(!0),r(null),n(u?"account-login":"login")}),()=>{clearInterval(he),Ay(null)}},[e,u]);const M=async he=>{if(he.preventDefault(),!x.trim()||x.trim().length<8){E("Password must be at least 8 characters");return}if(x!==S){E("Passwords do not match");return}q(!0),E(null);try{if(!(await wA(x.trim())).authenticated){E("Setup failed");return}k(""),C(""),G(!1),n("ready")}catch(we){E(we instanceof oa||we instanceof Error?we.message:"Setup failed")}finally{q(!1)}},J=async he=>{if(he.preventDefault(),!!x.trim()){q(!0),E(null);try{if(!(await SA(x.trim())).authenticated){E("Incorrect password");return}k(""),G(!1),n("ready")}catch(we){E(we instanceof oa||we instanceof Error?we.message:"Authentication failed")}finally{q(!1)}}},_e=async he=>{if(he.preventDefault(),!(!g.trim()||!x)){q(!0),E(null);try{const we=await jA(g.trim(),x);if(!we.user){E("Incorrect name or password.");return}k(""),G(!1),r(we.user),n("ready")}catch(we){E(we instanceof oa?we.message:"Incorrect name or password.")}finally{q(!1)}}};if(e==="ready"){const{queryClient:he,router:we}=oe();return c.jsx(PA,{account:s,children:c.jsx(pj,{client:he,children:c.jsx(hj,{router:we})})})}return c.jsx("div",{className:"min-h-screen bg-bg px-4 py-8",children:c.jsxs("div",{className:"mx-auto flex min-h-[calc(100vh-4rem)] max-w-md flex-col items-center justify-center gap-5",children:[c.jsxs("div",{"data-testid":"auth-brand",className:"flex items-center gap-2.5",children:[c.jsx("img",{className:"size-7",src:"./favicon.svg",alt:"","aria-hidden":"true"}),c.jsx("span",{className:"text-lg font-semibold tracking-tight text-heading",children:"Canonry"})]}),c.jsx(_a,{className:"surface-card w-full",children:e==="checking"?c.jsx(ho,{className:"py-8",children:c.jsx("p",{className:"supporting-copy text-center",children:"Connecting to Canonry…"})}):e==="account-login"?c.jsxs(c.Fragment,{children:[c.jsxs(Qr,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),c.jsx(Zr,{children:"Sign in to Canonry"})]}),c.jsxs(ho,{children:[U?c.jsx("p",{className:"mb-4 rounded-md border border-caution bg-caution-soft px-3 py-2 text-sm text-caution",children:"You were signed out — please sign in again."}):null,c.jsxs("form",{className:"space-y-4",onSubmit:$t(_e),children:[c.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-name",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Name"}),c.jsx("input",{autoFocus:!0,id:"account-name",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"text",autoComplete:"username",value:g,onChange:he=>b(he.target.value)})]}),c.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-password",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),c.jsx("input",{id:"account-password",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",autoComplete:"current-password",value:x,onChange:he=>k(he.target.value)})]}),j?c.jsx("p",{className:"text-sm text-negative-400",children:j}):null,c.jsx(xe,{type:"submit",disabled:B||!g.trim()||!x,children:B?"Signing in…":"Sign in"})]})]})]}):e==="setup"?c.jsxs(c.Fragment,{children:[c.jsxs(Qr,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),c.jsx(Zr,{children:"Create a dashboard password"}),c.jsx(cu,{children:"Choose a password to protect the Canonry dashboard."})]}),c.jsx(ho,{children:c.jsxs("form",{className:"space-y-4",onSubmit:$t(M),children:[c.jsxs("label",{className:"block space-y-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),c.jsx("input",{autoFocus:!0,className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",value:x,onChange:he=>k(he.target.value),placeholder:"At least 8 characters"})]}),c.jsxs("label",{className:"block space-y-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Confirm password"}),c.jsx("input",{className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",value:S,onChange:he=>C(he.target.value),placeholder:"Re-enter password"})]}),j?c.jsx("p",{className:"text-sm text-negative-400",children:j}):null,c.jsx(xe,{type:"submit",disabled:B||!x.trim()||!S.trim(),children:B?"Setting up…":"Create password & open dashboard"})]})})]}):c.jsxs(c.Fragment,{children:[c.jsxs(Qr,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),c.jsx(Zr,{children:"Sign in to Canonry"}),c.jsx(cu,{children:"Enter your dashboard password to continue."})]}),c.jsxs(ho,{children:[U?c.jsx("p",{className:"mb-4 rounded-md border border-caution bg-caution-soft px-3 py-2 text-sm text-caution",children:"Your session expired — please sign in again."}):null,c.jsxs("form",{className:"space-y-4",onSubmit:$t(J),children:[c.jsxs("label",{className:"block space-y-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),c.jsx("input",{autoFocus:!0,className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",value:x,onChange:he=>k(he.target.value),placeholder:"Dashboard password"})]}),j?c.jsx("p",{className:"text-sm text-negative-400",children:j}):null,c.jsx(xe,{type:"submit",disabled:B||!x.trim(),children:B?"Signing in…":"Open dashboard"})]})]})]})})]})})}const X3=document.getElementById("root");if(!X3)throw new Error("Expected #root element for web app bootstrap.");Gj.createRoot(X3).render(c.jsx(D.StrictMode,{children:c.jsx($U,{})}));export{YH as $,zG as A,xe as B,su as C,LH as D,$H as E,GH as F,N$ as G,IG as H,Vr as I,PG as J,YG as K,Yt as L,VK as M,QH as N,ZH as O,$I as P,$G as Q,FH as R,Wq as S,ga as T,HG as U,LG as V,GG as W,HH as X,KH as Y,UH as Z,VG as _,PK as a,OH as a$,nK as a0,WH as a1,tK as a2,eK as a3,aK as a4,BA as a5,wh as a6,Te as a7,JH as a8,v3 as a9,fH as aA,Z$ as aB,F$ as aC,kK as aD,wK as aE,SK as aF,KG as aG,Ai as aH,QG as aI,xh as aJ,fK as aK,jM as aL,xH as aM,al as aN,wH as aO,zH as aP,PH as aQ,NH as aR,qH as aS,VH as aT,jH as aU,EH as aV,TH as aW,RH as aX,SH as aY,DH as aZ,AH as a_,In as aa,XH as ab,KK as ac,yT as ad,bT as ae,D$ as af,z$ as ag,g$ as ah,w$ as ai,S$ as aj,oa as ak,j$ as al,xG as am,eM as an,ZP as ao,Zc as ap,A$ as aq,Op as ar,gK as as,q_ as at,UG as au,_$ as av,dM as aw,DM as ax,hH as ay,gH as az,jz as b,yH as b$,CH as b0,BH as b1,_H as b2,MH as b3,IH as b4,jL as b5,de as b6,yG as b7,gG as b8,fG as b9,$$ as bA,H$ as bB,P$ as bC,U$ as bD,NG as bE,CG as bF,AG as bG,s$ as bH,EG as bI,aH as bJ,Jb as bK,tH as bL,TG as bM,RG as bN,eH as bO,OG as bP,BG as bQ,MG as bR,qG as bS,pl as bT,gs as bU,OV as bV,sx as bW,iH as bX,sH as bY,$K as bZ,_L as b_,hG as ba,dG as bb,uG as bc,pG as bd,mG as be,cG as bf,lG as bg,tG as bh,aG as bi,rG as bj,oG as bk,sG as bl,nG as bm,iG as bn,eG as bo,WU as bp,JU as bq,XU as br,h4 as bs,V$ as bt,hK as bu,I$ as bv,i$ as bw,HK as bx,G$ as by,L$ as bz,IK as c,fh as c$,kH as c0,oH as c1,lH as c2,uH as c3,rH as c4,sa as c5,gA as c6,sM as c7,wG as c8,SG as c9,cA,bG as cB,vG as cC,DG as cD,ZG as cE,FG as cF,Th as cG,Iu as cH,Ch as cI,n$ as cJ,No as cK,ev as cL,h$ as cM,y$ as cN,v$ as cO,x$ as cP,f$ as cQ,b$ as cR,k$ as cS,HI as cT,M3 as cU,YI as cV,P3 as cW,I3 as cX,p$ as cY,vK as cZ,Q$ as c_,kG as ca,bA as cb,jG as cc,uM as cd,_G as ce,iK as cf,DA as cg,t$ as ch,oK as ci,rK as cj,lK as ck,sK as cl,X$ as cm,XG as cn,JG as co,WG as cp,a$ as cq,e$ as cr,vo as cs,kh as ct,LK as cu,Pu as cv,Ah as cw,bH as cx,vH as cy,AA as cz,_a as d,nH as d0,yK as d1,xK as d2,m$ as d3,K$ as d4,u$ as d5,d$ as d6,c$ as d7,bK as d8,h9 as d9,B$ as dA,TK as dB,tR as dC,M$ as dD,q$ as dE,dH as da,cH as db,pH as dc,mH as dd,R$ as de,Ln as df,Ua as dg,T$ as dh,jK as di,CK as dj,AK as dk,zL as dl,O$ as dm,BK as dn,qK as dp,MK as dq,NK as dr,_K as ds,E$ as dt,EK as du,OK as dv,DK as dw,RK as dx,zK as dy,_o as dz,fa as e,$t as f,C$ as g,dv as h,sA as i,cK as j,se as k,uK as l,dK as m,pK as n,mK as o,o$ as p,l$ as q,r$ as r,UK as s,aM as t,Nh as u,GK as v,s0 as w,J$ as x,Y$ as y,W$ as z};
|
|
83
|
+
competitor2.com`,value:Xt,onChange:F=>tn(F.target.value)})]}),yl?c.jsx("p",{className:"text-negative-400 text-sm",children:yl}):null,c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:mt,children:"Back"}),c.jsxs("div",{className:"flex gap-2",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:fn,children:"Skip"}),c.jsx(xe,{type:"button",disabled:Dt.length===0||qi,onClick:$t(Zn),children:qi?"Saving...":`Save ${Dt.length} competitor${Dt.length!==1?"s":""}`})]})]})]})]});case 4:{const F=an.data,qe=F?.status??(Ii===M?.id?M.status:void 0),gn=qe==="completed"||qe==="partial"||qe==="failed"||qe==="cancelled",Yn=F?.snapshots??[],Cs=Yn.filter(nn=>nn.citationState==="cited").length,Ns=Yn.filter(nn=>nn.answerMentioned===!0).length,Ea=new Set(Yn.map(nn=>nn.query).filter(nn=>!!nn)).size,aa=qe?_v(qe,Yn.length):!1,Ko=J&&!$a,Hu=Pi??(F?.error?eM(F.error):qe==="cancelled"?"The sweep was cancelled before it produced a baseline.":(qe==="completed"||qe==="partial")&&Yn.length===0?"The sweep finished without producing any snapshots. Confirm the query set and provider configuration, then retry.":M?.statusDetail||"The sweep did not produce a baseline. Review provider configuration, then retry.");let yn=null;return Ko||aa?yn=c.jsx(ga,{tone:"positive",children:"Complete"}):Pi&&!$a?yn=c.jsx(ga,{tone:"negative",children:"Failed"}):gn?yn=c.jsx(ga,{tone:"negative",children:qe==="cancelled"?"Cancelled":"Failed"}):$a&&(yn=c.jsx(ga,{tone:"caution",children:"Running"})),c.jsxs(_a,{className:"surface-card step-card",children:[c.jsxs("div",{className:"section-head",children:[c.jsxs("div",{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Step 5 of 5"}),c.jsx("h2",{children:"Launch first run"})]}),yn]}),Ko?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"text-secondary",children:["Setup is complete. ",c.jsx("span",{className:"text-strong font-medium",children:Ne})," already has a successful answer-visibility baseline."]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(xe,{type:"button",onClick:Ct,children:g?"Finish and open project":"Open project dashboard →"})]})]}):$a?gn?aa?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"text-neutral",children:["Sweep complete. Your first answer-visibility snapshot for"," ",c.jsx("span",{className:"text-heading font-medium",children:Ne}),":"]}),c.jsxs("div",{className:"grid grid-cols-3 gap-2 mt-1",children:[c.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[c.jsx("p",{className:"text-xs font-medium text-secondary",children:"Mentioned"}),c.jsxs("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:[Ns,c.jsxs("span",{className:"text-faint text-lg",children:[" / ",Ea]})]}),c.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries naming your brand"})]}),c.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[c.jsx("p",{className:"text-xs font-medium text-secondary",children:"Cited"}),c.jsxs("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:[Cs,c.jsxs("span",{className:"text-faint text-lg",children:[" / ",Ea]})]}),c.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"queries citing your site"})]}),c.jsxs("div",{className:"rounded-md border border-default bg-surface p-3",children:[c.jsx("p",{className:"text-xs font-medium text-secondary",children:"Results"}),c.jsx("p",{className:"text-2xl font-bold tabular-nums text-primary mt-1",children:Yn.length}),c.jsx("p",{className:"mt-0.5 text-sm text-secondary",children:"completed engine checks"})]})]}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:g?"Your project is ready. Review the evidence in the project.":"Open the project to review the evidence."}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(xe,{type:"button",onClick:Ct,children:g?"Finish and open project":"Open project dashboard →"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[c.jsx("p",{children:Hu}),c.jsx("p",{className:"mt-1 text-xs text-secondary",children:"Fix provider or query configuration if needed, then retry without leaving setup."})]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",asChild:!0,children:c.jsx(et,{to:"/settings",children:"Configure providers"})}),c.jsx(xe,{type:"button",disabled:mn||!!Ha,onClick:$t(hn),children:mn?"Retrying...":"Retry visibility sweep"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsx("p",{className:"text-neutral",children:"Sweep running. This usually takes 30 to 60 seconds."}),c.jsx("div",{className:"rounded-md border border-default bg-surface p-3 text-xs text-muted",children:c.jsxs("p",{children:["Status: ",c.jsx("span",{className:"text-neutral",children:qe??"queued"})]})}),an.isError&&c.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[c.jsx("p",{children:an.error instanceof Error?an.error.message:"Could not refresh the sweep status."}),c.jsx(xe,{type:"button",variant:"outline",size:"sm",className:"mt-2",onClick:()=>{an.refetch()},children:"Retry status check"})]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(xe,{type:"button",variant:"outline",onClick:Ct,children:g?"Finish and open project":"Watch on project page"})]})]}):c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"supporting-copy",children:["Setup is done. You can run a first sweep now to get a baseline for"," ",c.jsx("span",{className:"text-heading font-medium",children:Ne}),", or finish and run it later from the project. A sweep calls the answer engines, so it costs provider usage."]}),(Ha||Pi)&&c.jsxs("div",{role:"alert",className:"rounded-md border border-negative bg-negative-soft p-3 text-sm text-negative",children:[c.jsx("p",{children:Pi??Ha}),c.jsx("p",{className:"mt-1 text-xs text-secondary",children:"Resolve the blocker above, then retry the sweep here."})]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(xe,{type:"button",variant:"outline",onClick:mt,children:"Back"}),c.jsx(xe,{type:"button",variant:"ghost",onClick:Ct,children:"Finish without running"}),c.jsx(xe,{type:"button",disabled:mn||!!Ha,title:Ha,onClick:$t(hn),children:mn?"Launching...":Pi?"Retry visibility sweep":"Launch visibility sweep"})]})]})]})}default:return null}})();return c.jsxs("div",{className:"page-container",children:[g?c.jsx(_o,{current:"visibility"}):null,c.jsxs("div",{className:"page-header",children:[c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{ref:u?f:void 0,tabIndex:u?-1:void 0,className:"page-title",children:u?"Set up AI Visibility":"Setup"}),c.jsx("p",{className:"page-subtitle",children:u?"Choose what to track, then run your first visibility sweep.":"Create a project and run its first visibility check."})]}),g?c.jsx("div",{className:"page-header-right",children:c.jsx(xe,{type:"button",variant:"outline",onClick:Ct,children:"Skip AI Visibility"})}):null]}),c.jsx(IL,{current:Oe,labels:ML}),c.jsx("section",{className:"setup-wizard",children:Fn})]})}const GL=D.lazy(async()=>({default:(await Ln(()=>import("./SiteHealthSection-Cyu7MIv2.js").then(n=>n.d),__vite__mapDeps([0,1,2,3,4]),import.meta.url)).SiteHealthSection})),$L=1800,HL="https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent",KL="Help me set up Canonry for my public site.\n\nUse Canonry's official docs:\n- Agent quickstart: https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent\n- CLI reference: https://github.com/Canonry/canonry/blob/main/skills/canonry/references/canonry-cli.md\n- Plugin setup: https://github.com/Canonry/canonry/blob/main/docs/plugins.md\n- MCP setup: https://github.com/Canonry/canonry/blob/main/docs/mcp.md\n\nUse an existing Canonry installation or connected plugin/MCP if one is already available. Do not create a duplicate. The `cnry` and `canonry` commands are interchangeable.\n\n1. Ask for my public domain, country, and language. Do not create or scan anything yet.\n2. Check the local setup with `command -v cnry`, `cnry --version`, `cnry doctor --format json`, and `cnry project list --format json`. If Canonry is missing, propose `npm install -g @canonry/canonry` and wait for approval. If initialization is required, tell me to run `cnry init` in my private terminal and wait. Never ask me to paste passwords, API keys, OAuth credentials, or `cnry init` output.\n3. Show the normalized domain, proposed project name, exact `cnry project create ...` command, and wait for explicit approval before creating it.\n4. Propose a bounded Site Health scan, including `--max-pages` and whether dead-link checking is enabled. Show the exact `cnry technical-aeo run ... --wait --format json` command and wait for separate approval before scanning.\n5. After the crawl, summarize the findings and propose AI Visibility setup. Ask before adding queries, connecting providers, starting any provider-backed or quota-consuming run, editing files, or publishing.";function QL(e,n){return e==="legacy"?"legacy":e==="platform"?"platform":n.state==="success"?n.projectCount===0?"platform":"legacy":n.state==="error"?"retry":"loading"}function ZL(e,n){try{const s=new Intl.DisplayNames(["en"],{type:"region"}),r=new Intl.DisplayNames(["en"],{type:"language"}),u=e.length===2?s.of(e.toUpperCase()):void 0,f=n?r.of(n.toLowerCase()):void 0;return`${u??(e||"Country")} · ${f??(n||"Language")}`}catch{return`${e||"Country"} · ${n||"Language"}`}}function FL(e){const n=e.replace(/^\[|\]$/g,"");return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(n)||n.includes(":")}function YL(e){const n=e.trim();if(!n)return null;const s=/^[a-z][a-z\d+.-]*:\/\//i.test(n)?n:`https://${n}`;let r;try{r=new URL(s)}catch{return null}if(r.protocol!=="http:"&&r.protocol!=="https:")return null;const u=r.hostname.toLowerCase().replace(/^www\./,"");if(!u||u==="localhost"||FL(u)||!u.includes("."))return null;const f=u.replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return f?{canonicalDomain:u,projectName:f,displayName:u}:null}async function XL(e,n=$L){let s;const r=new Promise(f=>{s=setTimeout(()=>f({state:"timed-out"}),n)}),u=await Promise.race([e.then(f=>({state:"queued",run:f})),r]);return s&&clearTimeout(s),u}function JL(e,n){e.catch(()=>{Yt({title:"Site Health scan did not start",detail:"The project is safe. Choose Run scan in Site Health to retry.",tone:"negative",dedupeKey:`site-health-dispatch:${n}`})})}function Dv(e,n){return e instanceof oa&&e.statusCode===409?"A project with this name already exists. Change the project name, or open the existing project.":e instanceof Error&&e.message?e.message:n}function WL(){return c.jsxs("div",{className:"page-container max-w-3xl","aria-busy":"true","aria-live":"polite",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Preparing setup"}),c.jsx("p",{className:"page-subtitle",children:"Checking the projects already on this install."})]})}),c.jsxs("div",{className:"flex items-center gap-3 rounded-lg border border-default bg-surface p-4 text-sm text-secondary",role:"status",children:[c.jsx(bo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading projects…"]})]})}function eU({onRetry:e}){return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Can’t load projects"}),c.jsx("p",{className:"page-subtitle",children:"Canonry could not confirm whether this install already has a project."})]})}),c.jsxs("div",{className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",tabIndex:-1,children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:"Setup is paused to protect existing projects."}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),c.jsx(xe,{type:"button",className:"mt-4",variant:"secondary",onClick:e,children:"Retry project check"})]})]})}function tU({projectName:e,initialRunId:n}){return c.jsx(Th,{title:"Site Health setup",children:c.jsx(aU,{projectName:e,initialRunId:n})})}function aU({projectName:e,initialRunId:n}){const s=ms(),r=Ft({...gs({client:se}),enabled:!!e,retry:!1,refetchOnMount:"always"});if(!e)return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Project not found"}),c.jsx("p",{className:"page-subtitle",children:"This setup link does not identify a project."})]})}),c.jsx(xe,{type:"button",variant:"secondary",onClick:()=>{s({to:"/projects"})},children:"View projects"})]});if(r.isPending)return c.jsxs("div",{className:"page-container max-w-3xl","aria-busy":"true","aria-live":"polite",children:[c.jsx(_o,{current:"site"}),c.jsxs("div",{className:"mt-8 flex items-center gap-3 text-sm text-secondary",role:"status",children:[c.jsx(bo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health setup…"]})]});if(r.isError)return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Can’t resume setup"}),c.jsx("p",{className:"page-subtitle",children:"Canonry could not load the project for this Site Health scan."})]})}),c.jsxs("div",{className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",children:[c.jsx("p",{className:"text-sm text-secondary",children:"Check the connection or sign in again, then retry."}),c.jsx(xe,{type:"button",className:"mt-4",variant:"secondary",onClick:()=>{r.refetch()},children:"Retry project check"})]})]});const u=r.data.find(x=>x.name===e);if(!u)return c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx("div",{className:"page-header",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Project not found"}),c.jsxs("p",{className:"page-subtitle",children:["Canonry could not find ",e,". It will not open a different project."]})]})}),c.jsx(xe,{type:"button",variant:"secondary",onClick:()=>{s({to:"/projects"})},children:"View projects"})]});const f=()=>{s({to:"/setup",search:{onboarding:"site-health",setupProject:u.name},replace:!0})},g=()=>{s({to:"/setup",search:{experience:"legacy",onboarding:"site-health",setupProject:u.name},replace:!0})},b=()=>{s({to:"/projects/$projectName",params:{projectName:u.name},replace:!0})};return c.jsxs("div",{className:"page-container max-w-7xl py-8 md:py-10",children:[c.jsx("h1",{className:"sr-only",children:"Set up Canonry"}),c.jsx(D.Suspense,{fallback:c.jsxs("div",{className:"space-y-5",children:[c.jsx(_o,{current:"site"}),c.jsxs("div",{className:"flex min-h-72 items-center justify-center gap-3 text-sm text-secondary",role:"status",children:[c.jsx(bo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health…"]})]}),children:c.jsx(GL,{projectName:u.name,projectId:u.id,initialRunId:n,onReleaseInitialRun:f,showOnboardingActions:!0,onContinueOnboarding:g,onSkipOnboarding:b})})]})}function nU(){const e=Tv({from:"/setup"}),n=e.onboarding==="site-health"&&!e.setupProject,s=e.onboarding==="site-health"&&e.experience!=="legacy",r=W6(),u=e.experience==="legacy"?"legacy":r,[f,g]=D.useState(!1),b=Ft({...gs({client:se}),enabled:u==="auto",retry:!1,refetchOnMount:"always"}),x=u==="auto"&&b.isSuccess&&b.isFetchedAfterMount&&b.data.length===0;D.useEffect(()=>{x&&g(!0)},[x]);const k=u!=="auto"?{state:"idle"}:b.isSuccess&&b.isFetchedAfterMount?{state:"success",projectCount:b.data.length}:b.isError?{state:"error"}:{state:"loading"},S=u==="legacy"?"legacy":f||x?"platform":QL(u,k);return n||s?c.jsx(tU,{projectName:e.setupProject,initialRunId:e.siteHealthRunId}):S==="legacy"?c.jsx(VL,{visibilityProjectName:e.setupProject,siteHealthOnboarding:e.onboarding==="site-health"}):S==="loading"?c.jsx(WL,{}):S==="retry"?c.jsx(eU,{onRetry:()=>{b.refetch()}}):c.jsx(iU,{onActivationStarted:()=>g(!0)})}function iU({onActivationStarted:e}){return c.jsx(Th,{title:"Site Health setup",children:c.jsx(sU,{onActivationStarted:e})})}function sU({onActivationStarted:e}){const n=ms(),s=Vn(),r=zL(),[u,f]=D.useState(""),[g,b]=D.useState(""),[x,k]=D.useState(""),[S,C]=D.useState("US"),[j,E]=D.useState("en"),[B,q]=D.useState(!1),[U,G]=D.useState("idle"),[te,X]=D.useState(null),[ae,oe]=D.useState(null),[ge,M]=D.useState(!1),[J,_e]=D.useState(null),[he,we]=D.useState(!1),Oe=D.useRef(null),je=YL(u),Fe=g||je?.projectName||"",ye=x||je?.displayName||"",V=U==="creating"||U==="dispatching",ne=ae??J,fe=ZL(S,j);D.useEffect(()=>{ne&&Oe.current?.focus()},[ne]);const De=(re,W)=>n({to:"/setup",search:{...W?{siteHealthRunId:W}:{},onboarding:"site-health",setupProject:re.name},replace:!0}),le=async re=>{G("dispatching"),_e(null);try{const W=r.mutateAsync({projectName:re.name,projectId:re.id,projectLabel:re.displayName||re.name,suppressErrorToast:!0,body:{checkDeadLinks:!0}}),Z=await XL(W);if(Z.state==="queued"){await De(re,Z.run.runId);return}JL(W,re.id),await De(re)}catch(W){G("recovery"),_e(Dv(W,"The project was created, but the Site Health scan could not be started."))}},at=async re=>{if(re.preventDefault(),!(!je||!B||V)){G("creating"),oe(null),M(!1),_e(null);try{const W=await ux({name:Fe,displayName:ye,canonicalDomain:je.canonicalDomain,country:S,language:j});e(),X(W),await s.invalidateQueries({queryKey:Ai({client:se})}),await le(W)}catch(W){G("idle");const Z=W instanceof oa&&W.statusCode===409;M(Z),oe(Dv(W,"Could not create the project. Try again.")),Z&&(e(),s.invalidateQueries({queryKey:Ai({client:se})}))}}},H=()=>{te&&!V&&le(te)},ue=()=>{V||n({to:"/projects"})},ie=async()=>{try{await navigator.clipboard.writeText(KL),we(!0)}catch{Yt({tone:"negative",title:"Could not copy setup request",detail:"Open the agent quickstart to continue with the CLI instead."})}};return te&&U==="recovery"?c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx(_o,{current:"site"}),c.jsx("div",{className:"page-header mt-8",children:c.jsxs("div",{className:"page-header-left",children:[c.jsx("h1",{className:"page-title",children:"Project created"}),c.jsxs("p",{className:"page-subtitle",children:[te.displayName||te.name," is ready. The Site Health scan needs another try."]})]})}),c.jsxs("div",{ref:Oe,className:"rounded-lg border border-negative bg-negative-soft p-4",role:"alert",tabIndex:-1,children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:J}),c.jsx("p",{className:"mt-1 text-sm text-secondary",children:"You can retry the scan or continue setup and retry from Site Health."}),c.jsxs("div",{className:"mt-4 flex flex-wrap gap-3",children:[c.jsx(xe,{type:"button",onClick:H,children:"Retry Site Health scan"}),c.jsx(xe,{type:"button",variant:"secondary",onClick:()=>{De(te)},children:"Continue setup"})]})]})]}):c.jsxs("div",{className:"page-container max-w-xl py-8 md:py-12",children:[c.jsx(_o,{current:"site"}),c.jsxs("header",{className:"mb-8 mt-8",children:[c.jsx("h1",{id:"site-map-setup-title",className:"text-2xl font-semibold tracking-[-0.025em] text-heading",children:"Map your site"}),c.jsx("p",{className:"mt-2 max-w-lg text-sm leading-6 text-secondary",children:"Enter your public website to see its pages, structure, and internal links."})]}),c.jsxs("form",{"aria-labelledby":"site-map-setup-title",className:"space-y-6",onSubmit:$t(at),noValidate:!0,children:[c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm font-medium text-heading",htmlFor:"launchpad-domain",children:"Website URL"}),c.jsx("input",{id:"launchpad-domain",className:"h-11 w-full rounded-md border border-strong bg-bg-elevated/50 px-3 text-base text-heading outline-none transition placeholder:text-muted focus:border-mono-500 focus:ring-1 focus:ring-mono-500",type:"text",inputMode:"url",autoComplete:"url",autoCapitalize:"none",spellCheck:!1,required:!0,"aria-invalid":!!(u&&!je),"aria-describedby":u&&!je?"launchpad-domain-hint launchpad-domain-error":"launchpad-domain-hint",placeholder:"https://example.com",value:u,onChange:re=>{f(re.target.value),oe(null),M(!1)}}),c.jsxs("p",{id:"launchpad-domain-hint",className:"text-sm text-secondary",children:["Only public pages are scanned."," ",c.jsx(et,{to:"/setup",search:{experience:"legacy"},className:"font-medium text-link underline-offset-4 hover:underline",children:"Set up without a site scan"})]}),u&&!je?c.jsx("p",{id:"launchpad-domain-error",className:"text-sm text-negative",role:"alert",children:"Enter a public domain, such as example.com."}):null]}),c.jsxs("details",{className:"group border-y border-default",children:[c.jsxs("summary",{className:"flex min-h-11 cursor-pointer list-none items-center justify-between gap-4 py-3 text-sm [&::-webkit-details-marker]:hidden",children:[c.jsx("span",{className:"font-medium text-heading",children:"Advanced settings"}),c.jsxs("span",{className:"flex items-center gap-2 text-secondary",children:[fe,c.jsx(u0,{className:"size-4 transition-transform group-open:rotate-180 motion-reduce:transition-none","aria-hidden":"true"})]})]}),c.jsxs("div",{className:"space-y-5 border-t border-default py-4",children:[je?c.jsxs("div",{children:[c.jsx("p",{className:"mb-3 text-sm font-medium text-heading",children:"Project"}),c.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-project-name",children:"Project name"}),c.jsx("input",{id:"launchpad-project-name",className:"setup-input h-10",type:"text",value:Fe,onChange:re=>b(re.target.value)})]}),c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-display-name",children:"Display name"}),c.jsx("input",{id:"launchpad-display-name",className:"setup-input h-10",type:"text",value:ye,onChange:re=>k(re.target.value)})]})]})]}):null,c.jsxs("div",{children:[c.jsx("p",{className:"mb-3 text-sm font-medium text-heading",children:"Locale"}),c.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-country",children:"Country"}),c.jsx("input",{id:"launchpad-country",className:"setup-input h-10",type:"text",maxLength:2,value:S,onChange:re=>C(re.target.value.toUpperCase())})]}),c.jsxs("div",{className:"grid gap-2",children:[c.jsx("label",{className:"text-sm text-secondary",htmlFor:"launchpad-language",children:"Language"}),c.jsx("input",{id:"launchpad-language",className:"setup-input h-10",type:"text",maxLength:5,value:j,onChange:re=>E(re.target.value.toLowerCase())})]})]})]})]})]}),c.jsxs("label",{className:"flex min-h-11 cursor-pointer items-start gap-3 py-2",children:[c.jsx("input",{className:"mt-0.5 size-4 shrink-0 rounded border-strong bg-bg",type:"checkbox",checked:B,onChange:re=>q(re.target.checked),"aria-label":"Allow Canonry to scan this public site.","aria-describedby":"local-crawl-note"}),c.jsxs("span",{className:"grid gap-0.5",children:[c.jsx("span",{className:"text-sm leading-5 text-heading",children:"Allow Canonry to scan this public site."}),c.jsx("span",{id:"local-crawl-note",className:"text-sm leading-5 text-secondary",children:"The crawl runs on this Canonry instance, follows internal links, and stores its results locally."})]})]}),ne?c.jsxs("div",{ref:Oe,className:"rounded-md border border-negative bg-negative-soft p-3",role:"alert",tabIndex:-1,children:[c.jsx("p",{className:"text-sm font-medium text-heading",children:ne}),ge?c.jsx(xe,{type:"button",variant:"secondary",size:"sm",className:"mt-3",onClick:ue,children:"View projects"}):null]}):null,c.jsxs("div",{className:"grid gap-2",children:[c.jsx(xe,{className:"h-11 w-full",type:"submit",disabled:!je||!B||V,children:U==="creating"||U==="dispatching"?c.jsxs(c.Fragment,{children:[c.jsx(bo,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"})," Mapping site…"]}):"Map site"}),c.jsx(xe,{className:"w-full",type:"button",variant:"ghost",disabled:V,onClick:ue,children:"Cancel"}),U==="dispatching"?c.jsx("span",{className:"text-center text-sm text-secondary",role:"status",children:"Opening Site Health when the scan is ready."}):null]})]}),c.jsxs("section",{className:"mt-8 border-t border-default pt-6","aria-labelledby":"agent-setup-title",children:[c.jsx("p",{id:"agent-setup-title",className:"text-sm font-medium text-heading",children:"Use your agent instead"}),c.jsx("p",{className:"mt-1 text-sm leading-5 text-secondary",children:"Copy a complete CLI setup request into any coding agent."}),c.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-1",children:[c.jsxs(xe,{type:"button",variant:"ghost",size:"sm",className:"-ml-3",onClick:$t(ie),children:[he?c.jsx(d0,{className:"size-3.5","aria-hidden":"true"}):c.jsx(Uv,{className:"size-3.5","aria-hidden":"true"}),c.jsx("span",{"aria-live":"polite",children:he?"Copied setup request":"Copy setup request"})]}),c.jsx(xe,{asChild:!0,variant:"ghost",size:"sm",children:c.jsxs("a",{href:HL,target:"_blank",rel:"noopener noreferrer",children:["Agent quickstart",c.jsx(qj,{className:"size-3.5","aria-hidden":"true"}),c.jsx("span",{className:"sr-only",children:" (opens in a new tab)"})]})})]})]})]})}function oU(){return c.jsx("div",{className:"page-container",children:c.jsx("section",{className:"page-section",children:c.jsxs(_a,{className:"surface-card empty-card",children:[c.jsx("h1",{children:"Route not found"}),c.jsx("p",{children:"The current path does not map to a dashboard view."}),c.jsx(xe,{asChild:!0,children:c.jsx(et,{to:"/",children:"Return to overview"})})]})})})}const Ga=Ci(()=>Ln(()=>import("./ProjectPage-CPmaXzhL.js"),__vite__mapDeps([5,1,6,0,2,3,4,7,8,9,10,11,12]),import.meta.url),"ProjectPage"),rU=Ci(()=>Ln(()=>import("./RunsPage-ya8vTkyd.js"),__vite__mapDeps([13,1,6,10,4,2,11,12]),import.meta.url),"RunsPage"),lU=Ci(()=>Ln(()=>import("./HistoryPage-D9IxxbQ9.js"),__vite__mapDeps([14,1,8,10,4,2,11,12]),import.meta.url),"HistoryPage"),cU=Ci(()=>Ln(()=>import("./SettingsPage-lTy3o2bo.js"),__vite__mapDeps([15,1,10,4,2,11,12]),import.meta.url),"SettingsPage"),uU=Ci(()=>Ln(()=>import("./BacklinksPage-CB2uJWWy.js"),__vite__mapDeps([16,1,2,10,4,11,12]),import.meta.url),"BacklinksPage"),dU=Ci(()=>Ln(()=>import("./TrafficPage-DjhKfw57.js"),__vite__mapDeps([17,1,7,2,10,4,11,12]),import.meta.url),"TrafficPage"),mU=Ci(()=>Ln(()=>import("./TrafficSourceDetailPage-Pwi-Dl9Q.js"),__vite__mapDeps([18,1,7,3,4,2,10,11,12]),import.meta.url),"TrafficSourceDetailPage"),pU=Ci(()=>Ln(()=>import("./MeasurementPropertyPage-CxgnnPdp.js"),__vite__mapDeps([19,1,3,4,9,2,10,11,12]),import.meta.url),"MeasurementPropertyPage");function hU(){return c.jsx(fL,{children:c.jsx(hL,{})})}const ra=dj()({component:hU,validateSearch:e=>({manageQueries:e.manageQueries===!0||e.manageQueries==="true"?!0:void 0,runId:typeof e.runId=="string"?e.runId:void 0,siteHealthRunId:typeof e.siteHealthRunId=="string"?e.siteHealthRunId:void 0,evidenceId:typeof e.evidenceId=="string"?e.evidenceId:void 0,runStatus:typeof e.runStatus=="string"?e.runStatus:void 0,runKind:typeof e.runKind=="string"?e.runKind:void 0,runProject:typeof e.runProject=="string"?e.runProject:void 0,runWindow:typeof e.runWindow=="string"?e.runWindow:void 0,runQuery:typeof e.runQuery=="string"?e.runQuery:void 0,onboarding:e.onboarding==="site-health"?"site-health":void 0,experience:e.experience==="legacy"?"legacy":void 0,setupProject:typeof e.setupProject=="string"?e.setupProject:void 0,scope:typeof e.scope=="string"?e.scope:void 0,class:typeof e.class=="string"?e.class:void 0})}),fU=xt({getParentRoute:()=>ra,path:"/",component:xL,beforeLoad:async({context:e})=>{let n=e.queryClient.getQueryData(Ai({client:se}));if(n===void 0)try{n=await e.queryClient.ensureQueryData(gs({client:se}))}catch{return}if(n.length===0)throw Ov({to:"/setup"})}}),gU=xt({getParentRoute:()=>ra,path:"/projects",component:wL}),yU=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,va=xt({getParentRoute:()=>ra,path:"/projects/$projectName",component:()=>c.jsx(zp,{}),beforeLoad:async({context:e,params:n,location:s})=>{const r=n.projectName;if(!yU.test(r))return;let u=e.queryClient.getQueryData(Ai({client:se}));if(!u)try{u=await e.queryClient.ensureQueryData(gs({client:se}))}catch{return}const f=u.find(g=>g.id===r);if(f)throw Ov({to:s.pathname.replace(`/projects/${r}`,`/projects/${encodeURIComponent(f.name)}`),replace:!0})}}),bU=xt({getParentRoute:()=>va,path:"/",component:()=>c.jsx(Ga,{tab:"overview"})}),vU=xt({getParentRoute:()=>va,path:"/portfolio",component:()=>c.jsx(Ga,{tab:"portfolio"})}),xU=xt({getParentRoute:()=>va,path:"/search-console",component:()=>c.jsx(Ga,{tab:"search-console"})}),kU=xt({getParentRoute:()=>va,path:"/conversions",component:()=>c.jsx(Ga,{tab:"conversions"})}),wU=xt({getParentRoute:()=>va,path:"/local",component:()=>c.jsx(Ga,{tab:"local"})}),SU=xt({getParentRoute:()=>va,path:"/discovery",component:()=>c.jsx(Ga,{tab:"discovery"})}),jU=xt({getParentRoute:()=>va,path:"/properties/$targetKey",component:()=>c.jsx(pU,{})}),AU=xt({getParentRoute:()=>va,path:"/report",component:()=>c.jsx(Ga,{tab:"report"})}),CU=xt({getParentRoute:()=>va,path:"/activity",component:()=>c.jsx(Ga,{tab:"activity"})}),NU=xt({getParentRoute:()=>va,path:"/backlinks",component:()=>c.jsx(Ga,{tab:"backlinks"})}),_U=xt({getParentRoute:()=>va,path:"/technical-aeo",component:()=>c.jsx(Ga,{tab:"technical-aeo"})}),zU=xt({getParentRoute:()=>va,path:"/history",component:()=>c.jsx(Ga,{tab:"history"})}),DU=xt({getParentRoute:()=>va,path:"/settings",component:()=>c.jsx(Ga,{tab:"settings"})}),EU=xt({getParentRoute:()=>ra,path:"/runs",component:rU}),TU=xt({getParentRoute:()=>ra,path:"/history",component:lU}),RU=xt({getParentRoute:()=>ra,path:"/settings",component:cU,beforeLoad:({context:e})=>{}}),OU=xt({getParentRoute:()=>ra,path:"/setup",component:nU}),BU=xt({getParentRoute:()=>ra,path:"/backlinks",component:uU}),qU=xt({getParentRoute:()=>ra,path:"/traffic",component:dU}),MU=xt({getParentRoute:()=>ra,path:"/traffic/$projectName/$sourceId",component:mU}),PU=xt({getParentRoute:()=>ra,path:"*",component:oU}),IU=ra.addChildren([fU,gU,va.addChildren([bU,vU,xU,kU,wU,SU,jU,AU,CU,NU,_U,zU,DU]),EU,TU,RU,OU,BU,qU,MU,PU]);function VU(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const Ev=VU(),LU=Ev==="/"?"":Ev.replace(/\/$/,"");function UU(e,n){return mj({routeTree:IU,basepath:LU||"/",context:{queryClient:e},...n?.initialEntries})}const GU=6e4;function $U(){const[e,n]=D.useState(ap()?"ready":"checking"),[s,r]=D.useState(null),[u,f]=D.useState(!1),[g,b]=D.useState(""),[x,k]=D.useState(""),[S,C]=D.useState(""),[j,E]=D.useState(null),[B,q]=D.useState(!1),[U,G]=D.useState(!1),te=D.useRef(null),X=D.useRef(null),ae=D.useRef(null),oe=()=>{const he=s?`${s.name}:${s.role}`:"no-accounts";if(!te.current||ae.current!==he){X.current?.clear();const we=ZA();X.current=we,te.current=UU(we),ae.current=he}return{queryClient:X.current,router:te.current}},ge=he=>he.authRequired?(f(!0),r(he.user),n(he.user?"ready":"account-login"),!0):!1;D.useEffect(()=>{if(ap())return;let he=!1;return Promise.allSettled([Ny(),Cy()]).then(([we,Oe])=>{if(he||we.status==="fulfilled"&&ge(we.value))return;if(Oe.status==="rejected"){const Fe=Oe.reason;E(Fe instanceof Error?Fe.message:"Failed to reach the Canonry API"),n("login");return}const je=Oe.value;je.authenticated?n("ready"):n(je.setupRequired?"setup":"login")}),()=>{he=!0}},[]),D.useEffect(()=>{if(e!=="ready"||ap())return;const he=setInterval(()=>{if(u){Ny().then(we=>{we.authRequired&&!we.user&&(G(!0),r(null),n("account-login"))}).catch(()=>{});return}Cy().then(we=>{we.authenticated||(G(!0),n(we.setupRequired?"setup":"login"))}).catch(()=>{})},GU);return Ay(()=>{G(!0),r(null),n(u?"account-login":"login")}),()=>{clearInterval(he),Ay(null)}},[e,u]);const M=async he=>{if(he.preventDefault(),!x.trim()||x.trim().length<8){E("Password must be at least 8 characters");return}if(x!==S){E("Passwords do not match");return}q(!0),E(null);try{if(!(await wA(x.trim())).authenticated){E("Setup failed");return}k(""),C(""),G(!1),n("ready")}catch(we){E(we instanceof oa||we instanceof Error?we.message:"Setup failed")}finally{q(!1)}},J=async he=>{if(he.preventDefault(),!!x.trim()){q(!0),E(null);try{if(!(await SA(x.trim())).authenticated){E("Incorrect password");return}k(""),G(!1),n("ready")}catch(we){E(we instanceof oa||we instanceof Error?we.message:"Authentication failed")}finally{q(!1)}}},_e=async he=>{if(he.preventDefault(),!(!g.trim()||!x)){q(!0),E(null);try{const we=await jA(g.trim(),x);if(!we.user){E("Incorrect name or password.");return}k(""),G(!1),r(we.user),n("ready")}catch(we){E(we instanceof oa?we.message:"Incorrect name or password.")}finally{q(!1)}}};if(e==="ready"){const{queryClient:he,router:we}=oe();return c.jsx(PA,{account:s,children:c.jsx(pj,{client:he,children:c.jsx(hj,{router:we})})})}return c.jsx("div",{className:"min-h-screen bg-bg px-4 py-8",children:c.jsxs("div",{className:"mx-auto flex min-h-[calc(100vh-4rem)] max-w-md flex-col items-center justify-center gap-5",children:[c.jsxs("div",{"data-testid":"auth-brand",className:"flex items-center gap-2.5",children:[c.jsx("img",{className:"size-7",src:"./favicon.svg",alt:"","aria-hidden":"true"}),c.jsx("span",{className:"text-lg font-semibold tracking-tight text-heading",children:"Canonry"})]}),c.jsx(_a,{className:"surface-card w-full",children:e==="checking"?c.jsx(ho,{className:"py-8",children:c.jsx("p",{className:"supporting-copy text-center",children:"Connecting to Canonry…"})}):e==="account-login"?c.jsxs(c.Fragment,{children:[c.jsxs(Qr,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),c.jsx(Zr,{children:"Sign in to Canonry"})]}),c.jsxs(ho,{children:[U?c.jsx("p",{className:"mb-4 rounded-md border border-caution bg-caution-soft px-3 py-2 text-sm text-caution",children:"You were signed out — please sign in again."}):null,c.jsxs("form",{className:"space-y-4",onSubmit:$t(_e),children:[c.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-name",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Name"}),c.jsx("input",{autoFocus:!0,id:"account-name",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"text",autoComplete:"username",value:g,onChange:he=>b(he.target.value)})]}),c.jsxs("label",{className:"block space-y-1.5",htmlFor:"account-password",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),c.jsx("input",{id:"account-password",className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",autoComplete:"current-password",value:x,onChange:he=>k(he.target.value)})]}),j?c.jsx("p",{className:"text-sm text-negative-400",children:j}):null,c.jsx(xe,{type:"submit",disabled:B||!g.trim()||!x,children:B?"Signing in…":"Sign in"})]})]})]}):e==="setup"?c.jsxs(c.Fragment,{children:[c.jsxs(Qr,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),c.jsx(Zr,{children:"Create a dashboard password"}),c.jsx(cu,{children:"Choose a password to protect the Canonry dashboard."})]}),c.jsx(ho,{children:c.jsxs("form",{className:"space-y-4",onSubmit:$t(M),children:[c.jsxs("label",{className:"block space-y-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),c.jsx("input",{autoFocus:!0,className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",value:x,onChange:he=>k(he.target.value),placeholder:"At least 8 characters"})]}),c.jsxs("label",{className:"block space-y-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Confirm password"}),c.jsx("input",{className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",value:S,onChange:he=>C(he.target.value),placeholder:"Re-enter password"})]}),j?c.jsx("p",{className:"text-sm text-negative-400",children:j}):null,c.jsx(xe,{type:"submit",disabled:B||!x.trim()||!S.trim(),children:B?"Setting up…":"Create password & open dashboard"})]})})]}):c.jsxs(c.Fragment,{children:[c.jsxs(Qr,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),c.jsx(Zr,{children:"Sign in to Canonry"}),c.jsx(cu,{children:"Enter your dashboard password to continue."})]}),c.jsxs(ho,{children:[U?c.jsx("p",{className:"mb-4 rounded-md border border-caution bg-caution-soft px-3 py-2 text-sm text-caution",children:"Your session expired — please sign in again."}):null,c.jsxs("form",{className:"space-y-4",onSubmit:$t(J),children:[c.jsxs("label",{className:"block space-y-1.5",children:[c.jsx("span",{className:"text-xs font-medium text-secondary",children:"Password"}),c.jsx("input",{autoFocus:!0,className:"w-full rounded-md border border-base bg-bg px-3 py-2 text-sm text-heading outline-none transition focus:border-mono-600",type:"password",value:x,onChange:he=>k(he.target.value),placeholder:"Dashboard password"})]}),j?c.jsx("p",{className:"text-sm text-negative-400",children:j}):null,c.jsx(xe,{type:"submit",disabled:B||!x.trim(),children:B?"Signing in…":"Open dashboard"})]})]})]})})]})})}const X3=document.getElementById("root");if(!X3)throw new Error("Expected #root element for web app bootstrap.");Gj.createRoot(X3).render(c.jsx(D.StrictMode,{children:c.jsx($U,{})}));export{YH as $,zG as A,xe as B,su as C,LH as D,$H as E,GH as F,N$ as G,IG as H,Vr as I,PG as J,YG as K,Yt as L,VK as M,QH as N,ZH as O,$I as P,$G as Q,FH as R,Wq as S,ga as T,HG as U,LG as V,GG as W,HH as X,KH as Y,UH as Z,VG as _,PK as a,OH as a$,nK as a0,WH as a1,tK as a2,eK as a3,aK as a4,BA as a5,wh as a6,Te as a7,JH as a8,v3 as a9,fH as aA,Z$ as aB,F$ as aC,kK as aD,wK as aE,SK as aF,KG as aG,Ai as aH,QG as aI,xh as aJ,fK as aK,jM as aL,xH as aM,al as aN,wH as aO,zH as aP,PH as aQ,NH as aR,qH as aS,VH as aT,jH as aU,EH as aV,TH as aW,RH as aX,SH as aY,DH as aZ,AH as a_,In as aa,XH as ab,KK as ac,yT as ad,bT as ae,D$ as af,z$ as ag,g$ as ah,w$ as ai,S$ as aj,oa as ak,j$ as al,xG as am,eM as an,ZP as ao,Zc as ap,A$ as aq,Op as ar,gK as as,q_ as at,UG as au,_$ as av,dM as aw,DM as ax,hH as ay,gH as az,jz as b,yH as b$,CH as b0,BH as b1,_H as b2,MH as b3,IH as b4,jL as b5,de as b6,yG as b7,gG as b8,fG as b9,$$ as bA,H$ as bB,P$ as bC,U$ as bD,NG as bE,CG as bF,AG as bG,s$ as bH,EG as bI,aH as bJ,Jb as bK,tH as bL,TG as bM,RG as bN,eH as bO,OG as bP,BG as bQ,MG as bR,qG as bS,pl as bT,gs as bU,OV as bV,sx as bW,iH as bX,sH as bY,$K as bZ,_L as b_,hG as ba,dG as bb,uG as bc,pG as bd,mG as be,cG as bf,lG as bg,tG as bh,aG as bi,rG as bj,oG as bk,sG as bl,nG as bm,iG as bn,eG as bo,WU as bp,JU as bq,XU as br,h4 as bs,V$ as bt,hK as bu,I$ as bv,i$ as bw,HK as bx,G$ as by,L$ as bz,IK as c,fh as c$,kH as c0,oH as c1,lH as c2,uH as c3,rH as c4,sa as c5,gA as c6,sM as c7,wG as c8,SG as c9,cA,bG as cB,vG as cC,DG as cD,ZG as cE,FG as cF,Th as cG,Iu as cH,Ch as cI,n$ as cJ,No as cK,ev as cL,h$ as cM,y$ as cN,v$ as cO,x$ as cP,f$ as cQ,b$ as cR,k$ as cS,HI as cT,M3 as cU,YI as cV,P3 as cW,I3 as cX,p$ as cY,vK as cZ,Q$ as c_,kG as ca,bA as cb,jG as cc,uM as cd,_G as ce,iK as cf,DA as cg,t$ as ch,oK as ci,rK as cj,lK as ck,sK as cl,X$ as cm,XG as cn,JG as co,WG as cp,a$ as cq,e$ as cr,vo as cs,kh as ct,LK as cu,Pu as cv,Ah as cw,bH as cx,vH as cy,AA as cz,_a as d,nH as d0,yK as d1,xK as d2,m$ as d3,K$ as d4,u$ as d5,d$ as d6,c$ as d7,bK as d8,h9 as d9,B$ as dA,TK as dB,tR as dC,M$ as dD,q$ as dE,dH as da,cH as db,pH as dc,mH as dd,R$ as de,Ln as df,Ua as dg,T$ as dh,jK as di,CK as dj,AK as dk,zL as dl,O$ as dm,BK as dn,qK as dp,MK as dq,NK as dr,_K as ds,E$ as dt,EK as du,OK as dv,DK as dw,RK as dx,zK as dy,_o as dz,fa as e,$t as f,C$ as g,dv as h,sA as i,cK as j,se as k,uK as l,dK as m,pK as n,mK as o,o$ as p,l$ as q,r$ as r,UK as s,aM as t,Nh as u,GK as v,s0 as w,J$ as x,Y$ as y,W$ as z};
|