@canonry/canonry 4.179.2 → 4.180.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/assets/assets/{AuditHistoryPanel-TTMgg1iQ.js → AuditHistoryPanel-DI6iXS0J.js} +1 -1
  2. package/assets/assets/{BacklinksPage-BmlsStTz.js → BacklinksPage-DiwTMJTp.js} +1 -1
  3. package/assets/assets/{HistoryPage-OlX3tvxL.js → HistoryPage-BWODoEok.js} +1 -1
  4. package/assets/assets/{MeasurementPropertyPage-B_usHzN3.js → MeasurementPropertyPage-C1uZ9LEl.js} +1 -1
  5. package/assets/assets/{ProjectPage-DsC2NUCt.js → ProjectPage-C-fk0Jja.js} +8 -8
  6. package/assets/assets/{RunRow-BL8kiPON.js → RunRow-CMSISg-I.js} +1 -1
  7. package/assets/assets/{RunsPage-BXMLPcIB.js → RunsPage-HZwwLQDE.js} +1 -1
  8. package/assets/assets/{SettingsPage-Bm_T8JMf.js → SettingsPage-3eoRO4ze.js} +1 -1
  9. package/assets/assets/{SiteHealthSection-xlUYOOe2.js → SiteHealthSection-CATUc26x.js} +3 -3
  10. package/assets/assets/{TrafficPage-DmyGEdhw.js → TrafficPage-Cw8AM5VR.js} +1 -1
  11. package/assets/assets/{TrafficSourceDetailPage-sbu3kXCD.js → TrafficSourceDetailPage-ChFDAstr.js} +1 -1
  12. package/assets/assets/{extract-error-message-Ra108eiS.js → extract-error-message-CG_IQ_9c.js} +1 -1
  13. package/assets/assets/{index-rJBOFic-.js → index-Dz0ju3qg.js} +3 -3
  14. package/assets/assets/{react-sigma_core.esm.min-tfJo9bgS.js → react-sigma_core.esm.min-BvgsCKLZ.js} +1 -1
  15. package/assets/index.html +1 -1
  16. package/dist/{chunk-E2JGJH5E.js → chunk-3JW762Q4.js} +29 -4
  17. package/dist/{chunk-VRQ7U4HU.js → chunk-A6XDLCKF.js} +2 -2
  18. package/dist/{chunk-F4HFEWLM.js → chunk-NFALEGSZ.js} +1 -1
  19. package/dist/{chunk-Z46AW53D.js → chunk-QPJC2H6J.js} +33 -19
  20. package/dist/{chunk-SKL6ZDIY.js → chunk-UD3YJQOV.js} +4 -4
  21. package/dist/cli.js +10 -5
  22. package/dist/index.js +4 -4
  23. package/dist/{intelligence-service-F67UFJBG.js → intelligence-service-WQPUIJO6.js} +2 -2
  24. package/dist/mcp.js +3 -3
  25. package/package.json +9 -9
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SiteHealthSection-xlUYOOe2.js","./vendor-tanstack-Dock0eH1.js","./vendor-lucide-nYKv-BB7.js","./ChartPrimitives-DG35TyhH.js","./vendor-recharts-D8rt5lKn.js","./ProjectPage-DsC2NUCt.js","./RunRow-BL8kiPON.js","./extract-error-message-Ra108eiS.js","./AuditHistoryPanel-TTMgg1iQ.js","./v2-overview-adapter-COMP5UGt.js","./vendor-radix-4UOaVWza.js","./vendor-markdown-Bn7fRwrx.js","./vendor-yaml-GWJz5H2G.js","./RunsPage-BXMLPcIB.js","./HistoryPage-OlX3tvxL.js","./SettingsPage-Bm_T8JMf.js","./BacklinksPage-BmlsStTz.js","./TrafficPage-DmyGEdhw.js","./TrafficSourceDetailPage-sbu3kXCD.js","./MeasurementPropertyPage-B_usHzN3.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SiteHealthSection-CATUc26x.js","./vendor-tanstack-Dock0eH1.js","./vendor-lucide-nYKv-BB7.js","./ChartPrimitives-DG35TyhH.js","./vendor-recharts-D8rt5lKn.js","./ProjectPage-C-fk0Jja.js","./RunRow-CMSISg-I.js","./extract-error-message-CG_IQ_9c.js","./AuditHistoryPanel-DI6iXS0J.js","./v2-overview-adapter-COMP5UGt.js","./vendor-radix-4UOaVWza.js","./vendor-markdown-Bn7fRwrx.js","./vendor-yaml-GWJz5H2G.js","./RunsPage-HZwwLQDE.js","./HistoryPage-BWODoEok.js","./SettingsPage-3eoRO4ze.js","./BacklinksPage-DiwTMJTp.js","./TrafficPage-Cw8AM5VR.js","./TrafficSourceDetailPage-ChFDAstr.js","./MeasurementPropertyPage-C1uZ9LEl.js"])))=>i.map(i=>d[i]);
2
2
  import{c as fj,d as gj,r as E,j as c,Q as yj,M as bj,q as he,e as fu,L as nt,a as vj,t as so,u as Ht,f as xj,h as ms,k as Iv,l as kj,m as Vv,O as Op,n as Ua,o as ps,p as wj,s as vt,v as Lv,x as Ci,y as Sj,z as jj,A as Aj}from"./vendor-tanstack-Dock0eH1.js";import{S as Cj,O as d0,P as Uv,C as m0,a as Gv,T as p0,D as $v,R as Hv}from"./vendor-radix-4UOaVWza.js";import{c as Kv}from"./vendor-recharts-D8rt5lKn.js";import{A as Nj,X as No,S as _j,L as go,C as h0,R as jy,a as Qv,M as zj,b as Ej,c as Dj,d as f0,T as Zv,W as Tj,e as g0,f as Fv,g as Rj,G as Oj,P as Bj,H as qj,h as Mj,i as Pj,j as Ij,k as Vj,l as Lj,B as Uj,F as Gj,m as $j,n as Hj,o as Kj,p as Ay,E as Qj}from"./vendor-lucide-nYKv-BB7.js";import{M as Zj}from"./vendor-markdown-Bn7fRwrx.js";import{p as Fj}from"./vendor-yaml-GWJz5H2G.js";(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.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 ap={exports:{}},Tr={},ip={exports:{}},sp={};var Cy;function Yj(){return Cy||(Cy=1,(function(e){function a(V,ne){var ge=V.length;V.push(ne);e:for(;0<ge;){var Ee=ge-1>>>1,re=V[Ee];if(0<u(re,ne))V[Ee]=ne,V[ge]=re,ge=Ee;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],ge=V.pop();if(ge!==ne){V[0]=ge;e:for(var Ee=0,re=V.length,We=re>>>1;Ee<We;){var K=2*(Ee+1)-1,me=V[K],ie=K+1,ue=V[ie];if(0>u(me,ge))ie<re&&0>u(ue,me)?(V[Ee]=ue,V[ie]=ge,Ee=ie):(V[Ee]=me,V[K]=ge,Ee=K);else if(ie<re&&0>u(ue,ge))V[Ee]=ue,V[ie]=ge,Ee=ie;else break e}}return ne}function u(V,ne){var ge=V.sortIndex-ne.sortIndex;return ge!==0?ge: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,D=!1,B=!1,q=!1,U=!1,G=typeof setTimeout=="function"?setTimeout:null,ee=typeof clearTimeout=="function"?clearTimeout:null,X=typeof setImmediate<"u"?setImmediate:null;function te(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,a(x,ne);else break;ne=s(k)}}function se(V){if(q=!1,te(V),!B)if(s(x)!==null)B=!0,ve||(ve=!0,Be());else{var ne=s(k);ne!==null&&fe(se,ne.startTime-V)}}var ve=!1,M=-1,J=5,_e=-1;function ye(){return U?!0:!(e.unstable_now()-_e<J)}function je(){if(U=!1,ve){var V=e.unstable_now();_e=V;var ne=!0;try{e:{B=!1,q&&(q=!1,ee(M),M=-1),D=!0;var ge=j;try{t:{for(te(V),C=s(x);C!==null&&!(C.expirationTime>V&&ye());){var Ee=C.callback;if(typeof Ee=="function"){C.callback=null,j=C.priorityLevel;var re=Ee(C.expirationTime<=V);if(V=e.unstable_now(),typeof re=="function"){C.callback=re,te(V),ne=!0;break t}C===s(x)&&r(x),te(V)}else r(x);C=s(x)}if(C!==null)ne=!0;else{var We=s(k);We!==null&&fe(se,We.startTime-V),ne=!1}}break e}finally{C=null,j=ge,D=!1}ne=void 0}}finally{ne?Be():ve=!1}}}var Be;if(typeof X=="function")Be=function(){X(je)};else if(typeof MessageChannel<"u"){var Ce=new MessageChannel,Pe=Ce.port2;Ce.port1.onmessage=je,Be=function(){Pe.postMessage(null)}}else Be=function(){G(je,0)};function fe(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 ge=j;j=ne;try{return V()}finally{j=ge}},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 ge=j;j=V;try{return ne()}finally{j=ge}},e.unstable_scheduleCallback=function(V,ne,ge){var Ee=e.unstable_now();switch(typeof ge=="object"&&ge!==null?(ge=ge.delay,ge=typeof ge=="number"&&0<ge?Ee+ge:Ee):ge=Ee,V){case 1:var re=-1;break;case 2:re=250;break;case 5:re=1073741823;break;case 4:re=1e4;break;default:re=5e3}return re=ge+re,V={id:S++,callback:ne,priorityLevel:V,startTime:ge,expirationTime:re,sortIndex:-1},ge>Ee?(V.sortIndex=ge,a(k,V),s(x)===null&&V===s(k)&&(q?(ee(M),M=-1):q=!0,fe(se,ge-Ee))):(V.sortIndex=re,a(x,V),B||D||(B=!0,ve||(ve=!0,Be()))),V},e.unstable_shouldYield=ye,e.unstable_wrapCallback=function(V){var ne=j;return function(){var ge=j;j=ne;try{return V.apply(this,arguments)}finally{j=ge}}}})(sp)),sp}var Ny;function Xj(){return Ny||(Ny=1,ip.exports=Yj()),ip.exports}var _y;function Jj(){if(_y)return Tr;_y=1;var e=Xj(),a=fj(),s=gj();function r(t){var n="https://react.dev/errors/"+t;if(1<arguments.length){n+="?args[]="+encodeURIComponent(arguments[1]);for(var i=2;i<arguments.length;i++)n+="&args[]="+encodeURIComponent(arguments[i])}return"Minified React error #"+t+"; visit "+n+" 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 n=t,i=t;if(t.alternate)for(;n.return;)n=n.return;else{t=n;do n=t,(n.flags&4098)!==0&&(i=n.return),t=n.return;while(t)}return n.tag===3?i:null}function g(t){if(t.tag===13){var n=t.memoizedState;if(n===null&&(t=t.alternate,t!==null&&(n=t.memoizedState)),n!==null)return n.dehydrated}return null}function b(t){if(t.tag===31){var n=t.memoizedState;if(n===null&&(t=t.alternate,t!==null&&(n=t.memoizedState)),n!==null)return n.dehydrated}return null}function x(t){if(f(t)!==t)throw Error(r(188))}function k(t){var n=t.alternate;if(!n){if(n=f(t),n===null)throw Error(r(188));return n!==t?null:t}for(var i=t,l=n;;){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),n;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:n}function S(t){var n=t.tag;if(n===5||n===26||n===27||n===6)return t;for(t=t.child;t!==null;){if(n=S(t),n!==null)return n;t=t.sibling}return null}var C=Object.assign,j=Symbol.for("react.element"),D=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"),ee=Symbol.for("react.consumer"),X=Symbol.for("react.context"),te=Symbol.for("react.forward_ref"),se=Symbol.for("react.suspense"),ve=Symbol.for("react.suspense_list"),M=Symbol.for("react.memo"),J=Symbol.for("react.lazy"),_e=Symbol.for("react.activity"),ye=Symbol.for("react.memo_cache_sentinel"),je=Symbol.iterator;function Be(t){return t===null||typeof t!="object"?null:(t=je&&t[je]||t["@@iterator"],typeof t=="function"?t:null)}var Ce=Symbol.for("react.client.reference");function Pe(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===Ce?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 se:return"Suspense";case ve:return"SuspenseList";case _e:return"Activity"}if(typeof t=="object")switch(t.$$typeof){case B:return"Portal";case X:return t.displayName||"Context";case ee:return(t._context.displayName||"Context")+".Consumer";case te:var n=t.render;return t=t.displayName,t||(t=n.displayName||n.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case M:return n=t.displayName||null,n!==null?n:Pe(t.type)||"Memo";case J:n=t._payload,t=t._init;try{return Pe(t(n))}catch{}}return null}var fe=Array.isArray,V=a.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ne=s.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ge={pending:!1,data:null,method:null,action:null},Ee=[],re=-1;function We(t){return{current:t}}function K(t){0>re||(t.current=Ee[re],Ee[re]=null,re--)}function me(t,n){re++,Ee[re]=t.current,t.current=n}var ie=We(null),ue=We(null),oe=We(null),H=We(null);function pe(t,n){switch(me(oe,n),me(ue,t),me(ie,null),n.nodeType){case 9:case 11:t=(t=n.documentElement)&&(t=t.namespaceURI)?Q1(t):0;break;default:if(t=n.tagName,n=n.namespaceURI)n=Q1(n),t=Z1(n,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}K(ie),me(ie,t)}function be(){K(ie),K(ue),K(oe)}function it(t){t.memoizedState!==null&&me(H,t);var n=ie.current,i=Z1(n,t.type);n!==i&&(me(ue,t),me(ie,i))}function Fe(t){ue.current===t&&(K(ie),K(ue)),H.current===t&&(K(H),_r._currentValue=ge)}var Pt,St;function At(t){if(Pt===void 0)try{throw Error()}catch(i){var n=i.stack.trim().match(/\n( *(at )?)/);Pt=n&&n[1]||"",St=-1<i.stack.indexOf(`
3
3
  at`)?" (<anonymous>)":-1<i.stack.indexOf("@")?"@unknown:0:0":""}return`
4
4
  `+Pt+t+St}var Ha=!1;function Ri(t,n){if(!t||Ha)return"";Ha=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var l={DetermineComponentFrameRoot:function(){try{if(n){var W=function(){throw Error()};if(Object.defineProperty(W.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(W,[])}catch($){var L=$}Reflect.construct(t,[],W)}else{try{W.call()}catch($){L=$}t.call(W.prototype)}}else{try{throw Error()}catch($){L=$}(W=t())&&typeof W.catch=="function"&&W.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
  `)}D.write("payload.value = newResult;"),D.write("return payload;");const ee=D.compile();return(X,te)=>ee(j,X,te)};let f;const g=Zr,b=!Ax.jitless,k=b&&dC.value,S=a.catchall;let C;e._zod.parse=(j,D)=>{C??(C=r.value);const B=j.value;return g(B)?b&&k&&D?.async===!1&&D.jitless!==!0?(f||(f=u(a.shape)),j=f(j,D),S?Ux([],B,j,D,C,e):j):s(j,D):(j.issues.push({expected:"object",code:"invalid_type",input:B,inst:e}),j)}});function Gy(e,a,s,r){for(const f of e)if(f.issues.length===0)return a.value=f.value,a;const u=e.filter(f=>!co(f));return u.length===1?(a.value=u[0].value,u[0]):(a.issues.push({code:"invalid_union",input:a.value,inst:s,errors:e.map(f=>f.issues.map(g=>ji(g,r,Si())))}),a)}const Gx=Z("$ZodUnion",(e,a)=>{xt.init(e,a),ot(e._zod,"optin",()=>a.options.some(u=>u._zod.optin==="optional")?"optional":void 0),ot(e._zod,"optout",()=>a.options.some(u=>u._zod.optout==="optional")?"optional":void 0),ot(e._zod,"values",()=>{if(a.options.every(u=>u._zod.values))return new Set(a.options.flatMap(u=>Array.from(u._zod.values)))}),ot(e._zod,"pattern",()=>{if(a.options.every(u=>u._zod.pattern)){const u=a.options.map(f=>f._zod.pattern);return new RegExp(`^(${u.map(f=>S0(f.source)).join("|")})$`)}});const s=a.options.length===1,r=a.options[0]._zod.run;e._zod.parse=(u,f)=>{if(s)return r(u,f);let g=!1;const b=[];for(const x of a.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=>Gy(x,u,e,f)):Gy(b,u,e,f)}}),WN=Z("$ZodDiscriminatedUnion",(e,a)=>{a.inclusive=!1,Gx.init(e,a);const s=e._zod.parse;ot(e._zod,"propValues",()=>{const u={};for(const f of a.options){const g=f._zod.propValues;if(!g||Object.keys(g).length===0)throw new Error(`Invalid discriminated union option at index "${a.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=yu(()=>{const u=a.options,f=new Map;for(const g of u){const b=g._zod.propValues?.[a.discriminator];if(!b||b.size===0)throw new Error(`Invalid discriminated union option at index "${a.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(!Zr(g))return u.issues.push({code:"invalid_type",expected:"object",input:g,inst:e}),u;const b=r.value.get(g?.[a.discriminator]);return b?b._zod.run(u,f):a.unionFallback?s(u,f):(u.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:a.discriminator,input:g,path:[a.discriminator],inst:e}),u)}}),e8=Z("$ZodIntersection",(e,a)=>{xt.init(e,a),e._zod.parse=(s,r)=>{const u=s.value,f=a.left._zod.run({value:u,issues:[]},r),g=a.right._zod.run({value:u,issues:[]},r);return f instanceof Promise||g instanceof Promise?Promise.all([f,g]).then(([x,k])=>$y(s,x,k)):$y(s,f,g)}});function Lp(e,a){if(e===a)return{valid:!0,data:e};if(e instanceof Date&&a instanceof Date&&+e==+a)return{valid:!0,data:e};if(bo(e)&&bo(a)){const s=Object.keys(a),r=Object.keys(e).filter(f=>s.indexOf(f)!==-1),u={...e,...a};for(const f of r){const g=Lp(e[f],a[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(a)){if(e.length!==a.length)return{valid:!1,mergeErrorPath:[]};const s=[];for(let r=0;r<e.length;r++){const u=e[r],f=a[r],g=Lp(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 $y(e,a,s){const r=new Map;let u;for(const b of a.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}),co(e))return e;const g=Lp(a.value,s.value);if(!g.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(g.mergeErrorPath)}`);return e.value=g.data,e}const t8=Z("$ZodRecord",(e,a)=>{xt.init(e,a),e._zod.parse=(s,r)=>{const u=s.value;if(!bo(u))return s.issues.push({expected:"record",code:"invalid_type",input:u,inst:e}),s;const f=[],g=a.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=a.valueType._zod.run({value:u[k],issues:[]},r);S instanceof Promise?f.push(S.then(C=>{C.issues.length&&s.issues.push(...uo(k,C.issues)),s.value[k]=C.value})):(S.issues.length&&s.issues.push(...uo(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=a.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"&&Bx.test(b)&&x.issues.length){const C=a.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){a.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=a.valueType._zod.run({value:u[b],issues:[]},r);S instanceof Promise?f.push(S.then(C=>{C.issues.length&&s.issues.push(...uo(b,C.issues)),s.value[x.value]=C.value})):(S.issues.length&&s.issues.push(...uo(b,S.issues)),s.value[x.value]=S.value)}}return f.length?Promise.all(f).then(()=>s):s}}),n8=Z("$ZodEnum",(e,a)=>{xt.init(e,a);const s=Cx(a.entries),r=new Set(s);e._zod.values=r,e._zod.pattern=new RegExp(`^(${s.filter(u=>mC.has(typeof u)).map(u=>typeof u=="string"?vo(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}}),a8=Z("$ZodLiteral",(e,a)=>{if(xt.init(e,a),a.values.length===0)throw new Error("Cannot create literal schema with no valid values");const s=new Set(a.values);e._zod.values=s,e._zod.pattern=new RegExp(`^(${a.values.map(r=>typeof r=="string"?vo(r):r?vo(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:a.values,input:f,inst:e}),r}}),i8=Z("$ZodTransform",(e,a)=>{xt.init(e,a),e._zod.parse=(s,r)=>{if(r.direction==="backward")throw new jx(e.constructor.name);const u=a.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 po;return s.value=u,s}});function Hy(e,a){return e.issues.length&&a===void 0?{issues:[],value:void 0}:e}const $x=Z("$ZodOptional",(e,a)=>{xt.init(e,a),e._zod.optin="optional",e._zod.optout="optional",ot(e._zod,"values",()=>a.innerType._zod.values?new Set([...a.innerType._zod.values,void 0]):void 0),ot(e._zod,"pattern",()=>{const s=a.innerType._zod.pattern;return s?new RegExp(`^(${S0(s.source)})?$`):void 0}),e._zod.parse=(s,r)=>{if(a.innerType._zod.optin==="optional"){const u=a.innerType._zod.run(s,r);return u instanceof Promise?u.then(f=>Hy(f,s.value)):Hy(u,s.value)}return s.value===void 0?s:a.innerType._zod.run(s,r)}}),s8=Z("$ZodExactOptional",(e,a)=>{$x.init(e,a),ot(e._zod,"values",()=>a.innerType._zod.values),ot(e._zod,"pattern",()=>a.innerType._zod.pattern),e._zod.parse=(s,r)=>a.innerType._zod.run(s,r)}),o8=Z("$ZodNullable",(e,a)=>{xt.init(e,a),ot(e._zod,"optin",()=>a.innerType._zod.optin),ot(e._zod,"optout",()=>a.innerType._zod.optout),ot(e._zod,"pattern",()=>{const s=a.innerType._zod.pattern;return s?new RegExp(`^(${S0(s.source)}|null)$`):void 0}),ot(e._zod,"values",()=>a.innerType._zod.values?new Set([...a.innerType._zod.values,null]):void 0),e._zod.parse=(s,r)=>s.value===null?s:a.innerType._zod.run(s,r)}),r8=Z("$ZodDefault",(e,a)=>{xt.init(e,a),e._zod.optin="optional",ot(e._zod,"values",()=>a.innerType._zod.values),e._zod.parse=(s,r)=>{if(r.direction==="backward")return a.innerType._zod.run(s,r);if(s.value===void 0)return s.value=a.defaultValue,s;const u=a.innerType._zod.run(s,r);return u instanceof Promise?u.then(f=>Ky(f,a)):Ky(u,a)}});function Ky(e,a){return e.value===void 0&&(e.value=a.defaultValue),e}const l8=Z("$ZodPrefault",(e,a)=>{xt.init(e,a),e._zod.optin="optional",ot(e._zod,"values",()=>a.innerType._zod.values),e._zod.parse=(s,r)=>(r.direction==="backward"||s.value===void 0&&(s.value=a.defaultValue),a.innerType._zod.run(s,r))}),c8=Z("$ZodNonOptional",(e,a)=>{xt.init(e,a),ot(e._zod,"values",()=>{const s=a.innerType._zod.values;return s?new Set([...s].filter(r=>r!==void 0)):void 0}),e._zod.parse=(s,r)=>{const u=a.innerType._zod.run(s,r);return u instanceof Promise?u.then(f=>Qy(f,e)):Qy(u,e)}});function Qy(e,a){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:a}),e}const u8=Z("$ZodCatch",(e,a)=>{xt.init(e,a),ot(e._zod,"optin",()=>a.innerType._zod.optin),ot(e._zod,"optout",()=>a.innerType._zod.optout),ot(e._zod,"values",()=>a.innerType._zod.values),e._zod.parse=(s,r)=>{if(r.direction==="backward")return a.innerType._zod.run(s,r);const u=a.innerType._zod.run(s,r);return u instanceof Promise?u.then(f=>(s.value=f.value,f.issues.length&&(s.value=a.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=a.catchValue({...s,error:{issues:u.issues.map(f=>ji(f,r,Si()))},input:s.value}),s.issues=[]),s)}}),d8=Z("$ZodPipe",(e,a)=>{xt.init(e,a),ot(e._zod,"values",()=>a.in._zod.values),ot(e._zod,"optin",()=>a.in._zod.optin),ot(e._zod,"optout",()=>a.out._zod.optout),ot(e._zod,"propValues",()=>a.in._zod.propValues),e._zod.parse=(s,r)=>{if(r.direction==="backward"){const f=a.out._zod.run(s,r);return f instanceof Promise?f.then(g=>Bc(g,a.in,r)):Bc(f,a.in,r)}const u=a.in._zod.run(s,r);return u instanceof Promise?u.then(f=>Bc(f,a.out,r)):Bc(u,a.out,r)}});function Bc(e,a,s){return e.issues.length?(e.aborted=!0,e):a._zod.run({value:e.value,issues:e.issues},s)}const m8=Z("$ZodReadonly",(e,a)=>{xt.init(e,a),ot(e._zod,"propValues",()=>a.innerType._zod.propValues),ot(e._zod,"values",()=>a.innerType._zod.values),ot(e._zod,"optin",()=>a.innerType?._zod?.optin),ot(e._zod,"optout",()=>a.innerType?._zod?.optout),e._zod.parse=(s,r)=>{if(r.direction==="backward")return a.innerType._zod.run(s,r);const u=a.innerType._zod.run(s,r);return u instanceof Promise?u.then(Zy):Zy(u)}});function Zy(e){return e.value=Object.freeze(e.value),e}const p8=Z("$ZodCustom",(e,a)=>{jn.init(e,a),xt.init(e,a),e._zod.parse=(s,r)=>s,e._zod.check=s=>{const r=s.value,u=a.fn(r);if(u instanceof Promise)return u.then(f=>Fy(f,s,r,e));Fy(u,s,r,e)}});function Fy(e,a,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),a.issues.push(Fr(u))}}var Yy;class h8{constructor(){this._map=new WeakMap,this._idmap=new Map}add(a,...s){const r=s[0];return this._map.set(a,r),r&&typeof r=="object"&&"id"in r&&this._idmap.set(r.id,a),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(a){const s=this._map.get(a);return s&&typeof s=="object"&&"id"in s&&this._idmap.delete(s.id),this._map.delete(a),this}get(a){const s=a._zod.parent;if(s){const r={...this.get(s)??{}};delete r.id;const u={...r,...this._map.get(a)};return Object.keys(u).length?u:void 0}return this._map.get(a)}has(a){return this._map.has(a)}}function f8(){return new h8}(Yy=globalThis).__zod_globalRegistry??(Yy.__zod_globalRegistry=f8());const Vr=globalThis.__zod_globalRegistry;function g8(e,a){return new e({type:"string",...ze(a)})}function y8(e,a){return new e({type:"string",format:"email",check:"string_format",abort:!1,...ze(a)})}function Xy(e,a){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...ze(a)})}function b8(e,a){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...ze(a)})}function v8(e,a){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...ze(a)})}function x8(e,a){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...ze(a)})}function k8(e,a){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...ze(a)})}function w8(e,a){return new e({type:"string",format:"url",check:"string_format",abort:!1,...ze(a)})}function S8(e,a){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...ze(a)})}function j8(e,a){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...ze(a)})}function A8(e,a){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...ze(a)})}function C8(e,a){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...ze(a)})}function N8(e,a){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...ze(a)})}function _8(e,a){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...ze(a)})}function z8(e,a){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...ze(a)})}function E8(e,a){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...ze(a)})}function D8(e,a){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...ze(a)})}function T8(e,a){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...ze(a)})}function R8(e,a){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...ze(a)})}function O8(e,a){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...ze(a)})}function B8(e,a){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...ze(a)})}function q8(e,a){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...ze(a)})}function M8(e,a){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...ze(a)})}function P8(e,a){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...ze(a)})}function I8(e,a){return new e({type:"string",format:"date",check:"string_format",...ze(a)})}function V8(e,a){return new e({type:"string",format:"time",check:"string_format",precision:null,...ze(a)})}function L8(e,a){return new e({type:"string",format:"duration",check:"string_format",...ze(a)})}function U8(e,a){return new e({type:"number",checks:[],...ze(a)})}function G8(e,a){return new e({type:"number",coerce:!0,checks:[],...ze(a)})}function $8(e,a){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...ze(a)})}function H8(e,a){return new e({type:"boolean",...ze(a)})}function K8(e,a){return new e({type:"null",...ze(a)})}function Q8(e){return new e({type:"unknown"})}function Z8(e,a){return new e({type:"never",...ze(a)})}function Jy(e,a){return new Mx({check:"less_than",...ze(a),value:e,inclusive:!1})}function lp(e,a){return new Mx({check:"less_than",...ze(a),value:e,inclusive:!0})}function Wy(e,a){return new Px({check:"greater_than",...ze(a),value:e,inclusive:!1})}function cp(e,a){return new Px({check:"greater_than",...ze(a),value:e,inclusive:!0})}function eb(e,a){return new oN({check:"multiple_of",...ze(a),value:e})}function Hx(e,a){return new lN({check:"max_length",...ze(a),maximum:e})}function eu(e,a){return new cN({check:"min_length",...ze(a),minimum:e})}function Kx(e,a){return new uN({check:"length_equals",...ze(a),length:e})}function F8(e,a){return new dN({check:"string_format",format:"regex",...ze(a),pattern:e})}function Y8(e){return new mN({check:"string_format",format:"lowercase",...ze(e)})}function X8(e){return new pN({check:"string_format",format:"uppercase",...ze(e)})}function J8(e,a){return new hN({check:"string_format",format:"includes",...ze(a),includes:e})}function W8(e,a){return new fN({check:"string_format",format:"starts_with",...ze(a),prefix:e})}function e7(e,a){return new gN({check:"string_format",format:"ends_with",...ze(a),suffix:e})}function zo(e){return new yN({check:"overwrite",tx:e})}function t7(e){return zo(a=>a.normalize(e))}function n7(){return zo(e=>e.trim())}function a7(){return zo(e=>e.toLowerCase())}function i7(){return zo(e=>e.toUpperCase())}function s7(){return zo(e=>uC(e))}function o7(e,a,s){return new e({type:"array",element:a,...ze(s)})}function r7(e,a,s){return new e({type:"custom",check:"custom",fn:a,...ze(s)})}function l7(e){const a=c7(s=>(s.addIssue=r=>{if(typeof r=="string")s.issues.push(Fr(r,s.value,a._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=a),u.continue??(u.continue=!a._zod.def.abort),s.issues.push(Fr(u))}},e(s.value,s)));return a}function c7(e,a){const s=new jn({check:"custom",...ze(a)});return s._zod.check=e,s}function Qx(e){let a=e?.target??"draft-2020-12";return a==="draft-4"&&(a="draft-04"),a==="draft-7"&&(a="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??Vr,target:a,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,a,s={path:[],schemaPath:[]}){var r;const u=e._zod.def,f=a.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};a.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(a,g.schema,S);else{const j=g.schema,D=a.processors[u.type];if(!D)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${u.type}`);D(e,a,j,S)}const C=e._zod.parent;C&&(g.ref||(g.ref=C),Mt(C,a,S),a.seen.get(C).isParent=!0)}const x=a.metadataRegistry.get(e);return x&&Object.assign(g.schema,x),a.io==="input"&&on(e)&&(delete g.schema.examples,delete g.schema.default),a.io==="input"&&g.schema._prefault&&((r=g.schema).default??(r.default=g.schema._prefault)),delete g.schema._prefault,a.seen.get(e).schema}function Zx(e,a){const s=e.seen.get(a);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 D=g[1].defId??g[1].schema.id??`schema${e.counter++}`;return g[1].defId=D,{defId:D,ref:`${j("__shared")}#/${b}/${D}`}}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(a===g[0]){f(g);continue}if(e.external){const k=e.external.registry.get(g[0])?.id;if(a!==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 Fx(e,a){const s=e.seen.get(a);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),D=j.schema;if(D.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(x.allOf=x.allOf??[],x.allOf.push(D)):Object.assign(x,D),Object.assign(x,k),g._zod.parent===S)for(const q in x)q==="$ref"||q==="allOf"||q in k||delete x[q];if(D.$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 D in x)D==="$ref"||D==="allOf"||D in j.def&&JSON.stringify(x[D])===JSON.stringify(j.def[D])&&delete x[D]}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(a)?.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:{...a["~standard"],jsonSchema:{input:tu(a,"input",e.processors),output:tu(a,"output",e.processors)}},enumerable:!1,writable:!1}),g}catch{throw new Error("Error converting schema to JSON.")}}function on(e,a){const s=a??{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 on(r.element,s);if(r.type==="set")return on(r.valueType,s);if(r.type==="lazy")return on(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 on(r.innerType,s);if(r.type==="intersection")return on(r.left,s)||on(r.right,s);if(r.type==="record"||r.type==="map")return on(r.keyType,s)||on(r.valueType,s);if(r.type==="pipe")return on(r.in,s)||on(r.out,s);if(r.type==="object"){for(const u in r.shape)if(on(r.shape[u],s))return!0;return!1}if(r.type==="union"){for(const u of r.options)if(on(u,s))return!0;return!1}if(r.type==="tuple"){for(const u of r.items)if(on(u,s))return!0;return!!(r.rest&&on(r.rest,s))}return!1}const u7=(e,a={})=>s=>{const r=Qx({...s,processors:a});return Mt(e,r),Zx(r,e),Fx(r,e)},tu=(e,a,s={})=>r=>{const{libraryOptions:u,target:f}=r??{},g=Qx({...u??{},target:f,io:a,processors:s});return Mt(e,g),Zx(g,e),Fx(g,e)},d7={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},m7=(e,a,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=d7[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=>({...a.target==="draft-07"||a.target==="draft-04"||a.target==="openapi-3.0"?{type:"string"}:{},pattern:C.source}))])}},p7=(e,a,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"&&(a.target==="draft-04"||a.target==="openapi-3.0"?(u.minimum=S,u.exclusiveMinimum=!0):u.exclusiveMinimum=S),typeof f=="number"&&(u.minimum=f,typeof S=="number"&&a.target!=="draft-04"&&(S>=f?delete u.minimum:delete u.exclusiveMinimum)),typeof k=="number"&&(a.target==="draft-04"||a.target==="openapi-3.0"?(u.maximum=k,u.exclusiveMaximum=!0):u.exclusiveMaximum=k),typeof g=="number"&&(u.maximum=g,typeof k=="number"&&a.target!=="draft-04"&&(k<=g?delete u.maximum:delete u.exclusiveMaximum)),typeof x=="number"&&(u.multipleOf=x)},h7=(e,a,s,r)=>{s.type="boolean"},f7=(e,a,s,r)=>{a.target==="openapi-3.0"?(s.type="string",s.nullable=!0,s.enum=[null]):s.type="null"},g7=(e,a,s,r)=>{s.not={}},y7=(e,a,s,r)=>{},b7=(e,a,s,r)=>{const u=e._zod.def,f=Cx(u.entries);f.every(g=>typeof g=="number")&&(s.type="number"),f.every(g=>typeof g=="string")&&(s.type="string"),s.enum=f},v7=(e,a,s,r)=>{const u=e._zod.def,f=[];for(const g of u.values)if(g===void 0){if(a.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof g=="bigint"){if(a.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,a.target==="draft-04"||a.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},x7=(e,a,s,r)=>{if(a.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},k7=(e,a,s,r)=>{if(a.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},w7=(e,a,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,a,{...r,path:[...r.path,"items"]})},S7=(e,a,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],a,{...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 a.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,a,{...r,path:[...r.path,"additionalProperties"]})):a.io==="output"&&(u.additionalProperties=!1)},j7=(e,a,s,r)=>{const u=e._zod.def,f=u.inclusive===!1,g=u.options.map((b,x)=>Mt(b,a,{...r,path:[...r.path,f?"oneOf":"anyOf",x]}));f?s.oneOf=g:s.anyOf=g},A7=(e,a,s,r)=>{const u=e._zod.def,f=Mt(u.left,a,{...r,path:[...r.path,"allOf",0]}),g=Mt(u.right,a,{...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},C7=(e,a,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,a,{...r,path:[...r.path,"patternProperties","*"]});u.patternProperties={};for(const C of x)u.patternProperties[C.source]=S}else(a.target==="draft-07"||a.target==="draft-2020-12")&&(u.propertyNames=Mt(f.keyType,a,{...r,path:[...r.path,"propertyNames"]})),u.additionalProperties=Mt(f.valueType,a,{...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)}},N7=(e,a,s,r)=>{const u=e._zod.def,f=Mt(u.innerType,a,r),g=a.seen.get(e);a.target==="openapi-3.0"?(g.ref=u.innerType,s.nullable=!0):s.anyOf=[f,{type:"null"}]},_7=(e,a,s,r)=>{const u=e._zod.def;Mt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType},z7=(e,a,s,r)=>{const u=e._zod.def;Mt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType,s.default=JSON.parse(JSON.stringify(u.defaultValue))},E7=(e,a,s,r)=>{const u=e._zod.def;Mt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType,a.io==="input"&&(s._prefault=JSON.parse(JSON.stringify(u.defaultValue)))},D7=(e,a,s,r)=>{const u=e._zod.def;Mt(u.innerType,a,r);const f=a.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},T7=(e,a,s,r)=>{const u=e._zod.def,f=a.io==="input"?u.in._zod.def.type==="transform"?u.out:u.in:u.out;Mt(f,a,r);const g=a.seen.get(e);g.ref=f},R7=(e,a,s,r)=>{const u=e._zod.def;Mt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType,s.readOnly=!0},Yx=(e,a,s,r)=>{const u=e._zod.def;Mt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType},O7=Z("ZodISODateTime",(e,a)=>{DN.init(e,a),jt.init(e,a)});function Xx(e){return P8(O7,e)}const B7=Z("ZodISODate",(e,a)=>{TN.init(e,a),jt.init(e,a)});function Jx(e){return I8(B7,e)}const q7=Z("ZodISOTime",(e,a)=>{RN.init(e,a),jt.init(e,a)});function M7(e){return V8(q7,e)}const P7=Z("ZodISODuration",(e,a)=>{ON.init(e,a),jt.init(e,a)});function I7(e){return L8(P7,e)}const V7=(e,a)=>{Ex.init(e,a),e.name="ZodError",Object.defineProperties(e,{format:{value:s=>SC(e,s)},flatten:{value:s=>wC(e,s)},addIssue:{value:s=>{e.issues.push(s),e.message=JSON.stringify(e.issues,Vp,2)}},addIssues:{value:s=>{e.issues.push(...s),e.message=JSON.stringify(e.issues,Vp,2)}},isEmpty:{get(){return e.issues.length===0}}})},Kn=Z("ZodError",V7,{Parent:Error}),L7=A0(Kn),U7=C0(Kn),G7=bu(Kn),$7=vu(Kn),H7=CC(Kn),K7=NC(Kn),Q7=_C(Kn),Z7=zC(Kn),F7=EC(Kn),Y7=DC(Kn),X7=TC(Kn),J7=RC(Kn),wt=Z("ZodType",(e,a)=>(xt.init(e,a),Object.assign(e["~standard"],{jsonSchema:{input:tu(e,"input"),output:tu(e,"output")}}),e.toJSONSchema=u7(e,{}),e.def=a,e.type=a.type,Object.defineProperty(e,"_def",{value:a}),e.check=(...s)=>e.clone(Ni(a,{checks:[...a.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)=>L7(e,s,r,{callee:e.parse}),e.safeParse=(s,r)=>G7(e,s,r),e.parseAsync=async(s,r)=>U7(e,s,r,{callee:e.parseAsync}),e.safeParseAsync=async(s,r)=>$7(e,s,r),e.spa=e.safeParseAsync,e.encode=(s,r)=>H7(e,s,r),e.decode=(s,r)=>K7(e,s,r),e.encodeAsync=async(s,r)=>Q7(e,s,r),e.decodeAsync=async(s,r)=>Z7(e,s,r),e.safeEncode=(s,r)=>F7(e,s,r),e.safeDecode=(s,r)=>Y7(e,s,r),e.safeEncodeAsync=async(s,r)=>X7(e,s,r),e.safeDecodeAsync=async(s,r)=>J7(e,s,r),e.refine=(s,r)=>e.check(H_(s,r)),e.superRefine=s=>e.check(K_(s)),e.overwrite=s=>e.check(zo(s)),e.optional=()=>ab(e),e.exactOptional=()=>T_(e),e.nullable=()=>ib(e),e.nullish=()=>ab(ib(e)),e.nonoptional=s=>P_(e,s),e.array=()=>y(e),e.or=s=>Le([e,s]),e.and=s=>N_(e,s),e.transform=s=>Gp(e,t2(s)),e.default=s=>B_(e,s),e.prefault=s=>M_(e,s),e.catch=s=>V_(e,s),e.pipe=s=>Gp(e,s),e.readonly=()=>G_(e),e.describe=s=>{const r=e.clone();return Vr.add(r,{description:s}),r},Object.defineProperty(e,"description",{get(){return Vr.get(e)?.description},configurable:!0}),e.meta=(...s)=>{if(s.length===0)return Vr.get(e);const r=e.clone();return Vr.add(r,s[0]),r},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=s=>s(e),e)),Wx=Z("_ZodString",(e,a)=>{N0.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(r,u,f)=>m7(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(F8(...r)),e.includes=(...r)=>e.check(J8(...r)),e.startsWith=(...r)=>e.check(W8(...r)),e.endsWith=(...r)=>e.check(e7(...r)),e.min=(...r)=>e.check(eu(...r)),e.max=(...r)=>e.check(Hx(...r)),e.length=(...r)=>e.check(Kx(...r)),e.nonempty=(...r)=>e.check(eu(1,...r)),e.lowercase=r=>e.check(Y8(r)),e.uppercase=r=>e.check(X8(r)),e.trim=()=>e.check(n7()),e.normalize=(...r)=>e.check(t7(...r)),e.toLowerCase=()=>e.check(a7()),e.toUpperCase=()=>e.check(i7()),e.slugify=()=>e.check(s7())}),W7=Z("ZodString",(e,a)=>{N0.init(e,a),Wx.init(e,a),e.email=s=>e.check(y8(e_,s)),e.url=s=>e.check(w8(t_,s)),e.jwt=s=>e.check(M8(g_,s)),e.emoji=s=>e.check(S8(n_,s)),e.guid=s=>e.check(Xy(tb,s)),e.uuid=s=>e.check(b8(qc,s)),e.uuidv4=s=>e.check(v8(qc,s)),e.uuidv6=s=>e.check(x8(qc,s)),e.uuidv7=s=>e.check(k8(qc,s)),e.nanoid=s=>e.check(j8(a_,s)),e.guid=s=>e.check(Xy(tb,s)),e.cuid=s=>e.check(A8(i_,s)),e.cuid2=s=>e.check(C8(s_,s)),e.ulid=s=>e.check(N8(o_,s)),e.base64=s=>e.check(O8(p_,s)),e.base64url=s=>e.check(B8(h_,s)),e.xid=s=>e.check(_8(r_,s)),e.ksuid=s=>e.check(z8(l_,s)),e.ipv4=s=>e.check(E8(c_,s)),e.ipv6=s=>e.check(D8(u_,s)),e.cidrv4=s=>e.check(T8(d_,s)),e.cidrv6=s=>e.check(R8(m_,s)),e.e164=s=>e.check(q8(f_,s)),e.datetime=s=>e.check(Xx(s)),e.date=s=>e.check(Jx(s)),e.time=s=>e.check(M7(s)),e.duration=s=>e.check(I7(s))});function o(e){return g8(W7,e)}const jt=Z("ZodStringFormat",(e,a)=>{kt.init(e,a),Wx.init(e,a)}),e_=Z("ZodEmail",(e,a)=>{wN.init(e,a),jt.init(e,a)}),tb=Z("ZodGUID",(e,a)=>{xN.init(e,a),jt.init(e,a)}),qc=Z("ZodUUID",(e,a)=>{kN.init(e,a),jt.init(e,a)}),t_=Z("ZodURL",(e,a)=>{SN.init(e,a),jt.init(e,a)}),n_=Z("ZodEmoji",(e,a)=>{jN.init(e,a),jt.init(e,a)}),a_=Z("ZodNanoID",(e,a)=>{AN.init(e,a),jt.init(e,a)}),i_=Z("ZodCUID",(e,a)=>{CN.init(e,a),jt.init(e,a)}),s_=Z("ZodCUID2",(e,a)=>{NN.init(e,a),jt.init(e,a)}),o_=Z("ZodULID",(e,a)=>{_N.init(e,a),jt.init(e,a)}),r_=Z("ZodXID",(e,a)=>{zN.init(e,a),jt.init(e,a)}),l_=Z("ZodKSUID",(e,a)=>{EN.init(e,a),jt.init(e,a)}),c_=Z("ZodIPv4",(e,a)=>{BN.init(e,a),jt.init(e,a)}),u_=Z("ZodIPv6",(e,a)=>{qN.init(e,a),jt.init(e,a)}),d_=Z("ZodCIDRv4",(e,a)=>{MN.init(e,a),jt.init(e,a)}),m_=Z("ZodCIDRv6",(e,a)=>{PN.init(e,a),jt.init(e,a)}),p_=Z("ZodBase64",(e,a)=>{IN.init(e,a),jt.init(e,a)}),h_=Z("ZodBase64URL",(e,a)=>{LN.init(e,a),jt.init(e,a)}),f_=Z("ZodE164",(e,a)=>{UN.init(e,a),jt.init(e,a)}),g_=Z("ZodJWT",(e,a)=>{$N.init(e,a),jt.init(e,a)}),_0=Z("ZodNumber",(e,a)=>{Vx.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(r,u,f)=>p7(e,r,u),e.gt=(r,u)=>e.check(Wy(r,u)),e.gte=(r,u)=>e.check(cp(r,u)),e.min=(r,u)=>e.check(cp(r,u)),e.lt=(r,u)=>e.check(Jy(r,u)),e.lte=(r,u)=>e.check(lp(r,u)),e.max=(r,u)=>e.check(lp(r,u)),e.int=r=>e.check(nb(r)),e.safe=r=>e.check(nb(r)),e.positive=r=>e.check(Wy(0,r)),e.nonnegative=r=>e.check(cp(0,r)),e.negative=r=>e.check(Jy(0,r)),e.nonpositive=r=>e.check(lp(0,r)),e.multipleOf=(r,u)=>e.check(eb(r,u)),e.step=(r,u)=>e.check(eb(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 U8(_0,e)}const y_=Z("ZodNumberFormat",(e,a)=>{HN.init(e,a),_0.init(e,a)});function nb(e){return $8(y_,e)}const b_=Z("ZodBoolean",(e,a)=>{KN.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>h7(e,s,r)});function _(e){return H8(b_,e)}const v_=Z("ZodNull",(e,a)=>{QN.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>f7(e,s,r)});function le(e){return K8(v_,e)}const x_=Z("ZodUnknown",(e,a)=>{ZN.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>y7()});function Sn(){return Q8(x_)}const k_=Z("ZodNever",(e,a)=>{FN.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>g7(e,s,r)});function w_(e){return Z8(k_,e)}const S_=Z("ZodArray",(e,a)=>{YN.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>w7(e,s,r,u),e.element=a.element,e.min=(s,r)=>e.check(eu(s,r)),e.nonempty=s=>e.check(eu(1,s)),e.max=(s,r)=>e.check(Hx(s,r)),e.length=(s,r)=>e.check(Kx(s,r)),e.unwrap=()=>e.element});function y(e,a){return o7(S_,e,a)}const j_=Z("ZodObject",(e,a)=>{JN.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>S7(e,s,r,u),ot(e,"shape",()=>a.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:Sn()}),e.loose=()=>e.clone({...e._zod.def,catchall:Sn()}),e.strict=()=>e.clone({...e._zod.def,catchall:w_()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=s=>yC(e,s),e.safeExtend=s=>bC(e,s),e.merge=s=>vC(e,s),e.pick=s=>fC(e,s),e.omit=s=>gC(e,s),e.partial=(...s)=>xC(n2,e,s[0]),e.required=(...s)=>kC(a2,e,s[0])});function p(e,a){const s={type:"object",shape:e??{},...ze(a)};return new j_(s)}const e2=Z("ZodUnion",(e,a)=>{Gx.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>j7(e,s,r,u),e.options=a.options});function Le(e,a){return new e2({type:"union",options:e,...ze(a)})}const A_=Z("ZodDiscriminatedUnion",(e,a)=>{e2.init(e,a),WN.init(e,a)});function qe(e,a,s){return new A_({type:"union",options:a,discriminator:e,...ze(s)})}const C_=Z("ZodIntersection",(e,a)=>{e8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>A7(e,s,r,u)});function N_(e,a){return new C_({type:"intersection",left:e,right:a})}const __=Z("ZodRecord",(e,a)=>{t8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>C7(e,s,r,u),e.keyType=a.keyType,e.valueType=a.valueType});function Ve(e,a,s){return new __({type:"record",keyType:e,valueType:a,...ze(s)})}const Up=Z("ZodEnum",(e,a)=>{n8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(r,u,f)=>b7(e,r,u),e.enum=a.entries,e.options=Object.values(a.entries);const s=new Set(Object.keys(a.entries));e.extract=(r,u)=>{const f={};for(const g of r)if(s.has(g))f[g]=a.entries[g];else throw new Error(`Key ${g} not found in enum`);return new Up({...a,checks:[],...ze(u),entries:f})},e.exclude=(r,u)=>{const f={...a.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 Up({...a,checks:[],...ze(u),entries:f})}});function A(e,a){const s=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new Up({type:"enum",entries:s,...ze(a)})}const z_=Z("ZodLiteral",(e,a)=>{a8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>v7(e,s,r),e.values=new Set(a.values),Object.defineProperty(e,"value",{get(){if(a.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return a.values[0]}})});function O(e,a){return new z_({type:"literal",values:Array.isArray(e)?e:[e],...ze(a)})}const E_=Z("ZodTransform",(e,a)=>{i8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>k7(e,s),e._zod.parse=(s,r)=>{if(r.direction==="backward")throw new jx(e.constructor.name);s.addIssue=f=>{if(typeof f=="string")s.issues.push(Fr(f,s.value,a));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(Fr(g))}};const u=a.transform(s.value,s);return u instanceof Promise?u.then(f=>(s.value=f,s)):(s.value=u,s)}});function t2(e){return new E_({type:"transform",transform:e})}const n2=Z("ZodOptional",(e,a)=>{$x.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>Yx(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function ab(e){return new n2({type:"optional",innerType:e})}const D_=Z("ZodExactOptional",(e,a)=>{s8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>Yx(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function T_(e){return new D_({type:"optional",innerType:e})}const R_=Z("ZodNullable",(e,a)=>{o8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>N7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function ib(e){return new R_({type:"nullable",innerType:e})}const O_=Z("ZodDefault",(e,a)=>{r8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>z7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function B_(e,a){return new O_({type:"default",innerType:e,get defaultValue(){return typeof a=="function"?a():_x(a)}})}const q_=Z("ZodPrefault",(e,a)=>{l8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>E7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function M_(e,a){return new q_({type:"prefault",innerType:e,get defaultValue(){return typeof a=="function"?a():_x(a)}})}const a2=Z("ZodNonOptional",(e,a)=>{c8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>_7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function P_(e,a){return new a2({type:"nonoptional",innerType:e,...ze(a)})}const I_=Z("ZodCatch",(e,a)=>{u8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>D7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function V_(e,a){return new I_({type:"catch",innerType:e,catchValue:typeof a=="function"?a:()=>a})}const L_=Z("ZodPipe",(e,a)=>{d8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>T7(e,s,r,u),e.in=a.in,e.out=a.out});function Gp(e,a){return new L_({type:"pipe",in:e,out:a})}const U_=Z("ZodReadonly",(e,a)=>{m8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>R7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function G_(e){return new U_({type:"readonly",innerType:e})}const $_=Z("ZodCustom",(e,a)=>{p8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>x7(e,s)});function H_(e,a={}){return r7($_,e,a)}function K_(e){return l7(e)}function z0(e,a){return Gp(t2(e),a)}const Je={custom:"custom"};function i2(e){return G8(_0,e)}const s2=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(s2)});p({name:o().min(1).max(100),scopes:y(o()).min(1).optional(),projectId:o().optional()});s2.extend({key:o()});const Q_=p({maxConcurrency:m().int().positive(),maxRequestsPerMinute:m().int().positive(),maxRequestsPerDay:m().int().positive()}),ht=o().min(1),E0=Ve(o(),o().trim().min(1));o().min(1);const un=p({label:o().min(1),city:o().min(1),region:o().min(1),country:o().length(2),timezone:o().optional()}),D0=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(D0),enabled:_().default(!0),source:o().optional(),webhookSecret:o().optional(),createdAt:o(),updatedAt:o()});p({channel:O("webhook"),url:o().url(),events:y(D0).min(1),source:o().optional()});function Z_(e){if(e instanceof Error)return e.message;if(typeof e=="string")return e;if(e==null)return"unknown error";try{const a=JSON.stringify(e);if(a!==void 0)return a}catch{}try{return String(e)}catch{return"unknown error"}}function up(e,a=!1){const s=new Set,r=[];for(const u of e){const f=a?u.toLowerCase():u;s.has(f)||(s.add(f),r.push(u))}return r}function sb(e){try{const a=e.includes("://"),s=new URL(a?e:`https://${e}`);if(!a&&(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 F_=o().trim().min(1).refine(e=>sb(e)!==null,{message:"Marketing hosts must be valid hostnames without credentials or ports"}).overwrite(e=>sb(e)??e),Y_=o().trim().min(1),X_=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"}),T0=p({marketingHosts:y(F_).overwrite(e=>up(e,!0)),brandTerms:y(Y_).overwrite(e=>up(e,!0)),leadEventNames:y(X_).overwrite(e=>up(e))});function J_(){return{marketingHosts:[],brandTerms:[],leadEventNames:["generate_lead"]}}const dp=Object.freeze({marketingHosts:Object.freeze([]),brandTerms:Object.freeze([]),leadEventNames:Object.freeze(["generate_lead"])}),o2=()=>J_(),ob=A(["never-synced","ready","error"]),W_=A(["landing-page","channel"]),ez=A(["30d","60d","90d"]),tz=A(["marketing","all"]),Lr=Jx(),nl=p({label:A(["earliest","middle","previous","latest"]),startDate:Lr,endDate:Lr}),mp=nl.extend({sessions:m().int().nonnegative()}),rb=nl.extend({eventCount:m().int().nonnegative()}),lb=nl.extend({clicks:m().int().nonnegative(),impressions:m().int().nonnegative()}),nz=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()}),az=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()}),iz=p({window:ez,bucketDays:O(30),filters:p({hostScope:tz,marketingHosts:y(o()),pathPrefix:o().nullable(),brandTerms:y(o()),queryMixScope:O("property")}),acquisition:p({status:ob,error:o().nullable(),syncedAt:o().datetime().nullable(),periods:y(mp),channels:y(p({channelGroup:o(),periods:y(mp)})),pages:y(p({hostName:o(),landingPage:o(),periods:y(mp)}))}),leads:p({status:ob,error:o().nullable(),syncedAt:o().datetime().nullable(),attributionScope:W_.nullable(),hostAndPathFiltersApplied:_(),periods:y(rb),channels:y(p({channelGroup:o(),periods:y(rb)}))}),engagement:p({status:A(["ready","unavailable"]),availableFromDate:Lr.nullable(),latestDate:Lr.nullable(),periods:y(az)}),searchDemand:p({status:A(["ready","unavailable"]),periods:y(nz),queries:y(p({query:o(),classification:A(["branded","non-branded"]),periods:y(lb)})),pages:y(p({hostName:o(),landingPage:o(),periods:y(lb)})),latestDate:Lr.nullable()})}),sz=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,oz=/[\0-\x1F\x7F-\x9F]/,rz=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\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]/,lz=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;var cz=class{src_Any=sz.source;src_Cc=oz.source;src_Z=lz.source;src_P=rz.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,a,s=4){const r=this.escapeRE(e),u=this.escapeRE(a),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}",a=`(?:(?:${e}:${e})|${this.get_ipv4_addr().source})`;return this.cache.src_ip6_addr??=new RegExp(`(?:(?:${e}:){6}${a}|::(?:${e}:){5}${a}|(?:${e})?::(?:${e}:){4}${a}|(?:(?:${e}:){0,1}${e})?::(?:${e}:){3}${a}|(?:(?:${e}:){0,2}${e})?::(?:${e}:){2}${a}|(?:(?:${e}:){0,3}${e})?::${e}:${a}|(?:(?:${e}:){0,4}${e})?::${a}|(?:(?:${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")}},pp={validate:(e,a,s)=>{const r=s.re.get_http_validator();r.lastIndex=a;const u=r.exec(e);return u?u[0].length:0},normalize:(e,a)=>a.normalize(e)},uz={"http:":pp,"https:":pp,"ftp:":pp,"//":{validate:function(e,a,s){const r=s.re.get_relative_proto_validator();r.lastIndex=a;const u=r.exec(e);return u?a>=3&&e[a-3]===":"||a>=3&&e[a-3]==="/"?0:u[0].length:0},normalize:(e,a)=>a.normalize(e)},"mailto:":{validate:function(e,a,s){const r=s.re.get_mailto_validator();r.lastIndex=a;const u=r.exec(e);return u?u[0].length:0},normalize:(e,a)=>a.normalize(e)}},dz="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",mz="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";function pz(){const e=mz.split("|");return dz.split("|").forEach(a=>{const s=a.indexOf(":"),r=a.slice(0,s);for(const u of a.slice(s+1))e.push(r+u)}),e}var hz={fuzzyLink:!1,fuzzyEmail:!0,fuzzyIP:!1,"---":!1,tlds:pz(),urlAuth:!1,maxLength:1e4},cb=class{schema;index;lastIndex;raw;text;url;constructor(e,a,s,r){const u=e.slice(s,r);this.schema=a.toLowerCase(),this.index=s,this.lastIndex=r,this.raw=u,this.text=u,this.url=u}},fz=class{__opts__;__schemas__;re;constructor(e={}){const{rebuilder:a,...s}=e;this.__opts__={...hz,...s},this.__schemas__={...uz},this.re=a||new cz,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)})}add(e,a=null){if(!a)delete this.__schemas__[e];else{const s={normalize:(r,u)=>u.normalize(r),...a};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 a,s;for(s=this.re.get_schema_search(),s.lastIndex=0;(a=s.exec(e))!==null;)if(this.testSchemaAt(e,a[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;(a=r.exec(e))!==null;){const f=e.slice(Math.max(0,a.index-65),a.index);if(u.test(f))return!0}}return!1}testSchemaAt(e,a,s){return this.__schemas__[a.toLowerCase()]?this.__schemas__[a.toLowerCase()].validate(e.slice(0,s+this.__opts__.maxLength),s,this):0}match(e){const a=[],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 D=Math.max(j-1,0);if(u&&f&&!C&&(!b||b.index<j))for(u.lastIndex<D&&(u.lastIndex=D);;){const ee=u.exec(e);if(!ee){C=!0,b=void 0;break}const X=f.exec(e.slice(Math.max(0,ee.index-65),ee.index));if(X){if(b={schema:"mailto:",index:ee.index-X[1].length,lastIndex:ee.index+ee[0].length},b.index>=j)break;u.lastIndex<D&&(u.lastIndex=D)}}if(r&&!S&&(!g||g.index<j))for(r.lastIndex<D&&(r.lastIndex=D);;){const ee=r.exec(e);if(!ee){S=!0,g=void 0;break}if(g={schema:"",index:ee.index+ee[1].length,lastIndex:ee.index+ee[0].length},g.index>=j)break;r.lastIndex<D&&(r.lastIndex=D)}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<D&&(s.lastIndex=D);const te=s.exec(e);if(!te){k=!0;break}x={schema:te[2],index:te.index+te[1].length,lastIndex:te.index+te[0].length}}if(x.index<j){x=void 0;continue}if(B&&x.index>B.index)break;const ee=x;x=void 0;const X=this.testSchemaAt(e,ee.schema,ee.lastIndex);if(X){q={schema:ee.schema,index:ee.index,lastIndex:ee.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 cb(e,U.schema,U.index,U.lastIndex);G.schema?this.__schemas__[G.schema].normalize(G,this):this.normalize(G),a.push(G),j=U.lastIndex}return a.length?a:null}matchAtStart(e){if(!e.length)return null;const a=this.re.get_schema_at_start().exec(e);if(!a)return null;const s=this.testSchemaAt(e,a[2],a[0].length);if(!s)return null;const r=new cb(e,a[2],a.index+a[1].length,a.index+a[0].length+s);return this.__schemas__[r.schema].normalize(r,this),r}tlds(e,a=!1){return e=Array.isArray(e)?e:[e],a?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 gz=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 yz(e,a){return e.endsWith(a)?e.length===a.length||e[e.length-a.length-1]===".":!1}function bz(e,a){const s=e.length-a.length-2,r=e.lastIndexOf(".",s);return r===-1?e:e.slice(r+1)}function vz(e,a,s){if(s.validHosts!==null){const u=s.validHosts;for(const f of u)if(yz(a,f))return f}let r=0;if(a.startsWith("."))for(;r<a.length&&a[r]===".";)r+=1;return e.length===a.length-r?null:bz(a,e)}function xz(e,a){return e.slice(0,-a.length-1)}const hp=/[\t\n\r]/g;let $p=!1;function ub(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function db(e,a,s){const r=s-a,u=e.charCodeAt(a)|32;if(r===2)return u===119&&(e.charCodeAt(a+1)|32)===115?1:0;if(r===3){const f=e.charCodeAt(a+1)|32,g=e.charCodeAt(a+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(a+1)|32,g=e.charCodeAt(a+2)|32,b=e.charCodeAt(a+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(a+1)|32)===116&&(e.charCodeAt(a+2)|32)===116&&(e.charCodeAt(a+3)|32)===112&&(e.charCodeAt(a+4)|32)===115?1:0;return 0}function Ur(e,a,s=!1){let r=0,u=e.length,f=!1,g=!1;if($p=!1,!a){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=db(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 ee=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&ee<2;)r+=1,ee+=1;if(ee<2)return null}else{for(let ee=r;ee<U;ee+=1){const X=e.charCodeAt(ee)|32;if(!(X>=97&&X<=122||X>=48&&X<=57||X===46||X===45||X===43)){const te=e.charCodeAt(ee);return te===9||te===10||te===13?Ur(e.replace(hp,""),a,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 ee=r;ee<u;ee+=1){const X=e.charCodeAt(ee);if(X===9||X===10||X===13)return Ur(e.replace(hp,""),a,s);if(X===58){G=ee;break}if(X===47||X===92||X===63||X===35)break}if(G!==-1){let ee=!1;for(let X=G+1;X<u;X+=1){const te=e.charCodeAt(X);if(te===47||te===92||te===63||te===35)break;if(te===64){ee=!0;break}}if(!ee){let X=!0,te=G+1;for(;te<u;te+=1){const se=e.charCodeAt(te);if(se===47||se===92||se===63||se===35)break;if(se<48||se>57){X=!1;break}}if(te===G+1&&(X=!1),!X){const se=db(e,r,G);if(se===0){let ve=!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){ve=!0;break}}if(!ve)return null}else if(g=!0,r=G+1,se===2){let ve=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&ve<2;)r+=1,ve+=1;if(ve<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,D=s,B=r-1,q=-1;if(s&&r<u){const U=e.charCodeAt(r);(!(ub(U)||U===46||U===95)||U===45)&&(D=!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)&&(D=!1),B=U):(G<48||G>57)&&(G!==45||q===46)&&(D=!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&&!ub(G)&&(D=!1);s&&(q=G)}if(j)return Ur(e.replace(hp,""),a,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&&D&&x===-1&&S===-1&&k===-1&&e.charCodeAt(u-1)!==46&&u-r<=255&&u-B-1<=63&&q!==45&&($p=!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 kz(e){if(e.length<7||e.length>15)return!1;let a=0;for(let s=0;s<e.length;s+=1){const r=e.charCodeAt(s);if(r===46)a+=1;else if(r<48||r>57)return!1}return a===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function wz(e){if(e.length<3)return!1;let a=e.startsWith("[")?1:0,s=e.length;if(e[s-1]==="]"&&(s-=1),s-a>39)return!1;let r=!1;for(;a<s;a+=1){const u=e.charCodeAt(a);if(u===58)r=!0;else if(!(u>=48&&u<=57||u>=97&&u<=102||u>=65&&u<=70))return!1}return r}function Sz(e){return wz(e)||kz(e)}const jz=["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 Az(e){for(const a of jz)if(e.endsWith(a)&&(e.length===a.length||e.charCodeAt(e.length-a.length-1)===46))return!0;return!1}function mb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function pb(e){if(e.length>255||e.length===0||!mb(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let a=-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-a>64||s===46||s===45)return!1;a=u}else if(!(mb(f)||f===45||f===95)||f===45&&s===46)return!1;s=f}return r-a-1<=63&&s!==45}function r2({allowIcannDomains:e=!0,allowPrivateDomains:a=!1,detectIp:s=!0,detectSpecialUse:r=!1,extractHostname:u=!0,mixedInputs:f=!0,validHosts:g=null,validateHostname:b=!0}){return{allowIcannDomains:e,allowPrivateDomains:a,detectIp:s,detectSpecialUse:r,extractHostname:u,mixedInputs:f,validHosts:g,validateHostname:b}}const Cz=r2({});function Nz(e){return e===void 0?Cz:r2(e)}function _z(e,a){return a.length===e.length?"":e.slice(0,-a.length-1)}function zz(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function l2(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 c2(e,a,s,r,u){const f=Nz(r);if(typeof e!="string")return u;let g=!1;return f.extractHostname?f.mixedInputs?(g=pb(e),u.hostname=Ur(e,g,f.validateHostname)):u.hostname=Ur(e,!1,f.validateHostname):u.hostname=e,f.detectIp&&u.hostname!==null&&(u.isIp=Sz(u.hostname),u.isIp)?u:f.validateHostname&&f.extractHostname&&u.hostname!==null&&!(g&&u.hostname===e)&&!$p&&!pb(u.hostname)?(u.hostname=null,u):(a===0||u.hostname===null||(a===5&&f.detectSpecialUse&&(u.isSpecialUse=Az(u.hostname)),s(u.hostname,f,u),a===2||u.publicSuffix===null)||(u.domain=vz(u.publicSuffix,u.hostname,f),a===3||u.domain===null)||(u.subdomain=_z(u.hostname,u.domain),a===4)||(u.domainWithoutSuffix=xz(u.domain,u.publicSuffix)),u)}function Ez(e,a,s){if(!a.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 rs=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]),nu=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]),au=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]),hb=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]),Hp="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",Dz=621,Tz=625,u2=rs.length,d2=au.length,m2=new Uint32Array(d2),Zc=new Uint32Array(d2),Kp=new Int32Array(u2).fill(-1);for(let e=0,a=0;e<u2;e+=1)for(let s=nu[e];s<nu[e+1];s+=1){m2[s]=a;const r=a+au[s];let u=5381;for(let f=r-1;f>=a;f-=1)u=u*33^Hp.charCodeAt(f);Zc[s]=u>>>0,au[s]===1&&Hp.charCodeAt(a)===42&&(Kp[e]=s),a=r}let Pa=-1,Qp=0,Zp=0;function fb(e,a,s,r){if(au[e]!==r)return!1;const u=m2[e];for(let f=0;f<r;f+=1)if(Hp.charCodeAt(u+f)!==a.charCodeAt(s+f))return!1;return!0}function gb(e,a,s,r,u){let f=nu[e],g=nu[e+1];for(;f<g;){const b=f+g>>>1,x=Zc[b];if(x<a)f=b+1;else if(x>a)g=b;else{for(let k=b;k>=f&&Zc[k]===a;k-=1)if(fb(k,s,r,u))return k;for(let k=b+1;k<g&&Zc[k]===a;k+=1)if(fb(k,s,r,u))return k;return-1}}return-1}function yb(e,a,s){let r=a,u=e.length,f=5381;Pa=-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=gb(r,f>>>0,e,k,u-k);if(S===-1&&(S=Kp[r]),S===-1)return Pa!==-1;r=hb[S],(rs[r]&s)!==0&&(Pa=r,Qp=k,Zp=u),u=b,f=5381}else f=f*33^x}let g=gb(r,f>>>0,e,0,u);return g===-1&&(g=Kp[r]),g!==-1&&(r=hb[g],(rs[r]&s)!==0&&(Pa=r,Qp=0,Zp=u)),Pa!==-1}function p2(e,a,s){if(Ez(e,a,s))return;const r=(a.allowPrivateDomains?2:0)|(a.allowIcannDomains?1:0);if(yb(e,Tz,r)){s.isIcann=(rs[Pa]&1)!==0,s.isPrivate=(rs[Pa]&2)!==0,s.publicSuffix=e.slice(Zp+1);return}if(yb(e,Dz,r)){s.isIcann=(rs[Pa]&1)!==0,s.isPrivate=(rs[Pa]&2)!==0,s.publicSuffix=e.slice(Qp);return}s.isIcann=!1,s.isPrivate=!1;const u=e.lastIndexOf(".");s.publicSuffix=u===-1?e:e.slice(u+1)}const iu=zz();function Rz(e,a){return l2(iu),c2(e,0,p2,a,iu).hostname}function Oz(e,a){return l2(iu),c2(e,5,p2,a,iu).domainWithoutSuffix}const Bz={allowPrivateDomains:!0};new fz({fuzzyLink:!0,fuzzyEmail:!1}).tlds(gz);function ku(e){if(e==null)return null;const a=e.trim();if(!a)return null;const s=Rz(a);return s?s.replace(/^www\./i,"").toLowerCase():null}function qz(e){return e==null||e.trim()===""?"":Oz(e,Bz)?.toLowerCase()??""}const Mz=new Intl.Segmenter("en",{granularity:"word"}),Pz=/[\p{L}\p{N}]+/gu,Iz=/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}]/u,Vz=new RegExp("\\P{ASCII}","u");function Lz(e){if(!Vz.test(e))return e;let a="";for(const s of e){if(s.charCodeAt(0)<128){a+=s;continue}const r=s.normalize("NFD"),u=r[0];a+=r.length>1&&Iz.test(u)?u:s}return a}function Uz(e){return Lz(e.normalize("NFKC")).toLocaleLowerCase("en")}function Gz(e){const a=[];for(const s of Mz.segment(e))if(s.isWordLike)for(const r of s.segment.match(Pz)??[])a.push(r);return a}function $z(e){return Gz(Uz(e))}function cs(e){return $z(e).join("")}const h2=A(["cli","api","config-file"]);function Hz(e){const a=new Set,s=new Set;for(const r of e){if(a.has(r.label)){s.add(r.label);continue}a.add(r.label)}return[...s]}function Kz(e,a){return a?e.some(s=>s.label===a):!0}const Qz=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:Ve(o(),o()).optional(),providers:y(ht).optional(),providerModels:E0.optional(),locations:y(un).optional(),defaultLocation:o().nullable().optional(),measurement:T0.optional(),autoExtractBacklinks:_().optional(),configSource:h2.optional()});Qz.extend({name:o().trim().min(1).max(120)});const Zz=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:Ve(o(),o()).default({}),providers:y(o()).default([]),providerModels:E0.default({}),locations:y(un).default([]),defaultLocation:o().nullable().optional(),measurement:T0.default(o2),autoExtractBacklinks:_().default(!1),configSource:h2.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:ht,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 Fp(e){return ku(e)??e.trim().toLowerCase().replace(/^www\./,"")}function Fz(e){const a=[e.canonicalDomain,...e.ownedDomains??[]],s=new Set,r=[];for(const u of a){const f=u.trim();if(!f)continue;const g=Fp(f);s.has(g)||(s.add(g),r.push(f))}return r}const Yz=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:Ve(o(),o()).optional().default({})}),Xz=p({preset:o().optional(),cron:o().optional(),timezone:o().optional().default("UTC"),providers:y(ht).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(),Jz=p({channel:O("webhook"),url:o().url(),events:y(D0).min(1)}),Wz=p({gsc:p({propertyUrl:o()}).optional(),syncSchedule:p({preset:o().optional(),cron:o().optional()}).optional()}).optional(),bb=y(o().min(1)),e9=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:bb.optional(),keywords:bb.optional(),competitors:y(o().min(1)).optional().default([]),providers:y(ht).optional().default([]),providerModels:E0.optional().default({}),locations:y(un).optional().default([]),defaultLocation:o().optional(),measurement:T0.optional().default(o2),schedule:Xz,notifications:y(Jz).optional().default([]),google:Wz,autoExtractBacklinks:_().optional().default(!1)}).superRefine((e,a)=>{e.queries!==void 0&&e.keywords!==void 0&&a.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=Hz(e.locations);s.length>0&&a.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${s.join(", ")}`,path:["locations"]}),Kz(e.locations,e.defaultLocation)||a.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})});p({apiVersion:O("canonry/v1"),kind:O("Project"),metadata:Yz,spec:e9});const t9=["branded","non-brand"],n9=A(t9),a9=A(["all","branded","non-brand"]),i9=2,s9=o().regex(/^[a-f0-9]{64}$/),wu=o().trim().min(1).max(256),vb=A(["sensitive","insensitive"]),Se=o().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),o9=o().trim().min(1).refine(e=>ku(e)!==null,"A competitor domain must be a valid hostname"),r9=qe("kind",[p({kind:O("exact"),url:o().min(1),pathCase:vb}).strict(),p({kind:O("prefix"),host:o().min(1),pathPrefix:o().min(1),pathCase:vb}).strict(),p({kind:O("host"),host:o().min(1)}).strict()]),l9=p({canonicalHost:o().min(1),ownedHosts:y(o().min(1)),names:y(o().min(1))}).strict(),c9=p({projectBrand:l9}).strict(),u9=p({stableKey:Se,label:o().trim().min(1),aliases:y(o().min(1)),urlMatchers:y(r9),mentionNotApplicable:_(),discoveryIdentity:o().min(1).nullable()}).strict(),f2=p({stableKey:Se,label:o().trim().min(1),domain:o9,aliases:y(o().min(1))}).strict(),d9=p({stableKey:Se,label:o().trim().min(1),targetKeys:y(Se),competitors:y(f2)}).strict(),m9=A(["manual","query-set","template","discovery"]),p9=p({source:m9,sourceId:o().min(1).nullable(),capturedAt:o().datetime()}).strict(),h9=p({queryId:wu,queryText:o().min(1),provenance:p9}).strict(),f9=p({providers:y(ht).min(1),models:Ve(ht,o().min(1)),location:un.nullable()}).strict(),g9=p({stableKey:o().min(1),queryId:wu,queryText:o().min(1),context:f9,expectedSnapshots:m().int().nonnegative()}).strict(),R0=n9,y9=p({targetKey:Se,queryId:wu,queryClass:R0,executionNodeKey:o().min(1)}).strict(),b9=p({executionNodeKey:o().min(1),targetKey:Se,queryId:wu}).strict(),Su=p({schemaVersion:O(i9),identities:c9,targets:y(u9),groups:y(d9),querySnapshots:y(h9),assignments:y(y9),executionNodes:y(g9),usageEdges:y(b9),compiledChecksum:s9}).strict().superRefine((e,a)=>{const s=new Set;for(const u of e.executionNodes)s.has(u.stableKey)&&a.addIssue({code:Je.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)||a.addIssue({code:Je.custom,path:["usageEdges",f,"executionNodeKey"],message:`Usage edge references unknown execution node "${u.executionNodeKey}"`}),r.has(u.targetKey)||a.addIssue({code:Je.custom,path:["usageEdges",f,"targetKey"],message:`Usage edge references unknown Target "${u.targetKey}"`})}),e.assignments.forEach((u,f)=>{r.has(u.targetKey)||a.addIssue({code:Je.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)||a.addIssue({code:Je.custom,path:["groups"],message:`Group "${u.stableKey}" references unknown Target "${f}"`})}),O0=100;function xo(e){return p({items:y(e),nextCursor:o().min(1).nullable(),totalEstimate:m().int().nonnegative().optional()}).strict()}const B0=A(["no_completed_run","plan_v1","no_population","evidence_incomplete","not_applicable"]),Lt=qe("state",[p({state:O("available"),value:m(),numerator:m().int().nonnegative().optional(),denominator:m().int().positive().optional()}).strict(),p({state:O("unavailable"),reason:B0}).strict()]),q0=A(["all","group","property"]),la=a9,v9=A(["label-asc","label-desc","citationCoverage-asc","citationCoverage-desc","mentionCoverage-asc","mentionCoverage-desc"]),M0=A(["not_measured","queued","running","complete","partial","failed"]),x9=A(["run_measurement","review_flags","complete_setup","republish_setup","none"]);p({scope:q0,groupKey:Se.optional(),targetKey:Se.optional(),queryClass:la.optional(),provider:ht.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:v9.optional(),cursor:o().trim().min(1).optional(),limit:m().int().positive().max(O0).optional()}).strict();const k9=p({provider:ht,mentionCoverage:Lt,citationCoverage:Lt}).strict(),w9=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(),S9=p({targetKey:Se,label:o().min(1),mentionCoverage:Lt,citationCoverage:Lt,providers:y(k9),flags:m().int().nonnegative()}).strict(),j9=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(),A9=p({groupKey:Se,queryClass:O("non-brand"),denominator:m().int().positive(),entries:y(j9)}).strict();p({mode:A(["active-v1","active-v2"]),scope:p({kind:q0,key:o().min(1).optional(),label:o().min(1)}).strict(),queryClass:la,measurement:p({state:M0,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:x9,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:xo(S9),outcomes:w9,flags:p({total:m().int().nonnegative()}).strict(),namedShareOfVoice:A9.optional()}).strict();const g2=A(["sources","answers"]),C9=g2.enum;C9.sources;p({targetKey:Se,queryClass:la.optional(),provider:ht.optional(),location:o().trim().min(1).optional(),runId:o().trim().min(1).optional(),shape:g2.optional(),cursor:o().trim().min(1).optional(),limit:m().int().positive().max(O0).optional()}).strict();const y2=1,al=m().int().positive(),Ut=o().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),il=o().trim().min(1).max(256),xb=A(["sensitive","insensitive"]);function su(e){const a=ku(e);if(!a)throw new Error(`Invalid measurement host: ${e}`);return a}function N9(e){const a=[];let s=!1;for(let r=0;r<e.length;r++){const u=e[r];u==="/"?(s||a.push(u),s=!0):(a.push(u),s=!1)}for(;a.length>1&&a.at(-1)==="/";)a.pop();return a.length?a.join(""):"/"}function kb(e){try{return decodeURI(e).normalize("NFC").toLowerCase()}catch{return e.normalize("NFC").toLowerCase()}}function b2(e){const a=new URL(`https://measurement.invalid${e}`).pathname;return N9(a.replace(/%[0-9a-f]{2}/gi,s=>s.toUpperCase()))}function Yp(e){const a=e.trim();if(!a||a.includes("?")||a.includes("#")||a.includes("://")||a.includes("\\"))throw new Error(`Invalid measurement path prefix: ${e}`);const s=a.startsWith("/")?a:`/${a}`;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 b2(s)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}}function _9(e){const a=/^[a-z][a-z0-9+.-]*:\/\/[^/?#]*/i.exec(e);if(!a)throw new Error(`Invalid exact measurement URL: ${e}`);return e.slice(a[0].length).split(/[?#]/,1)[0]||"/"}function wb(e){const a=e.trim();if(!a||a.includes("\\"))throw new Error(`Invalid exact measurement URL: ${e}`);let s;try{s=new URL(a)}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=su(s.hostname),u=Yp(_9(a));return`https://${r}${u}`}const Yr=o().trim().min(1).refine(e=>{try{return su(e),!0}catch{return!1}},"A target URL matcher host must be a valid hostname").overwrite(e=>su(e)),z9=o().trim().min(1).refine(e=>{try{return Yp(e),!0}catch{return!1}},"A target URL matcher pathPrefix must be an absolute path without query or fragment").overwrite(e=>Yp(e)),E9=o().trim().min(1).refine(e=>{try{return wb(e),!0}catch{return!1}},"A target exact matcher must be an HTTP(S) URL without credentials, port, query, or fragment").overwrite(e=>wb(e)),D9=qe("kind",[p({kind:O("exact"),url:E9,pathCase:xb}).strict(),p({kind:O("prefix"),host:Yr,pathPrefix:z9,pathCase:xb}).strict(),p({kind:O("host"),host:Yr}).strict()]),v2=o().trim().min(1).max(256).refine(e=>cs(e).length>0,"A target alias must contain mention text"),T9=Ve(o().trim().min(1),o()),R9=Yr,x2=p({stableKey:Ut,label:o().trim().min(1),urls:y(D9).min(1),aliases:y(v2),metadata:T9.optional()}).strict(),P0=p({stableKey:Ut,label:o().trim().min(1),targetKeys:y(Ut).min(1),competitors:y(R9).optional()}).strict(),k2=p({targetKey:Ut,queryIds:y(il).min(1),context:un.nullable().optional()}).strict();function O9(e,a){return e<a?-1:e>a?1:0}function B9(e,a=s=>s){const s=new Set,r=new Set;for(const u of e){const f=a(u);s.has(f)&&r.add(f),s.add(f)}return r}function fp(e,a,s,r,u){for(const f of B9(a,u))e.addIssue({code:"custom",path:[...s],message:`Duplicate ${r}: ${f}`})}function Sb(e){if(e.kind==="host")return{host:e.host,pathname:null};if(e.kind==="prefix")return{host:e.host,pathname:e.pathPrefix};const a=new URL(e.url);return{host:su(a.hostname),pathname:b2(a.pathname||"/")}}function q9(e,a,s,r){return e===s||(a==="insensitive"||r==="insensitive")&&kb(e)===kb(s)}function M9(e,a){if(e.kind!==a.kind)return!1;const s=Sb(e),r=Sb(a);return s.host!==r.host?!1:e.kind==="host"||a.kind==="host"?!0:q9(s.pathname,e.pathCase,r.pathname,a.pathCase)}function P9(e){const a=new Set;return[...e].sort(O9).filter(s=>{const r=cs(s);return a.has(r)?!1:(a.add(r),!0)})}const w2=p({schemaVersion:O(y2),targets:y(x2).min(1),groups:y(P0).optional(),targetQuerySelections:y(k2).optional()}).strict().superRefine((e,a)=>{const s=e.groups??[],r=e.targetQuerySelections??[];fp(a,e.targets.map(x=>x.stableKey),["targets"],"target stable key"),fp(a,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)&&a.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 P9(x.aliases)){const C=cs(S),j=g.get(C);j&&j!==x.stableKey&&a.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(D=>D.targetKey!==x.stableKey&&M9(D.matcher,S))&&a.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)=>{fp(a,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)||a.addIssue({code:"custom",path:["groups",k,"targetKeys",S],message:`Unknown target: ${C}`})}}),r.forEach((x,k)=>{u.has(x.targetKey)||a.addIssue({code:"custom",path:["targetQuerySelections",k,"targetKey"],message:`Unknown target: ${x.targetKey}`})})});w2.transform(e=>({...e,groups:e.groups??[],targetQuerySelections:e.targetQuerySelections??[]}));p({expectedActiveRevision:al.nullable(),plan:w2}).strict();const I9=p({queryId:il,queryText:o().min(1)}).strict(),I0=p({stableKey:o().min(1),queryText:o().min(1),context:un.nullable(),expectedSnapshots:m().int().nonnegative()}).strict(),V9=p({kind:O("baseline"),executionNodeKey:o().min(1),queryId:il}).strict(),L9=p({kind:O("target"),executionNodeKey:o().min(1),queryId:il,targetKey:Ut}).strict(),Xp=qe("kind",[V9,L9]),S2=p({code:O("target-alias-prefix-overlap"),message:o().min(1),targetKeys:y(Ut).min(1),aliases:y(o().min(1)).min(1)}).strict(),j2=x2.extend({mentionNotApplicable:_()}),A2=p({schemaVersion:O(y2),defaultContext:un.nullable(),effectiveOwnedHosts:y(Yr),projectCanonicalHost:Yr,projectBrandNames:y(v2),targets:y(j2),groups:y(P0),targetQuerySelections:y(k2),querySnapshots:y(I9),executionNodes:y(I0),usageEdges:y(Xp),warnings:y(S2)}).strict(),U9=A2,C2=qe("schemaVersion",[A2,Su]),V0=o().regex(/^[a-f0-9]{64}$/),L0=o().datetime(),N2=p({schemaVersion:O(1),providers:y(o().min(1)).min(1),models:Ve(o().min(1),o().min(1)),checksum:o().regex(/^[a-f0-9]{64}$/)}).strict(),G9=p({groups:y(Ut).optional(),targets:y(Ut).optional()}).strict(),$9=p({groups:y(Ut),targets:y(Ut),queries:y(o().min(1)),resolvedTargets:y(Ut)}).strict().superRefine((e,a)=>{e.resolvedTargets.length===0&&e.queries.length===0&&a.addIssue({code:"custom",path:["resolvedTargets"],message:"A recorded scope must name something it measured"})});p({stableKey:Ut,retiredAt:o().datetime()});p({active:p({revision:al,checksum:V0,createdAt:L0,plan:C2}).nullable()});p({versions:y(p({revision:al,checksum:V0,createdAt:L0,active:_()}))});p({version:p({revision:al,checksum:V0,createdAt:L0,active:_(),plan:C2})});const Fc=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(),H9=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"]),_2=p({id:H9,severity:A(["fail","warn"]),message:o().min(1),path:y(Le([o(),m().int()]))}).strict(),K9=p({baseline:m().int().nonnegative(),target:m().int().nonnegative()}).strict(),z2=p({ok:O(!0),checks:y(_2),executionNodes:y(I0),dedupSaved:m().int().nonnegative(),usageEdges:K9,estCostUsd:le(),plan:U9,warnings:y(S2),counts:Fc}).strict(),E2=p({ok:O(!1),checks:y(_2).min(1),executionNodes:y(I0).length(0),dedupSaved:O(0),usageEdges:p({baseline:O(0),target:O(0)}).strict(),estCostUsd:le()}).strict();qe("ok",[z2,E2]);const Mc=p({targetKey:Ut,context:un.nullable(),queryIds:y(il)}).strict();function jb(e){return p({added:y(e),removed:y(e),changed:y(p({stableKey:Ut,before:e,after:e}).strict()),unchanged:y(Ut)}).strict()}const Q9=z2.extend({diff:p({activeRevision:al.nullable(),targets:jb(j2),groups:jb(P0),querySelections:p({added:y(Mc),removed:y(Mc),changed:y(p({targetKey:Ut,before:Mc,after:Mc}).strict()),unchanged:y(p({targetKey:Ut,context:un.nullable()}).strict())}).strict(),execution:p({addedNodeKeys:y(o().min(1)),removedNodeKeys:y(o().min(1)),addedUsageEdges:y(Xp),removedUsageEdges:y(Xp),counts:p({before:Fc.nullable(),after:Fc,delta:Fc.nullable()}).strict()}).strict()}).strict()}).strict(),Z9=E2.extend({diff:le()}).strict();qe("ok",[Q9,Z9]);const ju=A(["complete","partial","failed","unsupported"]);ju.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 F9=A(["invalid-url","unowned-host","duplicate-url","url-cap-reached"]),Y9=p({kind:A(["exact","prefix","suffix","contains"]),value:o().trim().min(1)}).strict(),Ab=p({host:o().trim().min(1),pathTemplate:o().trim().min(1)}).strict(),U0=p({primary:Ab,aliases:y(Ab).optional(),excludedSlugSuffixes:y(o().trim().min(1)).optional(),excludedSlugPatterns:y(Y9).optional()}).strict();p({sitemapUrl:o().url().refine(e=>{try{const a=new URL(e).protocol;return a==="http:"||a==="https:"}catch{return!1}},"Sitemap URL must use http or https"),rule:U0,maxUrls:m().int().positive().max(1e4).optional()}).strict();const gp=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,a)=>{({shared:["shared-path"],unmatched:["unmatched-path","alias-without-primary","unsupported-slug"],excluded:["excluded-slug"]})[e.classification].includes(e.reason)||a.addIssue({code:"custom",message:"Discovery classification and reason do not match"})}),X9=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(),J9=p({classification:O("alias"),reason:O("exact-slug-match"),slug:o().trim().min(1),url:o().url(),targetStableKey:Ut}).strict(),W9=p({kind:F9,url:o(),canonicalUrl:o().nullable(),duplicateOf:o().optional()}).strict();p({proposed:y(X9),aliases:y(J9),shared:y(gp),unmatched:y(gp),excluded:y(gp),diagnostics:y(W9)}).strict().superRefine((e,a)=>{const s=[["shared",["shared"]],["unmatched",["unmatched"]],["excluded",["excluded"]]];for(const[r,u]of s)for(const f of e[r])u.includes(f.classification)||a.addIssue({code:"custom",path:[r],message:"Discovery item is in the wrong result bucket"})});const G0=A(["assigned","sibling","ownedUnmapped","external","ambiguous","invalid"]),D2=A(["baseline","target"]),T2=A(["incomplete","evidence-incomplete","no-population","aliasless","no-competitors","no-project-aliases"]),us=Le([p({numerator:m().int().nonnegative(),denominator:m().int().positive(),rate:m().min(0).max(1)}).strict(),p({numerator:le(),denominator:le(),rate:le(),reason:T2}).strict()]).superRefine((e,a)=>{e.numerator!==null&&e.numerator>e.denominator&&a.addIssue({code:"custom",path:["numerator"],message:"Rate numerator cannot exceed denominator"})}),eE=o().trim().min(1).overwrite(e=>e.toLocaleLowerCase("en")),tE=p({executionId:o().trim().min(1),queryText:o().trim().min(1),provider:eE,context:un.nullable(),requestedModel:o().trim().min(1).optional()}).strict();p({schemaVersion:O(1),expectedSlots:y(tE)}).strict().superRefine((e,a)=>{const s=new Set;for(const[r,u]of e.expectedSlots.entries()){const f=[u.executionId,u.provider].join("\0");s.has(f)&&a.addIssue({code:"custom",path:["expectedSlots",r],message:"Duplicate expected provider slot"}),s.add(f)}});const Au=p({executed:m().int().nonnegative(),expected:m().int().nonnegative(),complete:_(),sourceComplete:_(),sourceCompleteObservations:m().int().nonnegative(),answerComplete:_()}).strict(),Cb=Le([p({domain:o().trim().min(1),own:_(),presentIn:m().int().nonnegative(),of:m().int().positive()}).strict(),p({domain:o().trim().min(1),own:_(),presentIn:le(),of:le(),reason:T2}).strict()]),nE=p({domains:y(Cb),providers:y(p({provider:ht,domains:y(Cb)}).strict())}).strict(),aE=p({provider:ht,completeness:Au,answerCoverage:us}).strict(),iE=p({id:o().trim().min(1),label:o().trim().min(1),targetIds:y(o().trim().min(1)),completeness:Au,answerCoverage:us,targetCoverage:us,sov:nE,providers:y(aE)}).strict(),sE=p({provider:ht,completeness:Au,citationCoverage:us,mentionCoverage:us}).strict(),oE=p({id:o().trim().min(1),label:o().trim().min(1),completeness:Au,citationCoverage:us,mentionCoverage:us,providers:y(sE)}).strict(),R2=p({observationId:o().trim().min(1),expectedSlotId:o().trim().min(1),executionId:o().trim().min(1),usageEdgeId:o().trim().min(1),usageEdgeType:D2,provider:ht,queryText:o().trim().min(1),location:o().nullable(),sourceUrl:o(),bridged:_(),historical:_(),evidenceComplete:_(),classification:G0,normalizedUrl:o().nullable(),matchedTargetIds:y(o().trim().min(1)),matchedUrlIds:y(o().trim().min(1))}).strict(),rE=p({sourceUrl:o(),normalizedUrl:o().nullable(),classification:G0,matchedTargetIds:y(o().trim().min(1)),matchedUrlIds:y(o().trim().min(1))}).strict(),lE=p({observationId:o().trim().min(1),expectedSlotId:o().trim().min(1),executionId:o().trim().min(1),usageEdgeId:o().trim().min(1),usageEdgeType:D2,provider:ht,queryText:o().trim().min(1),location:o().nullable(),queryClass:Le([A(["branded","non-brand"]),le()]),mentioned:_().nullable(),cited:_().nullable(),sources:y(rE),sourceCount:m().int().nonnegative(),sourcesTruncated:_(),bridged:_(),historical:_(),evidenceComplete:_()}).strict(),cE=p({bridgedObservationIds:y(o()),historicalObservationIds:y(o()),evidenceIncompleteObservationIds:y(o()),ambiguousObservationIds:y(o()),unmatchedObservationIds:y(o())}).strict(),uE=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:uE.nullable(),groups:y(iE),targets:y(oE),evidence:y(R2),diagnostics:cE}).strict();p({property:p({targetKey:Se,label:o().min(1)}).strict(),queryClass:la,measurement:p({state:M0,displayedRunId:o().min(1).optional(),completedAt:o().datetime().optional()}).strict(),evidence:xo(R2).optional(),answers:xo(lE).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 $0=A(["used","not-used","unknown","not-applicable"]);$0.enum;const H0=A(["native-auto-v1","search-required-v1"]);H0.enum;const oa=o().trim().min(1),sl=o().trim().min(1),dE=o().trim().min(1),at=m().int().nonnegative(),ol=p({state:M0,displayedRunId:oa.nullable(),planRevision:m().int().positive(),completedAt:o().datetime().nullable()}).strict(),rl=p({targetKey:Se,label:sl}).strict(),Bn={runId:oa.optional(),provider:ht.optional(),location:dE.optional()},Xr=o().trim().min(1);p({runId:Bn.runId,groupKey:Se.optional(),queryClass:la.default("non-brand"),provider:Bn.provider,location:Bn.location,limit:m().int().positive().max(50).optional()}).strict();const mE=rl.extend({mentionCoverage:Lt,citationCoverage:Lt,flags:at,recommendedInstead:y(p({name:Xr,occurrences:at}).strict()).max(5),recommendedInsteadTotal:at,recommendedInsteadTruncated:_()}).strict().superRefine((e,a)=>{e.recommendedInstead.length>e.recommendedInsteadTotal&&a.addIssue({code:Je.custom,path:["recommendedInsteadTotal"],message:"Total cannot be smaller than the returned replacements"}),e.recommendedInsteadTruncated!==e.recommendedInstead.length<e.recommendedInsteadTotal&&a.addIssue({code:Je.custom,path:["recommendedInsteadTruncated"],message:"Truncation must agree with the replacement total"})}),pE=p({groupKey:Se,label:sl,propertyCount:at,propertiesMentioned:Lt,mentionCoverage:Lt,citationCoverage:Lt}).strict();p({portfolio:p({groupKey:Se.nullable(),label:sl.nullable(),measurementScope:Le([A(["full","spot_check"]),le()])}).strict(),measurement:ol,queryClass:la,metrics:p({propertiesMentioned:Lt,mentionCoverage:Lt,citationCoverage:Lt}).strict(),weakestProperties:y(mE),markets:y(pE),totalProperties:at,truncated:_()}).strict();p({targetKey:Se,runId:Bn.runId,provider:Bn.provider,location:Bn.location,queryClass:la.optional(),offset:m().int().nonnegative().optional(),limit:m().int().positive().max(100).optional()}).strict();A(["answered","missing"]);const Jp={queryId:oa,text:sl,class:R0,provider:ht,requestedModel:o().nullable(),servedModel:o().nullable(),location:o().nullable()},hE=qe("status",[p({resultId:oa,...Jp,status:O("answered"),mentioned:_().nullable(),cited:_().nullable(),recommendedInstead:y(Xr),answerExcerpt:o().nullable()}).strict(),p({resultId:le(),...Jp,status:O("missing"),mentioned:le(),cited:le(),recommendedInstead:y(Xr).length(0),answerExcerpt:le()}).strict()]);p({property:rl,measurement:ol,queryClass:la,questions:y(hE),total:at,truncated:_()}).strict();p({targetKey:Se,resultId:oa}).strict();const fE=p({url:oa,classification:G0,matchedTargetKeys:y(Se),assigned:_(),historical:_(),evidenceComplete:_()}).strict().superRefine((e,a)=>{e.assigned!==(e.classification==="assigned")&&a.addIssue({code:Je.custom,path:["assigned"],message:"Assigned must agree with the source attribution classification"})});p({property:rl,measurement:ol,question:p({resultId:oa,...Jp,status:O("answered")}).strict(),mentioned:_().nullable(),cited:_().nullable(),recommendedInstead:y(Xr),answer:o().nullable(),sources:y(fE),captureStatus:Le([ju,le()]),retrievalStatus:Le([$0,le()]),retrievalContract:Le([H0,le()])}).strict();p({targetKey:Se,runId:Bn.runId,provider:Bn.provider,location:Bn.location,queryClass:la.optional(),limit:m().int().positive().max(50).optional()}).strict();const gE=qe("state",[p({state:O("available"),answeredResults:at,targetMissResults:at,recommendationOccurrences:at}).strict(),p({state:O("unavailable"),reason:B0}).strict()]),yE=p({name:Xr,occurrences:at,providers:y(ht).max(5),providerTotal:at,providersTruncated:_(),questions:y(sl).max(5),questionTotal:at,questionsTruncated:_()}).strict().superRefine((e,a)=>{(e.providers.length>e.providerTotal||e.questions.length>e.questionTotal)&&a.addIssue({code:Je.custom,message:"Evidence totals cannot be smaller than returned evidence"}),e.providersTruncated!==e.providers.length<e.providerTotal&&a.addIssue({code:Je.custom,path:["providersTruncated"],message:"Provider truncation must agree with its total"}),e.questionsTruncated!==e.questions.length<e.questionTotal&&a.addIssue({code:Je.custom,path:["questionsTruncated"],message:"Question truncation must agree with its total"})});p({property:rl,measurement:ol,queryClass:la,basis:gE,competitors:y(yE),total:at,truncated:_()}).strict();p({runId:Bn.runId,scope:q0.default("all"),groupKey:Se.optional(),targetKey:Se.optional(),queryClass:la.default("all"),provider:Bn.provider,location:Bn.location,limit:m().int().positive().max(50).optional()}).strict().superRefine((e,a)=>{e.scope==="all"&&(e.groupKey!==void 0||e.targetKey!==void 0)&&a.addIssue({code:Je.custom,path:["scope"],message:"All scope cannot name a group or Property"}),e.scope==="group"&&(e.groupKey===void 0||e.targetKey!==void 0)&&a.addIssue({code:Je.custom,path:["groupKey"],message:"Group scope requires groupKey only"}),e.scope==="property"&&(e.targetKey===void 0||e.groupKey!==void 0)&&a.addIssue({code:Je.custom,path:["targetKey"],message:"Property scope requires targetKey only"})});const O2=A(["no_previous_run","execution_identity_changed","incomplete","not_comparable"]),B2=ol.extend({executionIdentity:oa.nullable(),measurementScope:Le([A(["full","spot_check"]),le()])}).strict(),Rr=qe("state",[p({state:O("available"),previous:Lt,current:Lt,delta:m()}).strict().superRefine((e,a)=>{if(e.previous.state!=="available"||e.current.state!=="available"){a.addIssue({code:Je.custom,message:"Available deltas require two available metrics"});return}Math.abs(e.delta-(e.current.value-e.previous.value))>Number.EPSILON&&a.addIssue({code:Je.custom,path:["delta"],message:"Delta must equal current minus previous"})}),p({state:O("unavailable"),reason:B0}).strict()]);p({current:B2,comparison:qe("state",[p({state:O("available"),previous:p({displayedRunId:oa,planRevision:m().int().positive(),completedAt:o().datetime().nullable(),executionIdentity:oa,measurementScope:A(["full","spot_check"])}).strict(),metrics:p({propertiesMentioned:Rr,mentionCoverage:Rr,citationCoverage:Rr}).strict(),changedProperties:y(rl.extend({mentionCoverage:Rr,citationCoverage:Rr,flags:at}).strict()),totalProperties:at,truncated:_()}).strict(),p({state:O("unavailable"),reason:O2}).strict()])}).strict().superRefine((e,a)=>{if(e.comparison.state==="available"){if(e.current.displayedRunId===null||e.current.executionIdentity===null){a.addIssue({code:Je.custom,path:["current"],message:"A comparison requires an identified current run"});return}e.comparison.previous.planRevision!==e.current.planRevision&&a.addIssue({code:Je.custom,path:["comparison","previous","planRevision"],message:"Comparisons cannot cross plan revisions"}),e.comparison.previous.executionIdentity!==e.current.executionIdentity&&a.addIssue({code:Je.custom,path:["comparison","previous","executionIdentity"],message:"Comparisons cannot cross execution identities"})}});p({runId:Bn.runId}).strict();const bE=A(["no_completed_run","incomplete","evidence_incomplete","no_population","not_applicable"]),Cu=p({state:O("unavailable"),reason:bE}).strict(),vE=p({state:O("available"),expected:at,executed:at,answered:at,missing:at}).strict(),xE=qe("state",[vE,Cu]).superRefine((e,a)=>{e.state==="available"&&(e.executed+e.missing!==e.expected&&a.addIssue({code:Je.custom,message:"Expected must equal executed plus missing"}),e.answered>e.executed&&a.addIssue({code:Je.custom,path:["answered"],message:"Answered cannot exceed executed"}))}),kE=p({state:O("available"),complete:at,partial:at,failed:at,unsupported:at,notRecorded:at}).strict(),wE=qe("state",[kE,Cu]),SE=p({state:O("available"),used:at,notUsed:at,unknown:at,notApplicable:at,notRecorded:at}).strict(),jE=qe("state",[SE,Cu]),AE=p({state:O("available"),expectedQuestions:at,answeredQuestions:at,missingQuestions:at}).strict(),CE=qe("state",[AE,Cu]).superRefine((e,a)=>{e.state==="available"&&e.answeredQuestions+e.missingQuestions!==e.expectedQuestions&&a.addIssue({code:Je.custom,message:"Expected questions must equal answered plus missing"})});p({run:B2,completeness:xE,capture:wE,retrieval:jE,population:CE,comparison:qe("state",[p({state:O("available"),previousDisplayedRunId:oa}).strict(),p({state:O("unavailable"),reason:O2}).strict()])}).strict().superRefine((e,a)=>{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&&a.addIssue({code:Je.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&&a.addIssue({code:Je.custom,path:["retrieval"],message:"Retrieval counts must total executed snapshots"})});const ko=o().regex(/^[a-f0-9]{64}$/),ra=o().trim().min(1).max(256),zi=m().int().positive(),Nb=p({kind:A(["user","api-key","system"]),id:o().trim().min(1),label:o().trim().min(1)}).strict(),NE=A(["proposed","included","excluded"]),_E=A(["manual","sitemap"]),K0=p({stableKey:Se,label:o().trim().min(1),status:NE,aliases:y(o().trim().min(1)),urlMatchers:y(o().trim().min(1)),source:_E,discoveredUrl:o().trim().min(1).optional(),discoveryIdentity:o().trim().min(1).optional()}).strict(),Nu=p({providers:y(ht).optional(),models:Ve(ht,o().trim().min(1)).optional(),locations:y(o().trim().min(1)).optional()}).strict(),zE=A(["branded","non-brand","unclassified"]),EE=A(["rule","operator"]),q2=p({targetKey:Se,queryId:ra,contextOverride:Nu.optional(),queryClass:zE,classificationSource:EE}).strict(),Q0=f2,M2=p({stableKey:Se,label:o().trim().min(1),targetKeys:y(Se),competitors:y(Q0)}).strict(),DE=p({sitemapUrl:o().url(),rule:U0,exclusions:y(o().trim().min(1)),inputChecksum:ko,reviewedAt:o().datetime().optional()}).strict(),TE=p({providers:y(ht),models:Ve(ht,o().trim().min(1)).optional(),locations:y(o().trim().min(1))}).strict(),RE=p({defaultContext:TE,targets:y(K0),assignments:y(q2),groups:y(M2),discovery:DE.optional()}).strict(),OE=p({id:o().trim().min(1),projectId:o().trim().min(1),schemaVersion:O(2),baseActiveVersionId:o().trim().min(1).nullable(),baseActiveRevision:zi.nullable(),authoring:RE,createdBy:Nb,updatedBy:Nb,createdAt:o().datetime(),updatedAt:o().datetime()}).strict(),Z0=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(),BE=p({code:o().trim().min(1),message:o().trim().min(1),path:y(Le([o(),m().int()]))}).strict(),qE=p({etag:o().trim().min(1),changed:_(),warnings:y(BE),counts:Z0}).strict();p({draft:OE.nullable(),etag:o().trim().min(1).nullable()}).strict();xo(K0);xo(q2);xo(M2);p({search:o().optional(),cursor:o().trim().min(1).optional(),limit:m().int().positive().max(O0).optional()}).strict();p({expectedActiveRevision:zi.nullable()}).strict();p({sitemapUrl:o().url(),rule:U0,exclusions:y(o().trim().min(1)).optional()}).strict();const ME=p({discoveryIdentity:o().trim().min(1),action:A(["create","rebind","ignore"]),targetKey:Se.optional(),label:o().trim().min(1).optional()}).strict();p({selections:y(ME),selectedTargetKeys:y(Se).optional()}).strict().superRefine((e,a)=>{e.selections.length===0&&e.selectedTargetKeys===void 0&&a.addIssue({code:"custom",message:"A proposal or reviewed Property selection is required."}),e.selectedTargetKeys&&new Set(e.selectedTargetKeys).size!==e.selectedTargetKeys.length&&a.addIssue({code:"custom",path:["selectedTargetKeys"],message:"Property keys must be unique."})});p({target:K0}).strict();p({targetKey:Se,label:o().trim().min(1)}).strict();p({targetKey:Se,mergedKeys:y(Se).min(1)}).strict();p({targetKey:Se,cleanup:O("assignments-and-group-memberships").optional()}).strict();p({targetKey:Se,discoveryIdentity:o().trim().min(1),discoveredUrl:o().url()}).strict();const P2={targetKeys:y(Se).optional(),groupKeys:y(Se).optional()};function I2(e,a){(e.targetKeys?.length??0)===0&&(e.groupKeys?.length??0)===0&&a.addIssue({code:"custom",message:"At least one Target or group selector is required."})}p(P2).strict().superRefine(I2);const PE=p({...P2,queryIds:y(ra).min(1),contextOverride:Nu.optional()}).strict().superRefine(I2);Le([p({targetKey:Se,queryIds:y(ra).min(1),contextOverride:Nu.optional()}).strict(),PE]);const IE=p({groupKey:Se,label:o().trim().min(1),memberCount:m().int().positive()}).strict();p({draftEtag:o().trim().min(1),groups:y(IE),resolvedTargetKeys:y(Se),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:Se,queryId:ra}).strict()).min(1),contextOverride:Nu.optional()}).strict();Le([p({targetKey:Se,queryId:ra}).strict(),p({targetKeys:y(Se).min(1),queryId:ra}).strict()]);p({targetKey:Se}).strict();p({queryClass:R0,assignments:y(p({targetKey:Se,queryId:ra}).strict()).min(1)}).strict();p({group:p({stableKey:Se,label:o().trim().min(1),targetKeys:y(Se),competitors:y(Q0).optional()}).strict()}).strict();p({groupKey:Se}).strict();p({groupKey:Se,competitor:Q0}).strict();p({groupKey:Se,competitorKey:Se}).strict();const ou=p({ruleId:o().trim().min(1),severity:A(["fail","warn"]),message:o().trim().min(1),path:y(Le([o(),m().int()]))}).strict();qe("ok",[p({ok:O(!0),compiledChecksum:ko,checks:y(ou),counts:Z0,plan:Su}).strict(),p({ok:O(!1),compiledChecksum:le(),checks:y(ou).min(1)}).strict()]);const _b=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(),VE=p({activeRevision:zi.nullable(),targets:_b,groups:_b,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();qe("ok",[p({ok:O(!0),compiledChecksum:ko,checks:y(ou),counts:Z0,plan:Su,diff:VE}).strict(),p({ok:O(!1),compiledChecksum:le(),checks:y(ou).min(1),diff:le()}).strict()]);p({expectedActiveRevision:zi.nullable(),expectedCompiledChecksum:ko}).strict();p({published:_(),active:p({revision:zi,checksum:ko,compiledChecksum:ko,createdAt:o().datetime(),plan:Su}).strict()}).strict();p({discarded:_()}).strict();p({expectedActiveRevision:zi}).strict();p({deactivated:_(),previousRevision:zi.nullable()}).strict();const LE=A(["republish_required","setup_in_progress","awaiting_first_run","operational","simple"]),UE=A(["republish_setup","continue_setup","run_measurement","view_measurement","start_setup"]),GE=A(["simple","draft-only","active-v1","active-v2"]);p({state:LE,nextAction:UE,mode:GE,activeRevision:zi.nullable(),activeSchemaVersion:Le([O(1),O(2)]).nullable(),draft:p({etag:o().trim().min(1),updatedAt:o().datetime()}).strict().nullable()}).strict();const V2=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(),$E=p({queryId:ra,queryText:o().min(1),position:m().int().nonnegative()}).strict();V2.extend({items:y($E)}).strict();p({querySets:y(V2)}).strict();p({name:o().trim().min(1),description:o().nullable().optional(),queryIds:y(ra)}).strict();const HE=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(HE)}).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(Ve(o().trim().min(1),o().trim().min(1))).min(1),querySetId:o().trim().min(1).optional()}).strict();p({created:y(p({queryId:ra,queryText:o().min(1)}).strict()),existing:y(p({queryId:ra,queryText:o().min(1)}).strict())}).strict();const ru=o().regex(/^[a-f0-9]{64}$/),_u=m().int().positive();p({stableKey:Se,kind:A(["target","group"]),retiredAt:o().datetime().nullable()}).strict();p({csv:o()}).strict();A(["matched","ambiguous","unmatched","invalid","duplicate","proposed","excluded"]);const KE=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"]),Wp=p({dataRow:_u,property:o(),group:o(),url:o().nullable(),normalizedProperty:o(),normalizedGroupLabel:o()}).strict(),Or=Wp.extend({reason:KE}),QE=p({source:A(["draft-target","draft-group","persisted-segment","retired-segment","proposed-group"]),stableKey:Se,kind:A(["target","group"]).optional(),retiredAt:o().datetime().nullable().optional(),normalizedGroupLabel:o().optional()}).strict(),ZE=p({proposedGroupKey:Se,evidence:y(QE).min(1)}).strict(),FE=qe("status",[Wp.extend({status:O("matched"),targetKey:Se,groupKey:Se}).strict(),Or.extend({status:O("ambiguous"),candidateTargetKeys:y(Se).min(1).optional(),candidateGroupKeys:y(Se).min(1).optional()}).strict(),Or.extend({status:O("unmatched")}).strict(),Or.extend({status:O("invalid"),groupKeyConflict:ZE.optional()}).strict(),Wp.extend({status:O("duplicate"),duplicateOfRow:_u,targetKey:Se,groupKey:Se}).strict(),Or.extend({status:O("proposed"),targetKey:Se}).strict(),Or.extend({status:O("excluded"),targetKey:Se}).strict()]),YE=p({normalizedGroupLabel:o(),groupKey:Se,label:o().trim().min(1),action:A(["create","extend"]),matchedRows:y(_u),targetKeys:y(Se),addedTargetKeys:y(Se),unchangedTargetKeys:y(Se)}).strict(),XE=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:ru,previewChecksum:ru,rows:y(FE),groupChanges:y(YE),counts:XE}).strict();p({csv:o(),sourceChecksum:ru,previewChecksum:ru,acceptedRows:y(_u).min(1)}).strict().superRefine((e,a)=>{new Set(e.acceptedRows).size!==e.acceptedRows.length&&a.addIssue({code:"custom",path:["acceptedRows"],message:"Accepted CSV data rows must be unique."})});qE.extend({appliedRows:m().int().nonnegative(),addedMemberships:m().int().nonnegative(),unchangedMemberships:m().int().nonnegative()}).strict();const L2=A(["introduced","repointed","retired"]),JE=L2.enum;p({modelId:o().trim().min(1),date:o().regex(/^\d{4}-\d{2}-\d{2}$/,"date must be YYYY-MM-DD"),kind:L2,confirmed:_(),sourceUrl:o().url(),note:o().min(1)});const WE=[{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.'}];JE.repointed;new Set(WE.map(e=>e.modelId.toLowerCase()));const eD=A(["not-exposed","no-known-change","known-change"]);eD.enum;const tD=p({modelId:o().trim().min(1),date:o().regex(/^\d{4}-\d{2}-\d{2}$/),confirmed:_(),sourceUrl:o().url()}),nD=p({status:A(["no-known-change","known-change"]),modelIds:y(o().trim().min(1)).min(1),changes:y(tD),changeCount:m().int().nonnegative(),unverifiedChangeCount:m().int().nonnegative(),firstChangeDate:o().optional(),lastChangeDate:o().optional(),knownGoodAsOf:o(),checkedThroughPeriodEnd:_()}),aD={openai:"ChatGPT",chatgpt:"ChatGPT",anthropic:"Claude",claude:"Claude",google:"Gemini",gemini:"Gemini",perplexity:"Perplexity"};function iD(e){const a=e.trim().toLowerCase();return aD[a]??e.charAt(0).toUpperCase()+e.slice(1)}function yp(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):0}function Br(e){return typeof e=="string"&&e.trim().length>=10?e.trim().slice(0,10):null}function bp(e){return[...new Set(e.filter(a=>a!==null))].sort()}function sD(e,a){const s=iD(e),r=Array.isArray(a.changes)?a.changes:[],u=yp(a.changeCount)||r.length,f=Math.min(u,yp(a.unverifiedChangeCount)||yp(a.unconfirmedChangeCount)||r.filter(S=>S.confirmed===!1).length),g=Br(a.knownGoodAsOf),b=a.checkedThroughPeriodEnd!==!1,x={engine:s,confirmedCount:u-f,unconfirmedCount:f,knownGoodAsOf:g,checkedThroughPeriodEnd:b};if(r.length>0)return{...x,confirmedDates:bp(r.filter(S=>S.confirmed!==!1).map(S=>Br(S.date))),unconfirmedDates:bp(r.filter(S=>S.confirmed===!1).map(S=>Br(S.date)))};const k=bp([Br(a.firstChangeDate),Br(a.lastChangeDate)]);return u===0?{...x,confirmedDates:[],unconfirmedDates:[]}:f===0?{...x,confirmedDates:k,unconfirmedDates:[]}:x.confirmedCount===0?{...x,confirmedDates:[],unconfirmedDates:k}:{...x,confirmedDates:[],unconfirmedDates:[]}}function oD(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 zb(e,a){return e.length===0?null:e.length===1&&a<=1?`on ${e[0]}`:`more than once between ${e[0]} and ${e[e.length-1]}`}function rD(e){const a=zb(e.confirmedDates,e.confirmedCount),s=zb(e.unconfirmedDates,e.unconfirmedCount),r=`The model behind ${e.engine}`;if(e.confirmedCount>0&&e.unconfirmedCount===0)return a?`${r} was updated ${a}, 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(a&&s)return`${r} was updated ${a}, 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 Eb(e){const a=e.filter(r=>!r.checkedThroughPeriodEnd&&r.knownGoodAsOf!==null);return a.length===0?null:`We last checked for model updates on ${a.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 F$(e){const a=Object.entries(e??{}).map(([x,k])=>sD(x,k??{})).sort((x,k)=>x.engine.localeCompare(k.engine));if(a.length===0)return null;const s=a.filter(x=>x.confirmedCount+x.unconfirmedCount>0);if(s.length===0){const x=[...new Set(a.map(D=>D.engine))],k=x.length>1,S=Eb(a),C=[...new Set(a.map(D=>D.knownGoodAsOf).filter(D=>D!==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 ${oD(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=Eb(a);return{kind:"change",text:`${s.map(rD).join(" ")} ${g}${b?` ${b}`:""}`}}const ls=p({slope:m(),intercept:m(),r2:m(),start:m(),end:m(),n:m(),startIndex:m(),endIndex:m()}),lD=A(["gsc","ga4","gbp"]);p({id:o(),domain:o(),connectionType:lD,propertyId:o().nullable().optional(),sitemapUrl:o().nullable().optional(),scopes:y(o()).default([]),createdAt:o(),updatedAt:o()});const cD=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(cD),totalMatching:m(),truncated:_(),latestAvailableDate:o().nullable()});const uD=p({date:o(),clicks:m(),impressions:m(),ctr:m(),position:m().nullable()}),dD=p({startDate:o().nullable(),endDate:o().nullable(),latestDataDate:o().nullable(),daysSinceLatestData:m().nullable()}),mD=p({clicks:ls.nullable(),impressions:ls.nullable(),ctr:ls.nullable(),position:ls.nullable()}),Db=p({startDate:o(),endDate:o(),clicks:m(),impressions:m(),ctr:m().nullable(),position:m().nullable(),source:A(["property-daily","dimensioned","mixed","empty"])}),pD=p({days:m(),prior:Db,trailing:Db,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(uD),window:dD.optional(),trends:mD.optional(),periodComparison:pD.nullable().optional()});const hD=p({page:o(),clicks:m(),impressions:m(),ctr:m()});p({rows:y(hD),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 e0=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 fD=p({url:o(),previousState:o().nullable(),currentState:o().nullable(),transitionDate:o()}),gD=p({reason:o(),count:m(),urls:y(e0).default([])});p({summary:p({total:m(),indexed:m(),notIndexed:m(),deindexed:m(),percentage:m()}),lastInspectedAt:o().nullable(),lastSyncedAt:o().nullable(),indexed:y(e0).default([]),notIndexed:y(e0).default([]),deindexed:y(fD).default([]),reasonGroups:y(gD).default([])});p({url:o(),type:A(["URL_UPDATED","URL_DELETED"]),notifiedAt:o()});const yD=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(yD).default([])});p({date:o(),indexed:m(),notIndexed:m(),unknownPages:m().default(0),verifiedByInspection:m().default(0),derivedFromImpressions:m().default(0),reasonBreakdown:Ve(o(),m()).default({})});const bD=p({siteUrl:o(),permissionLevel:o()});p({sites:y(bD).default([])});const vD=p({type:o(),submitted:o(),indexed:o().optional().describe("Deprecated compatibility field.")}),U2=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(vD).optional()});p({sitemaps:y(U2).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 a=new URL(e).protocol;return a==="http:"||a==="https:"},{message:"Sitemap URL must use http or https."})).min(1).max(50)});const xD=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(xD)});p({sitemaps:y(U2),primarySitemapUrl:o(),run:p({id:o(),projectId:o(),kind:o(),status:o(),trigger:o(),createdAt:o()}).nullable()});const Ze=o().trim().min(1),Tb=o().regex(/^[a-f0-9]{64}$/i);function kD(e){if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;const a=new Date(`${e}T00:00:00.000Z`);return!Number.isNaN(a.getTime())&&a.toISOString().slice(0,10)===e}const ba=o().refine(kD,{message:"Expected a calendar date as YYYY-MM-DD."});function wD(e,a){const s=Date.parse(`${e}T00:00:00.000Z`),r=Date.parse(`${a}T00:00:00.000Z`);return Math.floor((r-s)/864e5)+1}const SD=A(["not-connected","selection-required","connected","stale"]),Pc=SD.enum,G2=A(["enabled","suspended","closed","canceled","unspecified","unknown"]);G2.enum;const F0=A(["enabled","paused","removed","unknown"]);F0.enum;const $2=A(["enabled","hidden","removed","unknown"]);$2.enum;const Y0=A(["customer","campaign"]);Y0.enum;const H2=A(["customer-goal","campaign-goal","custom-goal"]);H2.enum;const K2=p({loginCustomerId:Ze.nullable(),customerId:Ze.nullable(),selectedAt:o().nullable()}).strict(),vp=p({id:Ze,projectId:Ze,scopes:y(o()).default([]),selection:K2,lastValidatedAt:o().nullable(),lastInventorySnapshotAt:o().nullable(),lastMetricsSnapshotAt:o().nullable(),createdAt:o(),updatedAt:o()}).strict(),t0=p({resourceName:Ze,customerId:Ze,parentCustomerId:Ze.nullable(),descriptiveName:o().nullable(),currencyCode:o().nullable(),timeZone:o().nullable(),manager:_(),hidden:_(),testAccount:_(),level:m().int().nonnegative(),status:G2}).strict(),jD=p({customers:y(t0),totalAccessible:m().int().nonnegative(),truncated:_(),selection:K2,fetchedAt:o()}).strict();qe("status",[p({connected:O(!1),status:O(Pc["not-connected"]),connection:le(),selectedCustomer:le()}).strict(),p({connected:O(!0),status:O(Pc["selection-required"]),connection:vp,selectedCustomer:le()}).strict(),p({connected:O(!0),status:O(Pc.connected),connection:vp,selectedCustomer:t0}).strict(),p({connected:O(!0),status:O(Pc.stale),connection:vp,selectedCustomer:t0}).strict()]);const AD=p({id:Ze,resourceName:Ze,name:o(),status:F0,advertisingChannelType:o().nullable(),biddingStrategyType:o().nullable()}).strict(),CD=p({id:Ze,resourceName:Ze,name:o(),status:$2,category:o(),origin:o(),primaryForGoal:_(),includeInConversionsMetric:_()}).strict(),ND=p({category:o(),origin:o(),biddable:_()}).strict(),_D=p({campaignId:Ze,category:o(),origin:o(),biddable:_()}).strict(),zD=p({id:Ze,name:o(),conversionActionIds:y(Ze)}).strict(),ED=p({campaignId:Ze,goalConfigLevel:Y0,customGoalId:Ze.nullable()}).strict(),DD=p({customerId:Ze,fetchedAt:o(),campaigns:y(AD),conversionActions:y(CD),customerConversionGoals:y(ND),campaignConversionGoals:y(_D),campaignConversionGoalsComplete:_().optional(),customConversionGoals:y(zD),campaignGoalConfigurations:y(ED)}).strict(),TD=p({source:H2,category:o().nullable(),origin:o().nullable(),customGoalId:Ze.nullable(),biddable:_().nullable(),conversionActionIds:y(Ze),primaryConversionActionIds:y(Ze),secondaryConversionActionIds:y(Ze),missingConversionActionIds:y(Ze)}).strict(),RD=p({campaignId:Ze,goalConfigLevel:Y0,customGoalId:Ze.nullable(),missingCustomGoalId:Ze.nullable(),goals:y(TD)}).strict();p({customerId:Ze,derivedAt:o(),campaigns:y(RD)}).strict();const Q2=50,n0=31,OD=Q2*n0,BD=p({campaignIds:y(Ze).min(1).max(Q2),startDate:ba,endDate:ba}).strict().superRefine((e,a)=>{if(new Set(e.campaignIds).size!==e.campaignIds.length&&a.addIssue({code:Je.custom,path:["campaignIds"],message:"Campaign IDs must be unique."}),e.endDate<e.startDate){a.addIssue({code:Je.custom,path:["endDate"],message:"endDate must not precede startDate."});return}wD(e.startDate,e.endDate)>n0&&a.addIssue({code:Je.custom,path:["endDate"],message:`Campaign metrics may cover at most ${n0} calendar days.`})}),qD=p({campaignId:Ze,date:ba,impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),conversionValueMicros:m().int().nonnegative().nullable()}).strict(),MD=p({query:BD,rows:y(qD).max(OD),truncated:_(),fetchedAt:o()}).strict(),Z2=A(["accessible-customers","inventory","campaign-metrics"]),xp=Z2.enum,X0=p({id:Ze,projectId:Ze,connectionId:Ze,runId:Ze,kind:Z2,customerId:Ze.nullable(),payloadChecksum:Tb,rawPayloadSha256:Tb.nullable(),rawPayloadBytes:m().int().nonnegative().nullable(),redactedFieldCount:m().int().nonnegative(),capturedAt:o(),createdAt:o()}).strict(),PD=qe("kind",[p({kind:O(xp["accessible-customers"]),data:jD}).strict(),p({kind:O(xp.inventory),data:DD}).strict(),p({kind:O(xp["campaign-metrics"]),data:MD}).strict()]),ID=p({metadata:X0,payload:PD}).strict().superRefine((e,a)=>{e.metadata.kind!==e.payload.kind&&a.addIssue({code:Je.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),VD=A(["7d","14d","30d"]),J0=p({impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),conversionValueMicros:m().int().nonnegative().nullable(),ctr:m().nullable(),cpcMicros:m().int().nonnegative().nullable(),conversionRate:m().nullable(),costPerConversionMicros:m().int().nonnegative().nullable()}),LD=p({date:ba,origin:A(["provider","filled"]),impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),ctr:m().nullable()}),UD=p({campaignId:Ze,name:o().nullable(),status:F0,totals:J0}),GD=p({snapshotId:Ze,capturedAt:o(),customerId:Ze,currencyCode:o().nullable(),timeZone:o().nullable(),asOfDate:ba,openDate:ba.nullable(),truncated:_(),campaignsQueried:m().int().nonnegative(),campaignsInInventory:m().int().nonnegative()}),$D=p({startDate:ba,endDate:ba,days:m().int().positive(),totals:J0}),HD=p({days:m().int().positive(),prior:$D,change:p({impressions:m().nullable(),clicks:m().nullable(),costMicros:m().nullable(),conversions:m().nullable(),ctr:m().nullable(),conversionRate:m().nullable()})});p({window:VD,startDate:ba,endDate:ba,days:m().int().positive(),totals:J0,daily:y(LD),campaigns:y(UD),comparison:HD.nullable(),comparisonUnavailableReason:A(["insufficient-history","no-snapshot"]).nullable(),source:GD.nullable()});const Qe=o().trim().min(1),Rb=o().regex(/^[a-f0-9]{64}$/i),KD=A(["not-connected","selection-required","connected","stale"]),Ic=KD.enum,QD=A(["live","draft"]),F2=QD.enum,Yc=p({accountId:Qe.nullable(),containerId:Qe.nullable(),workspaceId:Qe.nullable(),selectedAt:o().nullable()}).strict(),kp=p({id:Qe,projectId:Qe,scopes:y(o()).default([]),selection:Yc,lastValidatedAt:o().nullable(),lastSnapshotAt:o().nullable(),createdAt:o(),updatedAt:o()}).strict(),Y2=p({id:Qe,path:o(),name:o(),shareData:_().nullable()}).strict(),X2=p({accountId:Qe,id:Qe,path:o(),name:o(),publicId:o().nullable(),domainName:o().nullable(),usageContexts:y(o())}).strict(),W0=p({accountId:Qe,containerId:Qe,id:Qe,path:o(),name:o(),description:o().nullable(),fingerprint:o().nullable()}).strict(),ZD=p({accounts:y(Y2),totalAccessible:m().int().nonnegative(),truncated:_(),fetchedAt:o()}).strict();p({accountId:Qe,containers:y(X2),totalAccessible:m().int().nonnegative(),truncated:_(),fetchedAt:o()}).strict();p({accountId:Qe,containerId:Qe,workspaces:y(W0),totalAccessible:m().int().nonnegative(),truncated:_(),fetchedAt:o()}).strict();const FD=p({id:Qe,name:o(),type:o(),paused:_(),firingTriggerIds:y(Qe),blockingTriggerIds:y(Qe),referencedVariableIds:y(Qe),parameterKeys:y(o()),fingerprint:o().nullable()}).strict(),YD=p({id:Qe,name:o(),type:o(),customEventNames:y(o()),filterKeys:y(o()),autoEventFilterKeys:y(o()),fingerprint:o().nullable()}).strict(),XD=p({id:Qe,name:o(),type:o(),dataLayerVariableName:o().nullable(),parameterKeys:y(o()),fingerprint:o().nullable()}).strict(),J2=A(["recognized","unknown"]),Ob=J2.enum,JD=A(["literal","variable-ref","absent","unknown"]),zu=JD.enum,WD=o().trim().min(5).max(132).regex(/^\{\{\w[\w ./-]{0,127}\}\}$/),Eo=p({source:O(zu.absent),literal:le(),variableRef:le()}).strict(),Do=p({source:O(zu.unknown),literal:le(),variableRef:le()}).strict(),To=p({source:O(zu["variable-ref"]),literal:le(),variableRef:WD}).strict();function ll(e){return p({source:O(zu.literal),literal:e,variableRef:le()}).strict()}const eT=o().trim().max(23).regex(/^(?:AW-)?\d{1,20}$/i),tT=o().trim().min(1).max(128).regex(/^[\w-]+$/),nT=o().trim().min(1).max(20).regex(/^(?:0|[1-9]\d{0,11})(?:\.\d{1,6})?$/),aT=o().trim().length(3).regex(/^[a-z]{3}$/i);qe("source",[ll(o().trim().min(1).max(256)),To,Eo,Do]);const iT=qe("source",[ll(eT),To,Eo,Do]),sT=qe("source",[ll(tT),To,Eo,Do]),oT=qe("source",[ll(nT),To,Eo,Do]),rT=qe("source",[To,Eo,Do]),lT=qe("source",[ll(aT),To,Eo,Do]),W2=A(["all-pages","custom-event","filtered","unknown"]);W2.enum;const Bb=p({operator:o().trim().min(1).max(64),value:o().max(2048),negated:_(),ignoreCase:_()}).strict(),cT=p({triggerId:Qe,triggerType:o(),eventPredicates:y(Bb),hostnamePredicates:y(Bb),unsupportedConditionCount:m().int().nonnegative()}).strict(),ek=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"]);ek.enum;const uT=p({tagId:Qe,tagType:o(),recognition:J2,recognitionReason:o().nullable(),conversionId:iT,conversionLabel:sT,value:oT,transactionId:rT,currency:lT,triggerStrategy:W2,triggerIds:y(Qe),triggerPredicates:y(cT),reviewReasons:y(ek)}).strict().superRefine((e,a)=>{e.recognition===Ob.recognized&&e.recognitionReason!==null&&a.addIssue({code:Je.custom,path:["recognitionReason"],message:"Recognized assessments cannot carry an unknown-recognition reason."}),e.recognition===Ob.unknown&&!e.recognitionReason&&a.addIssue({code:Je.custom,path:["recognitionReason"],message:"Unknown assessments require a recognition reason."})}),tk=p({accountId:Qe,containerId:Qe,workspaceId:Qe.nullable(),tags:y(FD),triggers:y(YD),variables:y(XD),googleAdsTagAssessments:y(uT).default([])}).strict(),dT=p({accountId:Qe,containerId:Qe,id:Qe,path:o(),name:o(),description:o().nullable(),fingerprint:o().nullable(),deleted:_()}).strict(),nk=p({source:O(F2.live),version:dT,graph:tk,fetchedAt:o()}).strict(),ak=p({source:O(F2.draft),workspace:W0,graph:tk,conflictCount:m().int().nonnegative(),fetchedAt:o()}).strict(),mT=p({account:Y2,container:X2,workspaces:y(W0),live:nk.nullable(),draft:ak.nullable(),fetchedAt:o()}).strict();qe("status",[p({connected:O(!1),status:O(Ic["not-connected"]),connection:le(),selection:le()}).strict(),p({connected:O(!0),status:O(Ic["selection-required"]),connection:kp,selection:Yc}).strict(),p({connected:O(!0),status:O(Ic.connected),connection:kp,selection:Yc}).strict(),p({connected:O(!0),status:O(Ic.stale),connection:kp,selection:Yc}).strict()]);const ik=A(["accounts","container","live","draft"]),Vc=ik.enum,eh=p({id:Qe,projectId:Qe,connectionId:Qe,runId:Qe,kind:ik,accountId:Qe.nullable(),containerId:Qe.nullable(),workspaceId:Qe.nullable(),payloadChecksum:Rb,rawPayloadSha256:Rb.nullable(),rawPayloadBytes:m().int().nonnegative().nullable(),redactedFieldCount:m().int().nonnegative(),capturedAt:o(),createdAt:o()}).strict(),pT=qe("kind",[p({kind:O(Vc.accounts),data:ZD}).strict(),p({kind:O(Vc.container),data:mT}).strict(),p({kind:O(Vc.live),data:nk}).strict(),p({kind:O(Vc.draft),data:ak}).strict()]),hT=p({metadata:eh,payload:pT}).strict().superRefine((e,a)=>{e.metadata.kind!==e.payload.kind&&a.addIssue({code:Je.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),kn=o().trim().min(1),fT=o().trim().min(1).refine(e=>ku(e)!==null,"Expected a hostname or http(s) URL."),th=A(["configured","statically-consistent","runtime-unverified","observed"]);th.enum;const sk=A(["pass","fail","unknown"]);sk.enum;const ok=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"]);ok.enum;const rk=p({id:kn,projectId:kn,name:o().trim().min(1),eventName:o().trim().min(1),googleAds:p({customerId:kn,conversionActionId:kn,conversionId:o().trim().min(1).optional(),conversionLabel:o().trim().min(1).optional(),campaignIds:y(kn).max(50).default([]),requireBiddableGoal:_().default(!0),requirePrimaryAction:_().default(!0)}).strict(),gtm:p({accountId:kn,containerId:kn,tagId:kn,triggerIds:y(kn).default([]),variableIds:y(kn).default([])}).strict(),runtime:p({verificationRequired:_().default(!0),requireTransactionId:_().default(!0),requireValue:_().default(!0),requireCurrency:_().default(!0),productionHosts:y(fT).default([])}).strict(),createdAt:o(),updatedAt:o()}).strict();rk.omit({id:!0,projectId:!0,createdAt:!0,updatedAt:!0});const lk=A(["not-run","consistent","inconsistent"]);lk.enum;const ck=A(["not-run","not-observed","observed"]);ck.enum;p({staticCheck:lk,runtimeVerificationRequired:_(),runtimeObservation:ck}).strict();const gT=p({code:ok,subject:o().trim().min(1),outcome:sk,status:th,evidenceIds:y(kn).default([])}).strict(),yT=p({contract:rk,status:th,findings:y(gT),evaluatedAt:o()}).strict(),qb=p({id:kn,name:o(),detail:o(),active:_()});p({googleAds:p({customerId:kn.nullable(),syncedAt:o().nullable(),conversionActions:y(qb)}),gtm:p({containerId:kn.nullable(),syncedAt:o().nullable(),tags:y(qb)})});const Gr=o().trim().min(1);function Mb(e){const a=e.trim();return/^\d{10}$/.test(a)?a:/^\d{3}-\d{3}-\d{4}$/.test(a)?a.replaceAll("-",""):null}const bT=/^[\w-]+$/;function nh(e){const a=e.trim();return bT.test(a)?a:null}function vT(e){const a=e.trim();return/^accounts\/([\w-]+)$/.exec(a)?.[1]??nh(a)}function xT(e,a){const s=e.trim(),r=/^accounts\/([\w-]+)\/containers\/([\w-]+)$/.exec(s);return r?r[1]===a?r[2]:null:nh(s)}function kT(e,a,s){const r=e.trim(),u=/^accounts\/([\w-]+)\/containers\/([\w-]+)\/workspaces\/([\w-]+)$/.exec(r);return u?u[1]===a&&u[2]===s?u[3]:null:nh(r)}function wT(e){const a=Mb(e.customerId);if(!a)return null;if(e.loginCustomerId===null)return{loginCustomerId:null,customerId:a};if(e.loginCustomerId===void 0)return{customerId:a};const s=Mb(e.loginCustomerId);return s?{loginCustomerId:s,customerId:a}:null}function ST(e){const a=vT(e.accountId);if(!a)return null;const s=xT(e.containerId,a);if(!s)return null;if(e.workspaceId===void 0)return{accountId:a,containerId:s};const r=kT(e.workspaceId,a,s);return r?{accountId:a,containerId:s,workspaceId:r}:null}const Eu=A(["google-ads","gtm"]);Eu.enum;p({provider:Eu,publicUrl:o().url().optional(),developerToken:o().trim().min(1).max(512).optional()}).strict();p({provider:Eu,authorizationUrl:o().url(),redirectUri:o().url(),expiresAt:o().nullable()}).strict();p({loginCustomerId:Gr.nullable().optional(),customerId:Gr}).strict().superRefine((e,a)=>{wT(e)||a.addIssue({code:Je.custom,message:"Expected ten-digit Google Ads customer IDs, with optional 3-3-4 display hyphens."})});p({accountId:Gr,containerId:Gr,workspaceId:Gr.optional()}).strict().superRefine((e,a)=>{ST(e)||a.addIssue({code:Je.custom,message:"GTM resource paths must match the selected account and container."})});p({provider:Eu,disconnected:_()}).strict();const uk=100;p({snapshots:y(X0).max(uk),nextCursor:o().nullable(),total:m().int().nonnegative()}).strict();p({snapshot:ID}).strict();p({snapshots:y(eh).max(uk),nextCursor:o().nullable(),total:m().int().nonnegative()}).strict();p({snapshot:hT}).strict();p({assessment:yT,googleAdsSnapshot:X0.nullable(),gtmSnapshot:eh.nullable()}).strict();const jT=p({name:o(),accountName:o().nullable(),type:o().nullable(),role:o().nullable()});p({accounts:y(jT),total:m().int().nonnegative()});const AT=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:Ve(o(),Sn()).nullable(),regularHours:Ve(o(),Sn()).nullable(),primaryPhone:o().nullable(),openStatus:o().nullable(),openingDate:o().nullable(),selected:_(),syncedAt:o().nullable(),createdAt:o(),updatedAt:o()});p({locations:y(AT),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 CT=p({locationName:o(),date:o(),metric:o(),value:m().int()});p({metrics:y(CT),total:m().int().nonnegative()});const NT=p({locationName:o(),periodStart:o(),periodEnd:o(),keyword:o(),valueCount:m().int().nullable(),valueThreshold:m().int().nullable()});p({keywords:y(NT),total:m().int().nonnegative(),thresholdedPct:m().int().min(0).max(100)});const _T=p({locationName:o(),placeActionLinkName:o(),placeActionType:o(),uri:o().nullable(),isPreferred:_(),providerType:o().nullable()});p({placeActions:y(_T),total:m().int().nonnegative()});const zT=p({locationName:o(),populatedGroupCount:m().int().nonnegative(),syncedAt:o(),attributes:Ve(o(),Sn())});p({lodging:y(zT),total:m().int().nonnegative()});const ET=p({name:o(),valueType:o(),values:y(Le([_(),o()])),unsetValues:y(o()),uris:y(o())}),DT=p({locationName:o(),attributeCount:m().int().nonnegative(),syncedAt:o(),attributes:y(ET)});p({attributes:y(DT),total:m().int().nonnegative()});const TT=p({locationName:o(),placeId:o(),tier:o(),amenities:y(o()),syncedAt:o(),place:Ve(o(),Sn())});p({places:y(TT),total:m().int().nonnegative()});p({scope:p({locationName:o().nullable(),locationCount:m().int().nonnegative()}),performance:p({totals:Ve(o(),m()),recent7d:Ve(o(),m()),prior7d:Ve(o(),m()),deltaPct:Ve(o(),m().nullable())}),freshness:p({dataThroughDate:o().nullable(),latestStoredDate:o().nullable(),pendingDays:m().int().nonnegative()}),timeseries:y(p({date:o(),pending:_(),metrics:Ve(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 RT={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 OT(e){const a=e.replace(/^BUSINESS_/,"").split("_").filter(Boolean).map(r=>r.toLowerCase());if(a.length===0)return e;const s=a.join(" ");return s.charAt(0).toUpperCase()+s.slice(1)}function Y$(e){return RT[e]??OT(e)}const BT=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],qT=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function X$(e){return BT.includes(e)?"conversion":qT.includes(e)?"reach":"other"}p({id:o(),domain:o(),siteUrl:o().nullable().optional(),createdAt:o(),updatedAt:o()});const wp=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(wp).default([]),notIndexed:y(wp).default([]),unknown:y(wp).default([]).optional()});p({query:o(),impressions:m(),clicks:m(),ctr:m(),averagePosition:m()});p({date:o(),indexed:m(),notIndexed:m(),unknown:m()});const MT=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(MT).default([])});const dk=p({url:o(),verified:_()});p({sites:y(dk).default([])});p({connected:_(),domain:o(),siteUrl:o().nullable(),createdAt:o().nullable(),updatedAt:o().nullable()});p({connected:_(),domain:o(),siteUrl:o().nullable(),availableSites:y(dk).default([])});p({siteUrl:o()});const PT=p({name:o(),alive:_(),lastUsed:o().nullable()});p({connected:_(),endpoint:o(),version:o().optional(),browserVersion:o().optional(),targets:y(PT).default([])});const Ro=A(["live","staging"]);p({projectName:o(),url:o(),stagingUrl:o().optional(),username:o(),defaultEnv:Ro,createdAt:o(),updatedAt:o()});const Pb=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:Ro,live:Pb.nullable(),staging:Pb.nullable(),adminUrl:o().nullable().optional()});const IT=p({id:m(),slug:o(),title:o(),status:o(),modifiedAt:o().nullable().optional(),link:o().nullable().optional()}),mk=p({title:o().nullable(),description:o().nullable(),noindex:_().nullable(),writable:_().default(!1),writeTargets:y(o()).default([])}),VT=p({type:o(),json:Ve(o(),Sn())}),LT=IT.extend({env:Ro,content:o(),seo:mk,schemaBlocks:y(VT).default([])}),Ib=LT.extend({contentHash:o(),contentSnippet:o()}),pk=p({manualRequired:O(!0),targetUrl:o(),adminUrl:o().nullable().optional(),content:o(),nextSteps:y(o()).default([])}),UT=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:mk,schemaPresent:_(),issues:y(UT).default([])});const GT=p({slug:o(),status:A(["applied","skipped","manual"]),error:o().optional(),manualAssist:pk.optional()});p({env:Ro,strategy:A(["plugin","manual"]),results:y(GT)});const $T=p({slug:o(),status:A(["deployed","stripped","skipped","failed"]),schemasInjected:y(o()).optional(),manualAssist:pk.optional(),error:o().optional()});p({env:Ro,results:y($T)});const HT=p({slug:o(),title:o(),canonrySchemas:y(o()),thirdPartySchemas:y(o()),hasCanonrySchema:_()});p({env:Ro,pages:y(HT)});const KT=p({name:o(),status:A(["completed","skipped","failed"]),summary:o().optional(),error:o().optional()});p({projectName:o(),steps:y(KT)});p({slug:o(),live:Ib,staging:Ib,hasDifferences:_(),differences:p({title:_(),slug:_(),content:_(),seoTitle:_(),seoDescription:_(),noindex:_(),schema:_()})});const QT=p({name:o(),displayName:o().optional(),keyUrl:o().optional(),modelHint:o().optional(),model:o().optional(),defaultModel:o().optional(),configured:_(),quota:Q_.optional(),vertexConfigured:_().optional()}),ZT=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()}),Vb=p({configured:_()});p({providers:y(QT).default([]),providerCatalog:y(ZT).default([]),google:Vb,bing:Vb});const ca=A(["queued","running","completed","partial","failed","cancelled"]),rn=ca.enum,hk=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=hk.enum,ah=A(["manual","scheduled","config-apply","backfill","probe"]),ho=ah.enum,Va=A(["cited","not-cited"]),lu=Va.enum,cu=A(["visible","not-visible"]);cu.enum;const Jr=A(["mentioned","not-mentioned"]);Jr.enum;const fk=A(["new","cited","lost","emerging","not-cited"]);fk.enum;const FT=A(["new","mentioned","lost","emerging","not-mentioned"]);FT.enum;const YT=A([ho.manual,ho.probe]);p({kind:O(Te["answer-visibility"]).optional(),trigger:YT.optional(),providers:y(ht).optional(),queries:y(o().min(1)).min(1).optional(),measurementScope:G9.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 XT=p({message:o(),raw:Sn().optional()}),JT=p({message:o().optional(),providers:Ve(o(),XT).optional()}),WT=p({id:o(),projectId:o(),kind:hk,status:ca,trigger:ah.default("manual"),measurementPlanVersionId:o().nullable().optional(),measurementManifest:Ve(o(),Sn()).nullable().optional(),measurementScope:$9.nullable().optional(),measurementExecutionIdentity:N2.nullable().optional(),location:o().nullable().optional(),queries:y(o()).nullable().optional(),startedAt:o().nullable().optional(),finishedAt:o().nullable().optional(),error:JT.nullable().optional(),queryBasketRevision:m().int().nullable().optional(),createdAt:o()});function ih(e){if(e.providers){const a=Object.entries(e.providers);if(a.length===1){const[s,r]=a[0];return`${s}: ${r.message}`}if(a.length>1)return a.map(([s,r])=>`${s}: ${r.message}`).join(" • ")}return e.message??"Run failed."}const Du=p({uri:o(),title:o()}),eR=p({status:A(["applied","ignored","browser-implicit","unknown"]),resolved:un.nullable().optional()}),gk=p({id:o(),runId:o(),queryId:o(),query:o().optional(),provider:ht,citationState:Va,answerMentioned:_().optional(),visibilityState:cu.optional(),mentionState:Jr.optional(),transition:fk.optional(),answerText:o().nullable().optional(),citedDomains:y(o()).default([]),citedUrls:y(o()).nullable().default(null),captureStatus:Le([ju,le()]).default(null),sourceCount:m().int().nonnegative().nullable().default(null),resolvedCount:m().int().nonnegative().nullable().default(null),captureVersion:m().int().positive().nullable().default(null),retrievalStatus:Le([$0,le()]).default(null),retrievalContract:Le([H0,le()]).default(null),competitorOverlap:y(o()).default([]),citedCompetitorDomains:y(o()).default([]),mentionedCompetitorDomains:y(o()).default([]),recommendedCompetitors:y(o()).default([]),matchedTerms:y(o()).default([]),groundingSources:y(Du).default([]),searchQueries:y(o()).default([]),model:o().nullable().optional(),servedModel:o().nullable().optional(),location:o().nullable().optional(),requestedContext:un.nullable().optional(),supportedContext:eR.nullable().optional(),createdAt:o()});p({snapshots:y(gk),total:m().int().nonnegative()});const tR=p({queryId:o().nullable(),query:o().nullable(),run1State:Va.nullable(),run2State:Va.nullable(),run1AnswerMentioned:_().nullable(),run2AnswerMentioned:_().nullable(),run1VisibilityState:cu.nullable(),run2VisibilityState:cu.nullable(),run1MentionState:Jr.nullable().optional(),run2MentionState:Jr.nullable().optional(),changed:_(),visibilityChanged:_()});p({run1:o(),run2:o(),diff:y(tR)});const nR=WT.extend({snapshots:y(gk).optional()}),aR=p({totalRuns:m().int().nonnegative(),run:nR.nullable()});p({id:o(),projectId:o().nullable().optional(),actor:o(),action:o(),entityType:o(),entityId:o().nullable().optional(),diff:Sn().optional(),userAgent:o().nullable().optional(),actorSession:o().nullable().optional(),createdAt:o()});const iR=A(["yes","no","unknown","not-mentioned"]),Lb=y(o().min(1));p({companyName:o().min(1),domain:o().min(1),queries:Lb.optional(),phrases:Lb.optional(),competitors:y(o().min(1)).optional().default([])}).superRefine((e,a)=>{e.queries!==void 0&&e.phrases!==void 0&&a.addIssue({code:"custom",message:"Use queries; phrases is accepted only as a legacy alias when queries is omitted",path:["phrases"]})});const sR=p({name:o(),count:m().int().nonnegative()}),oR=p({id:o(),name:o(),weight:m(),score:m(),findings:y(p({type:o(),message:o()})).default([]),recommendations:y(o()).default([])}),rR=p({url:o(),finalUrl:o(),auditedAt:o(),overallScore:m(),summary:o(),factors:y(oR).default([])}),lR=p({industry:o(),summary:o(),services:y(o()).default([]),categoryTerms:y(o()).default([])}),cR=p({provider:o(),displayName:o(),model:o().nullable().optional(),mentioned:_(),cited:_(),describedAccurately:iR,accuracyNotes:o().nullable().optional(),incorrectClaims:y(o()).default([]),recommendedCompetitors:y(o()).default([]),citedDomains:y(o()).default([]),groundingSources:y(Du).default([]),searchQueries:y(o()).default([]),answerText:o(),error:o().nullable().optional()}),uR=p({query:o(),providerResults:y(cR).default([])}),dR=p({totalQueries:m().int().nonnegative(),totalProviders:m().int().nonnegative(),totalComparisons:m().int().nonnegative(),mentionCount:m().int().nonnegative(),citationCount:m().int().nonnegative(),topCompetitors:y(sR).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:lR,audit:rR,queryResults:y(uR).default([]),summary:dR});const yk=Le([ca,le()]),sh=A(["pass","partial","fail"]);sh.enum;const bk=A(["up","down","flat"]);bk.enum;const mR=p({id:o(),name:o(),weight:m(),avgScore:m(),status:sh,pagesPassing:m().int().nonnegative(),pagesPartial:m().int().nonnegative(),pagesFailing:m().int().nonnegative()}),pR=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:yk,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:Le([bk,le()]),previousScore:m().nullable(),previousAuditedAt:o().nullable(),factors:y(mR).default([]),crossCuttingIssues:y(pR).default([]),prioritizedFixes:y(o()).default([])});const vk=p({id:o(),name:o(),weight:m(),score:m()}),hR=p({url:o(),overallScore:m(),status:A(["success","error"]),error:o().nullable().optional(),factors:y(vk).default([])});p({project:o(),runId:o().nullable(),auditedAt:o().nullable(),total:m().int().nonnegative(),pages:y(hR).default([])});const fR=p({runId:o(),auditedAt:o(),aggregateScore:m(),pagesAudited:m().int().nonnegative()});p({project:o(),points:y(fR).default([])});const gR=A(["disabled","complete","partial","unavailable"]);gR.enum;const yR=p({pagesDiscovered:m().int().nonnegative(),pagesFetched:m().int().nonnegative(),pagesEligible:m().int().nonnegative(),edges:m().int().nonnegative(),findings:m().int().nonnegative()}),bR=qe("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:yk,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:Ve(o(),Sn()).default({}),complete:_(),termination:o().nullable(),detailsAvailable:_(),counts:yR,deadLinks:bR});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 Tu=A(["eligible","hidden","resource","redirect","failed","unchecked"]),J$=Tu.enum,W$=Tu.options,oo={discovered:"discovered",robotsBlocked:"robots-blocked",html:"html",redirect:"redirect",nonHtml:"non-html",fetchError:"fetch-error"},Lc={indexable:"indexable",noindex:"noindex",blocked:"blocked",unknown:"unknown"},vR={robotsDisallow:"robots-disallow",redirectTerminal:"redirect-terminal",metaRobotsNoindex:"meta-robots-noindex",xRobotsNoindex:"x-robots-noindex",canonicalToOther:"canonical-to-other",notHtmlOrUnavailable:"not-html-or-unavailable"};function xR(e){return e.indexabilityReasons?.some(a=>a===vR.canonicalToOther)===!0||e.nodeKey!==void 0&&e.canonicalNodeKey!==null&&e.canonicalNodeKey!==void 0&&e.canonicalNodeKey!==e.nodeKey}function eH(e){switch(e.fetchState){case oo.fetchError:return"failed";case oo.discovered:return"unchecked";case oo.nonHtml:return"resource";case oo.redirect:return"redirect";case oo.robotsBlocked:return"hidden";case oo.html:break;default:return"unchecked"}if(xR(e))return"hidden";switch(e.indexabilityState){case Lc.indexable:return"eligible";case Lc.noindex:case Lc.blocked:return"hidden";case Lc.unknown:default:return"unchecked"}}const tH=15,kR=A(["navigation","content","unknown"]);kR.enum;const wR=p({navigation:m().int().nonnegative(),content:m().int().nonnegative(),unknown:m().int().nonnegative()}),xk=A(["placement","ubiquity","unmeasured"]);xk.enum;const Ru=A(["applied","applied-placement","applied-placement-with-ubiquity","applied-placement-partial","unavailable-too-few-pages","unavailable-legacy-scan"]);Ru.enum;function nH(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 Ou=A(["all","content","template"]);Ou.enum;const SR=A(["anchor","redirect","canonical","link"]);SR.enum;const Wr=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:Tu}),jR=p({type:A(["found","missing","info","timeout","unreachable"]),code:o().min(1),message:o().min(1)}),Ub=vk.extend({status:sh,applicable:_().nullable(),findings:y(jR).default([]),recommendations:y(o()).default([])}),Gb=p({id:o().min(1),severity:A(["critical","warning"]),detail:o().min(1),recommendation:o().min(1)}),Uc=p({project:o(),runId:o(),complete:_(),termination:o().nullable()}),$b=p({nodeKey:o(),url:o(),auditState:o()});qe("state",[p({state:O("no-crawl"),project:o(),runId:le()}),Uc.extend({state:O("details-unavailable")}),Uc.extend({state:O("not-found")}),Uc.merge($b).extend({state:O("not-audited"),auditScore:le(),factors:y(Ub).length(0).default([]),criticalDefects:y(Gb).length(0).default([])}),Uc.merge($b).extend({state:O("ready"),auditScore:m(),evidenceState:A(["complete","scores-only"]),factors:y(Ub).default([]),criticalDefects:y(Gb).default([])})]);const AR=A(["applied","unavailable-legacy-scan"]);p({project:o(),hasCrawlData:_(),runId:o().nullable(),total:m().int().nonnegative(),nextCursor:o().nullable(),healthStateFilter:Le([AR,le()]).default(null),pages:y(Wr).default([])});const CR=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(CR).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:Le([_(),le()]),templateRatio:Le([m(),le()]),templateSource:xk,placementOccurrences:Le([wR,le()])}),NR=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:Tu,x:m(),y:m()}),_R=p({edgeKey:o(),sourceNodeKey:o(),targetNodeKey:o(),followable:_(),occurrences:m().int().positive(),isTemplate:_()}),zR=A(["no-crawl","legacy-snapshot","details-unavailable","layout-failed","empty-crawl"]),ER=qe("state",[p({state:O("ready"),version:o().min(1),computedAt:o().min(1),templateLinksExcluded:_()}),p({state:O("unavailable"),version:le(),reason:zR})]);p({project:o(),hasCrawlData:_(),runId:o().nullable(),rootNodeKey:o().nullable(),layout:ER,templateDetection:Ru,linkKind:Ou,totalNodes:m().int().nonnegative(),totalEdges:m().int().nonnegative(),totalTemplateEdges:m().int().nonnegative(),totalContentEdges:m().int().nonnegative(),nodes:y(NR).default([]),edges:y(_R).default([]),omittedNodes:m().int().nonnegative(),omittedEdges:m().int().nonnegative(),sampled:_()});const aH=2e4,iH=5e4,DR=A(["focus","inbound","outbound","both","transitive"]),TR=Wr.extend({distance:m().int().nonnegative(),relationToFocus:DR});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(TR).default([]),edges:y(ds).default([]),omittedNodes:m().int().nonnegative(),omittedEdges:m().int().nonnegative(),countAccuracy:A(["exact","lower-bound"]),truncated:_()});const Hb=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:Hb.nullable(),to:Hb.nullable(),maxDepth:m().int().positive(),visitedNodes:m().int().nonnegative(),nodes:y(Wr).default([]),edges:y(ds).default([])});const kk=A(["added","removed","changed"]),RR=p({entity:O("page"),change:kk,key:o(),changedFields:y(o()).default([]),before:Wr.nullable(),after:Wr.nullable()}),OR=p({entity:O("link"),change:kk,key:o(),changedFields:y(o()).default([]),before:ds.nullable(),after:ds.nullable()}),BR=qe("entity",[RR,OR]),Kb=p({added:m().int().nonnegative(),removed:m().int().nonnegative(),changed:m().int().nonnegative()}),qR=p({scope:A(["all","pages","links"]),change:A(["all","added","removed","changed"])});qe("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:qR,summaryState:A(["exact","omitted-on-continuation"]),summary:p({pages:Kb,links:Kb}).nullable(),total:m().int().nonnegative().nullable(),nextCursor:o().nullable(),changes:y(BR).default([])})]);p({project:o(),hasCrawlData:_(),runId:o().nullable(),total:m().int().nonnegative(),nextCursor:o().nullable(),templateDetection:Ru,linkKind:Ou,edges:y(ds).default([])});p({project:o(),hasCrawlData:_(),runId:o().nullable(),nodeKey:o().nullable(),url:o().nullable(),templateDetection:Ru,linkKind:Ou,inbound:y(ds).default([]),outbound:y(ds).default([]),inboundTruncated:_(),outboundTruncated:_()});const Qb=p({findingKey:o(),severity:o(),sourceNodeKey:o().nullable(),sourceUrl:o().nullable(),targetNodeKey:o().nullable(),targetUrl:o().nullable(),evidence:Ve(o(),Sn()).default({})});qe("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(Qb).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(Qb).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:ca});const MR=p({runId:o(),status:ca,createdAt:o(),startedAt:o().nullable(),finishedAt:o().nullable(),hasCrawlData:_()});p({project:o(),scans:y(MR).default([])});const PR=A(["queued","discovering","checking","arranging-map","completed","partial","failed","cancelled"]),IR=p({state:A(["pending","ready","unavailable"]),layoutVersion:o().nullable(),failureCode:o().nullable(),updatedAt:o().nullable()}),VR=p({id:o(),state:o(),pagesDiscovered:m().int().nonnegative(),pagesFetched:m().int().nonnegative(),pagesEligible:m().int().nonnegative(),pagesErrored:m().int().nonnegative(),edgesDiscovered:m().int().nonnegative(),lastUpdatedAt:o(),startedAt:o().nullable(),finishedAt:o().nullable(),error:o().nullable()});p({project:o(),runId:o(),status:ca,phase:PR,attempt:VR.nullable(),layout:IR,error:o().nullable()});const LR=A(["waiting","collecting","terminal"]),UR=p({nodeKey:o(),url:o(),auditScore:m(),checksNeedingAttention:m().int().nonnegative()});p({project:o(),runId:o(),status:ca,state:LR,attemptId:o().nullable(),pagesAudited:m().int().nonnegative(),updatedAt:o().nullable(),examples:y(UR).max(12).default([])});const oh=A(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync","doctor"]);oh.enum;p({id:o(),projectId:o(),kind:oh,cronExpr:o(),preset:o().nullable().optional(),timezone:o().default("UTC"),enabled:_().default(!0),providers:y(ht).default([]),sourceId:o().nullable().optional(),lastRunAt:o().nullable().optional(),nextRunAt:o().nullable().optional(),createdAt:o(),updatedAt:o()});p({kind:oh.optional(),preset:o().optional(),cron:o().optional(),timezone:o().optional().default("UTC"),enabled:_().optional().default(!0),providers:y(ht).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 rh=A(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);rh.enum;const lh=A(["cited","aspirational","wasted-surface"]),Zb=lh.enum;Zb.cited,Zb.aspirational;const Bu=A(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),GR=Bu.enum;GR["direct-competitor"];const qu=A(["queued","seeding","probing","completed","failed"]);qu.enum;const wk=p({domain:o().min(1),hits:m().int().positive(),competitorType:Bu.default("unknown")}),$R=p({id:o(),sessionId:o(),projectId:o(),query:o(),bucket:lh.nullable().default(null),citationState:Va,citedDomains:y(o()).default([]),answerMentioned:_().nullable().default(null),createdAt:o()}),HR=p({id:o(),projectId:o(),status:qu,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(un).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:Ve(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(wk).default([]),warning:o().nullable().optional(),error:o().nullable().optional(),startedAt:o().nullable().optional(),finishedAt:o().nullable().optional(),createdAt:o()});HR.extend({probes:y($R).default([])});const KR=500,QR=8,ZR=["gemini","openai"],FR=A(ZR);p({icpDescription:o().min(1).optional(),buyerDescription:o().min(1).optional(),seedProviders:y(FR).min(1).transform(e=>[...new Set(e)].sort()).optional(),dedupThreshold:m().min(0).max(1).optional(),maxProbes:m().int().positive().max(KR).optional(),probeConcurrency:m().int().min(1).max(QR).optional(),locations:y(o().min(1)).optional()});p({buckets:y(lh).min(1).optional(),includeCompetitors:_().optional(),competitorTypes:y(Bu).min(1).optional()});p({sessionId:o(),projectId:o(),status:qu,queriesByBucket:p({cited:y(o()),aspirational:y(o()),"wasted-surface":y(o())}),suggestedCompetitors:y(wk)});p({sessionId:o(),projectId:o(),promoted:p({queries:y(o()),competitors:y(o())}),skipped:p({queries:y(o()),competitors:y(o())})});Le([O("cli"),o().regex(/^discovery:.+$/)]);const YR=p({query:o().min(1),probeHits:m().int().positive()}),XR=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:qu,minProbeHits:m().int().positive(),anchorApplied:_(),semanticNoveltyApplied:_(),candidates:y(YR),stats:XR});const ch=A(["own","direct-competitor","ota-aggregator","editorial-media","other"]);ch.enum;const Sk=A(["7d","30d","90d","all"]),Fb=A(["improving","declining","stable"]),JR=A(["mentioned","cited"]);JR.enum;const a0=p({citationRate:m(),cited:m().int(),total:m().int(),mentionRate:m(),mentionedCount:m().int()}),uh=o().trim().min(1),WR=y(uh).min(1).superRefine((e,a)=>{for(let s=1;s<e.length;s+=1)e[s-1]>=e[s]&&a.addIssue({code:"custom",message:"mixed model IDs must be sorted and unique",path:[s]})}),wo=qe("status",[p({status:O("known"),model:uh}),p({status:O("unknown")}),p({status:O("mixed"),models:WR,includesUnknown:_()})]),eO=p({observedAt:o(),bucketStartDate:o(),from:wo,to:wo,fromPreWindowAnchor:_().optional(),anchorObservedAt:o().optional()}),jk=p({latestObservation:p({observedAt:o(),state:wo}),events:y(eO),eventTotal:m().int().nonnegative().optional(),anchorUnavailable:_().optional()}),tO=Ve(o(),jk),nO=jk.extend({latestServedModelIds:y(uh).default([])}),aO=Ve(o(),nO),iO=p({observedAt:o(),configured:wo,served:wo}),sO=p({scope:A(["non-brand","pooled"]),rate:m().nullable(),projectMentionSnapshots:m().int().nonnegative(),competitorMentionSnapshots:m().int().nonnegative()}),oO=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:sO,byProvider:Ve(o(),a0),modelEvidenceByProvider:Ve(o(),wo).default({}),basketRevision:m().int().nullable().default(null)}),rO=p({revision:m().int(),at:o(),added:y(o()),removed:y(o())}),lO=p({date:o(),delta:m().int(),label:o()}),cO=p({at:o(),identity:N2});p({window:Sk,mentionShareScope:A(["non-brand","pooled"]),buckets:y(oO),overall:a0,byProvider:Ve(o(),a0),trend:Fb,mentionTrend:Fb,queryChanges:y(lO),basketChanges:y(rO).default([]),executionIdentityChanges:y(cO).default([]),referenceBasketRevision:m().int().nullable().default(null),modelAttribution:tO.default({}),servedModelAttribution:aO.default({}),modelServiceMismatch:Ve(o(),iO).default({}),modelPointerChanges:Ve(o(),nD).default({})});const Yb=p({category:rh,label:o(),count:m().int(),percentage:m(),topDomains:y(p({domain:o(),count:m().int()}))}),uO=p({domain:o(),count:m().int(),percentage:m(),category:rh,label:o(),surfaceClass:ch}),dO=p({surfaceClass:ch,label:o(),count:m().int(),percentage:m(),domainCount:m().int()}),Xb=p({totalCitedSlots:m().int(),domainTotal:m().int(),entries:y(uO),truncatedDomainCount:m().int(),truncatedCitedSlots:m().int(),bySurfaceClass:y(dO)});p({overall:y(Yb),byQuery:Ve(o(),y(Yb)),ranked:Xb,byProvider:Ve(o(),Xb),runId:o(),window:Sk,limit:m().int().nullable()});const dh=p({total:m().int(),checked:m().int(),mentioned:m().int(),cited:m().int(),mentionRate:m().nullable(),citedRate:m().nullable()}),Ak=dh.extend({provider:o(),firstObserved:o(),lastObserved:o()}),mO=dh.extend({queryId:o().nullable(),query:o(),firstObserved:o(),lastObserved:o(),providers:y(Ak).optional()}),pO=p({since:o().nullable(),until:o().nullable(),lastRuns:m().int().nullable(),runCount:m().int()}),hO=A(["provider"]),i0=p({domain:o(),mentions:m().int()}),fO=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(i0)});p({project:o(),groupBy:hO.optional(),window:pO,totals:dh,byProvider:y(Ak).optional(),queries:y(mO),shareOfVoice:fO.optional()});const gO=A(["within-noise","moved","insufficient-data","model-discontinuous","model-unknown"]),yO=A(["up","down","flat"]),Jb=p({availability:A(["available","no-observations","no-competitive-frame"]),point:m().nullable(),ciLow:m().nullable(),ciHigh:m().nullable(),numerator:m().int(),denominator:m().int()}),bO=A(["mention-share-of-voice","cited-share-of-voice","mention-rate","cited-rate"]),vO=p({key:bO,label:o(),queryClass:A(["all","non-brand","pooled"]),driftRobust:_(),from:Jb,to:Jb,rateRatio:m().nullable(),direction:Le([yO,le()]),verdict:gO}),Wb=p({month:o(),since:o(),until:o(),runCount:m().int(),lowRunCount:_()}),xO=p({queryCount:m().int(),excludedFromOnly:m().int(),excludedToOnly:m().int(),providers:y(o()),excludedProviders:y(o())}),kO=p({provider:o(),fromModels:y(o()),toModels:y(o())}),wO=A(["included","model-discontinuous","model-unknown"]),SO=p({provider:o(),status:wO,fromModels:y(o()),toModels:y(o())}),jO=A(["comparable","model-discontinuous","model-unknown","insufficient-data"]),AO=p({status:jO,comparedProviders:y(o()),providers:y(SO)}),CO=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()})}),NO=p({from:p({count:m().int(),of:m().int()}),to:p({count:m().int(),of:m().int()})});p({project:o(),from:Wb,to:Wb,basket:xO,metrics:y(vO),queriesMentioned:NO,byProvider:y(CO),modelChanges:y(kO),continuity:AO,competitors:p({from:y(i0),to:y(i0)})});A(["json","csv"]);const _O=p({runId:o(),runKind:O("answer-visibility"),runStatus:ca,runTrigger:ah,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:Va,cited:_(),answerMentioned:_().nullable(),mentionState:Le([Jr,le()]),citedDomains:y(o()),citedUrls:y(o()).nullable(),captureStatus:Le([ju,le()]),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(Du),searchQueries:y(o())}),zO=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:zO,recordCount:m().int().nonnegative(),records:y(_O)});const Mu=A(["organic","paid"]);Mu.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 mh=A(["session","first_user","manual_utm"]),EO=p({source:o(),medium:o(),trafficClass:Mu,sessions:m(),users:m().optional(),sourceDimension:mh}),DO=p({source:o(),medium:o(),trafficClass:Mu,sourceDimension:mh,landingPage:o(),sessions:m(),users:m().optional()}),TO=p({source:o(),medium:o(),sessions:m(),users:m(),channelGroup:o()}),qr=p({sessions:m(),sharePct:m(),sharePctDisplay:o()}),RO=p({organic:qr,social:qr,direct:qr,ai:qr,other:qr});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(EO),aiReferralLandingPages:y(DO),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(TO),socialSessions:m(),socialUsers:m(),channelBreakdown:RO,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 OO=p({propertyId:o(),displayName:o(),accountName:o()});p({properties:y(OO)});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:Mu,landingPage:o(),sessions:m(),users:m(),sourceDimension:mh});const BO=p({source:o(),sessions:m(),paidSessions:m(),organicSessions:m()}),qO=p({date:o(),sessions:m(),paidSessions:m(),organicSessions:m(),bySource:y(BO)});p({days:y(qO),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:Ve(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 Ck=A(["claude","openai","gemini","zai","deepinfra"]),MO=p({id:Ck,label:o(),defaultModel:o(),configured:_(),keySource:A(["config","env"]).nullable()});p({providers:y(MO).default([]),defaultProvider:Ck.nullable()});const PO=A(["aero","user","compaction"]);PO.enum;const Nk=128;p({key:o().min(1).max(Nk),value:o().min(1)});p({key:o().min(1).max(Nk)});const Oo=A(["commoncrawl","bing-webmaster"]);Oo.enum;const ph=A(["queued","downloading","querying","ready","failed"]);ph.enum;p({id:o(),release:o(),status:ph,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 IO=p({linkingDomain:o(),numHosts:m().int(),source:Oo}),VO=p({projectId:o(),release:o(),targetDomain:o(),totalLinkingDomains:m().int(),totalHosts:m().int(),top10HostsShare:o(),queriedAt:o(),source:Oo,excludedLinkingDomains:m().int().optional(),excludedHosts:m().int().optional()});p({source:Oo,summary:VO.nullable(),total:m().int(),rows:y(IO)});p({release:o(),totalLinkingDomains:m().int(),totalHosts:m().int(),top10HostsShare:o(),queriedAt:o(),source:Oo});const LO=p({source:Oo,connected:_(),hasData:_(),latestRelease:o().nullable(),totalLinkingDomains:m().int(),lastSyncedAt:o().nullable()});p({projectId:o(),targetDomain:o(),sources:y(LO),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:ph.nullable(),bytes:m().int(),lastUsedAt:o().nullable()});const hh=A(["positive","caution","negative","neutral"]),wi=p({label:o(),value:o(),delta:o(),tone:hh,description:o(),tooltip:o().optional(),trend:y(m()),progress:m().optional(),providerCoverage:o().optional()}),ev=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()}),UO=wi.extend({breakdown:ev,scope:A(["non-brand","pooled"]),branded:ev}),Sp=p({gained:m().int().nonnegative(),lost:m().int().nonnegative(),tone:hh,hasPreviousRun:_(),gainedQueries:y(o()).optional(),lostQueries:y(o()).optional()}),GO=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())}),$O=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()}),HO=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:Ve(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:Zz,latestRun:aR,health:HO.nullable(),topInsights:y($O),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:UO,gapQueries:wi,mentionGaps:wi,indexCoverage:wi,competitorPressure:wi,runStatus:wi}),movementSummary:Sp,citationMovement:Sp,mentionMovement:Sp,movementComparison:GO,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:hh,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 KO=p({kind:O("snapshot"),id:o(),runId:o(),query:o(),provider:o(),model:o().nullable(),citationState:Va,matchedField:A(["answerText","citedDomains","citedUrls","searchQueries","query"]),snippet:o(),createdAt:o()}),QO=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()}),ZO=qe("kind",[KO,QO]);p({query:o(),totalHits:m().int().nonnegative(),truncated:_(),hits:y(ZO)});const _k=A(["create","expand","refresh","add-schema"]);_k.enum;function sH(e){switch(e){case"create":return"Create";case"expand":return"Expand";case"refresh":return"Refresh";case"add-schema":return"Add schema"}}const zk=A(["gsc","competitor-evidence","both"]);zk.enum;const Ek=A(["high","medium","low"]);Ek.enum;const FO=A(["blog-post","comparison","listicle","how-to","guide","glossary"]);FO.enum;const Dk=A(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);Dk.enum;const fh=A(["ownable","ceded"]);fh.enum;const YO=p({url:o(),gscImpressions:m().nonnegative(),gscClicks:m().nonnegative(),gscAvgPosition:m().nonnegative().nullable(),organicSessions:m().nonnegative()}),XO=p({domain:o(),url:o(),title:o(),citationCount:m().int().nonnegative()}),JO=p({demand:m(),competitor:m(),absence:m(),gapSeverity:m()}),WO=p({actionId:o(),state:Dk,lastUpdated:o()}),Tk=p({targetRef:o(),query:o(),action:_k,ourBestPage:YO.nullable(),winningCompetitor:XO.nullable(),score:m(),scoreBreakdown:JO,drivers:y(o()),demandSource:zk,actionConfidence:Ek,existingAction:WO.nullable(),winnabilityClass:fh,winnability:m().min(0).max(1).nullable()});p({targets:y(Tk),contextMetrics:p({totalAiReferralSessions:m().int().nonnegative(),latestRunId:o(),runTimestamp:o()})});const eB=p({targetRef:o(),addressedUrl:o().nullable(),note:o().nullable(),dismissedAt:o()});p({dismissals:y(eB)});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 tB=p({targetQuery:o().trim().min(1),winnabilityClass:fh,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:tB,costMillicents:m().int().nonnegative(),generatedAt:o()});const nB=p({domain:o(),competitorType:Bu,hits:m().int().nonnegative(),updatedAt:o()});p({classifications:y(nB)});const aB=p({uri:o(),title:o(),domain:o(),isOurDomain:_(),isCompetitor:_(),citationCount:m().int().nonnegative(),providers:y(ht)}),Rk=p({query:o(),groundingSources:y(aB)});p({sources:y(Rk),latestRunId:o()});const Ok=p({query:o(),competitorDomains:y(o()),competitorCount:m().int().nonnegative(),missRate:m().min(0).max(1),lastSeenInRunId:o()});p({gaps:y(Ok),latestRunId:o()});const Bk=A(["ok","warn","fail","skipped"]);Bk.enum;const gh=A(["global","project"]);gh.enum;const qk=A(["auth","config","providers","integrations","database","schedules","agent"]);qk.enum;const iB=p({id:o(),category:qk,scope:gh,title:o(),status:Bk,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:Ve(o(),Sn()).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:gh,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(iB)});const sB=p({provider:o(),citationState:Va,cited:_(),mentioned:_(),runId:o(),runCreatedAt:o()}),oB=p({queryId:o(),query:o(),providers:y(sB),citedCount:m().int().nonnegative(),mentionedCount:m().int().nonnegative(),totalProviders:m().int().nonnegative()}),rB=p({queryId:o(),query:o(),provider:o(),citingCompetitors:y(o()),runId:o(),runCreatedAt:o()}),lB=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:lB,byQuery:y(oB),competitorGaps:y(rB),status:A(["ready","no-data"]),reason:A(["no-runs-yet","no-queries"]).optional()});const oH=[7,14,30,90],rH=30;Le([O(7),O(14),O(30),O(90)]).describe("Report window in days (7, 14, 30, or 90). Defaults to 30 when omitted.");const cB=A(["prompt","request-param","browser-geo","ignored"]),uB=p({label:o(),city:o(),region:o(),country:o(),otherConfiguredLabels:y(o())}),dB=p({provider:o(),treatment:cB,description:o()}),mB=p({generatedAt:o(),project:p({id:o(),name:o(),displayName:o(),canonicalDomain:o(),country:o(),language:o()}),location:uB.nullable(),providerLocationHandling:y(dB),periodStart:o().nullable(),periodEnd:o().nullable(),periodDays:m().int().positive()}),pB=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"])}))}),hB=p({citationState:A(["cited","not-cited","pending"]),answerMentioned:_().nullable(),model:o().nullable()}),fB=p({queries:y(o()),providers:y(o()),matrix:y(y(hB.nullable())),providerRates:y(p({provider:o(),citedCount:m(),mentionedCount:m(),totalCount:m(),citationRate:m(),mentionRate:m()}))}),gB=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())}))}),yB=p({projectCitationCount:m(),competitors:y(gB)}),bB=p({domain:o(),mentionCount:m(),totalCount:m(),pressureLabel:A(["High","Moderate","Low","None"]),mentionedQueries:y(o()),sharePct:m().nullable()}),jp=p({projectMentionCount:m(),totalAnswerSnapshots:m(),competitors:y(bB)}),vB=jp.extend({scope:A(["non-brand","pooled"]),nonBrand:jp,branded:jp}),xB=p({category:o(),label:o(),count:m(),sharePct:m()}),kB=p({categories:y(xB),topDomains:y(p({domain:o(),count:m(),isCompetitor:_()}))}),wB=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(wB),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())}),jB=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()}))}),AB=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()}))}),CB=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()}))}),NB=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()}))}),_B=p({provider:A(["google","bing"]).nullable(),total:m(),indexed:m(),notIndexed:m(),deindexed:m(),unknown:m(),indexedPct:m()}),zB=p({runId:o(),date:o(),citationRate:m(),citedQueryCount:m(),totalQueryCount:m(),mentionRate:m(),mentionedQueryCount:m(),providerRates:y(p({provider:o(),citationRate:m(),mentionRate:m()}))}),s0=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()}),EB=p({horizon:A(["immediate","short-term","medium-term"]),title:o(),rationale:o()}),ro=p({current:m(),prior:m(),deltaAbs:m(),deltaPct:m().nullable(),direction:A(["up","down","flat"]),window:m().optional()}),DB=p({provider:o(),current:m(),prior:m(),deltaAbs:m(),direction:A(["up","down","flat"])}),TB=p({enoughHistory:_(),headline:o(),citationRate:ro.nullable(),mentionRate:ro.nullable(),citedQueryCount:ro.nullable(),mentionedQueryCount:ro.nullable(),gscClicksDelta:ro.nullable(),aiReferralsDelta:ro.nullable(),comparisonWindowDays:m().int().positive(),providerMovements:y(DB),wins:y(s0),regressions:y(s0)});A(["agency","client"]);const RB=A(["agency","client","both"]),OB=A(["immediate","short-term","medium-term"]),BB=A(["high","medium","low"]);A(["positive","caution","negative","neutral"]);const qB=A(["content","competitors","provider","search-demand","indexing","location","monitoring"]),yh=p({audience:RB,priority:m(),horizon:OB,category:qB,title:o(),action:o(),why:y(o()),evidence:y(o()),successMetric:o(),confidence:BB,targetRef:o().optional()}),MB=p({headline:o(),overview:o(),actionItems:y(yh),confidenceNotes:y(o())}),PB=p({title:o(),detail:o(),severity:A(["positive","caution","negative","neutral"]),evidence:y(o())}),IB=p({priorities:y(yh),diagnostics:y(PB)});function lH(e){return e.horizon==="immediate"?"negative":e.confidence==="high"?"caution":e.confidence==="low"?"neutral":"caution"}function cH(e){switch(e){case"critical":return"Critical";case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}function uH(e){switch(e){case"immediate":return"Immediate";case"short-term":return"Short term";case"medium-term":return"Medium term"}}function dH(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 mH(e){switch(e){case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}p({meta:mB,executiveSummary:pB,citationScorecard:fB,competitorLandscape:yB,mentionLandscape:vB,aiSourceOrigin:kB,gsc:SB.nullable(),ga:jB.nullable(),socialReferrals:AB.nullable(),aiReferrals:CB.nullable(),serverActivity:NB.nullable(),indexingHealth:_B.nullable(),citationsTrend:y(zB),whatsChanged:TB,insights:y(s0),recommendedNextSteps:y(EB),actionPlan:y(yh),clientSummary:MB,agencyDiagnostics:IB,contentOpportunities:y(Tk),contentGaps:y(Ok),groundingSources:y(Rk)});const VB=Le([O(60),O(90)]),LB=A(["earliest","middle","prior","latest"]),lo=p({clicks:m().int().nonnegative(),impressions:m().int().nonnegative()}),Mk=p({name:LB,startDate:o(),endDate:o()}),UB=Mk.extend({totals:lo}),GB=Mk.extend({organicSessions:m().int().nonnegative()}),Ap=p({startDate:o(),endDate:o(),observedDays:m().int().nonnegative()}),Gc=p({verified:m().int().nonnegative(),claimedUnverified:m().int().nonnegative(),unknownAiLike:m().int().nonnegative()}),tv=p({total:m().int().nonnegative(),paid:m().int().nonnegative(),organic:m().int().nonnegative(),unknown:m().int().nonnegative()});p({contractVersion:O("organic-evidence/v1"),periodDays:VB,asOfDate:o().nullable(),coverage:p({gsc:_(),ga4:_(),server:_(),visibility:_()}),sourceCoverage:p({gsc:Ap.nullable(),ga4:Ap.nullable(),server:Ap.nullable(),visibility:p({completedAt:o(),ageDays:m().nonnegative()}).nullable()}),gsc:p({propertyTotals:lo,namedBrand:lo,namedNonBrand:lo,suppressedOrUnreportedResidual:lo,cohorts:y(UB)}).nullable(),ga4:p({organicSessions:m().int().nonnegative(),cohorts:y(GB)}).nullable(),gaAiReferrals:p({paidSessions:m().int().nonnegative(),organicSessions:m().int().nonnegative()}).nullable(),server:p({crawlerHits:Gc,userFetchHits:Gc,referralSessions:tv}).nullable(),visibility:p({runId:o(),completedAt:o(),ageDays:m().nonnegative(),answerPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative()}).nullable(),measurement:iz,pages:y(p({path:o(),gsc:lo,ga4OrganicSessions:m().int().nonnegative(),server:p({crawlerHits:Gc,userFetchHits:Gc,referralSessions:tv})})),findings:y(p({tone:A(["positive","caution","neutral"]),title:o(),detail:o()})),limitations:y(p({code:o(),detail:o()}))});const $B=A(["claude","codex"]);$B.enum;const HB=A(["claude","codex","all"]);HB.enum;const Pk=p({content:m().int().nonnegative(),sitemap:m().int().nonnegative(),robots:m().int().nonnegative(),asset:m().int().nonnegative(),other:m().int().nonnegative()}),KB=A(["content","sitemap","robots","asset","other"]),bh=A(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);bh.enum;const QB=A(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);QB.enum;const ZB=A(["raw-request","aggregate-bucket"]),FB=ZB.enum,YB=A(["observed","provider-aggregated","inferred"]),XB=YB.enum,JB=p({type:o().nullable(),labels:Ve(o(),o())}),WB=p({sourceType:bh,evidenceKind:O(FB["raw-request"]),confidence:O(XB.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:JB,providerLabels:Ve(o(),o())});p({events:y(WB),rawEntryCount:m().int().nonnegative(),skippedEntryCount:m().int().nonnegative(),nextPageToken:o().optional(),filter:o()});const Ik=A(["connected","paused","error","archived"]),pH=Ik.enum,Vk=A(["oauth","service-account"]);Vk.enum;const eq=A(["verified","claimed_unverified","unknown_ai_like"]),hH=eq.enum,tq=p({id:o().min(1),source:o().min(1),version:o().min(1)}),Lk=p({manifestId:o().min(1),manifest:tq.nullable(),hits:m().int().nonnegative()});p({gcpProjectId:o().min(1),serviceName:o().nullable().optional(),location:o().nullable().optional(),authMode:Vk});p({baseUrl:o().url(),username:o().min(1)});const vh=A(["production","preview"]);vh.enum;p({projectId:o().min(1),teamId:o().min(1),environment:vh});const Uk=p({id:o(),projectId:o(),sourceType:bh,displayName:o(),status:Ik,lastSyncedAt:o().nullable(),lastCursor:o().nullable(),lastError:o().nullable(),skippedThroughAt:o().nullable(),queueBacklogCount:m().int().nonnegative().nullable(),queueBacklogObservedAt:o().nullable(),archivedAt:o().nullable(),config:Ve(o(),Sn()),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:vh.optional(),displayName:o().min(1).optional()});const nq=A(["direct-push","queue-pull"]),Bo=nq.enum,xh=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"),Gk=p({schemaVersion:O(1),workerVersion:o().min(1),expectedBotListVersion:o().min(1),zoneId:o().nullable()}),aq=Gk.extend({deliveryMode:O(Bo["direct-push"]),accountId:o().nullable()}),iq=Gk.extend({deliveryMode:O(Bo["queue-pull"]),accountId:o().min(1),queueId:o().min(1),queueName:xh,retentionSeconds:m().int().min(60).max(1209600)});function $k(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;const a=e;return"deliveryMode"in a?e:{...a,deliveryMode:"direct-push"}}z0($k,qe("deliveryMode",[aq,iq]));const Hk=p({displayName:o().min(1).optional(),zoneId:o().min(1).optional()}),sq=Hk.extend({deliveryMode:O(Bo["direct-push"]),accountId:o().min(1).optional()}),oq=Hk.extend({deliveryMode:O(Bo["queue-pull"]),accountId:o().min(1),queueId:o().min(1),queueName:xh,retentionSeconds:m().int().min(60).max(1209600),apiToken:o().min(1)});z0($k,qe("deliveryMode",[sq,oq]));const Kk=p({sourceId:o().min(1),workerScript:o().min(1),wranglerToml:o().min(1),workerVersion:o().min(1),instructions:o().min(1)}),rq=Kk.extend({deliveryMode:O(Bo["direct-push"]),activationRequired:_().default(!1)}),lq=Kk.extend({deliveryMode:O(Bo["queue-pull"]),activationRequired:_().default(!1),accountId:o().min(1),queueId:o().min(1),queueName:xh,retentionSeconds:m().int().min(60).max(1209600)});qe("deliveryMode",[rq,lq]);const cq=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(cq).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:ca,windowStart:o(),windowEnd:o(),daysRequested:m().int().positive(),daysApplied:m().int().positive()});const uq=p({crawlerHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),crawlerInfraHits:m().int().nonnegative(),crawlerSegments:Pk,aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralLandedHits:m().int().nonnegative(),aiReferralRedirectedHits:m().int().nonnegative(),sampleCount:m().int().nonnegative()});p({sources:y(Uk)});const dq=Uk.extend({totals24h:uq,latestRun:p({runId:o(),status:ca,startedAt:o().nullable(),finishedAt:o().nullable(),error:o().nullable()}).nullable()});p({sources:y(dq)});const mq=A(["crawler","ai-user-fetch","ai-referral"]),kh=mq.enum,Qk=A(["hour","day"]);Qk.enum;const pq=p({bucket:o(),crawlerHits:m().int().nonnegative(),aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralLandedHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),measured:_()}),hq=p({kind:O(kh.crawler),sourceId:o(),tsHour:o(),botId:o(),operator:o(),verificationStatus:o(),verificationManifests:y(Lk).optional(),verificationUnattributedHits:m().int().nonnegative().optional(),pathNormalized:o(),pathClass:KB,status:m().int(),hits:m().int().nonnegative()}),fq=p({kind:O(kh["ai-user-fetch"]),sourceId:o(),tsHour:o(),botId:o(),operator:o(),verificationStatus:o(),verificationManifests:y(Lk).optional(),verificationUnattributedHits:m().int().nonnegative().optional(),pathNormalized:o(),status:m().int(),hits:m().int().nonnegative()}),gq=p({kind:O(kh["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()}),yq=qe("kind",[hq,fq,gq]);p({windowStart:o(),windowEnd:o(),series:p({granularity:Qk,points:y(pq),coverageStart:o().nullable(),trends:p({crawlerContentHits:ls.nullable(),aiUserFetchHits:ls.nullable(),aiReferralLandedHits:ls.nullable()})}),totals:p({crawlerHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),crawlerInfraHits:m().int().nonnegative(),crawlerSegments:Pk,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(yq)});const Zk=A(["queued","running","completed","partial","failed"]),fH=Zk.enum,Fk=A(["queued","running","completed","failed"]),gH=Fk.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:un.nullable().optional(),idempotencyKey:o().trim().min(1).max(128).optional()}).superRefine((e,a)=>{e.model&&!e.provider&&a.addIssue({code:Je.custom,path:["provider"],message:"provider is required when model is supplied"})});const Yk=p({id:o(),projectId:o(),status:Zk,provider:o(),requestedModel:o().nullable(),resolvedModel:o(),location:un.nullable(),totalQueries:m().int(),completedQueries:m().int(),failedQueries:m().int(),error:o().nullable(),startedAt:o().nullable(),finishedAt:o().nullable(),createdAt:o()}),bq=p({id:o(),position:m().int(),query:o(),status:Fk,requestedModel:o().nullable(),resolvedModel:o(),servedModel:o().nullable(),answerText:o().nullable(),groundingSources:y(Du),citedDomains:y(o()),searchQueries:y(o()),namedCompetitors:y(o()).default([]),citedCompetitorDomains:y(o()).default([]),answerMentioned:_().nullable(),citationState:Va.nullable(),error:o().nullable(),startedAt:o().nullable(),finishedAt:o().nullable(),createdAt:o()});Yk.extend({queries:y(bq)});p({runs:y(Yk)});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 vq=p({id:o(),type:o(),canonicalName:o(),countryCode:o(),name:o(),regionCode:o().nullable()});p({count:m().int().nonnegative(),query:o(),results:y(vq)});const xq=p({id:o(),clientType:o().optional(),name:o().optional(),pixelId:o().optional()});p({pixels:y(xq)});const kq=p({id:o(),name:o().optional()}),wq=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(kq).optional(),archived:_().optional(),version:m().int().nonnegative().optional()});p({eventSettings:y(wq)});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()}),cl=A(["impressions","clicks"]),jq=cl.enum,ul=A(["impression","click"]);ul.enum;const Aq=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()}),Cq=p({id:o(),campaignId:o(),name:o(),description:o().nullable().optional(),status:o(),billingEventType:Le([ul,le()]).optional(),maxBidMicros:m().int().nullable().optional(),contextHints:y(o()).default([]),ads:y(Aq).default([]),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:o().optional()}),Nq=p({id:o(),name:o(),description:o().nullable().optional(),status:o(),startTime:m().int().nullable().optional(),endTime:m().int().nullable().optional(),biddingType:Le([cl,le()]).optional(),dailySpendLimitMicros:m().int().nullable().optional(),lifetimeSpendLimitMicros:m().int().nullable().optional(),conversionEventSettingIds:y(o()).default([]),locationIds:y(o()).optional(),adGroups:y(Cq).default([]),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:o().optional()});p({campaigns:y(Nq)});const Xk=A(["campaign","ad_group"]);Xk.enum;const _q=p({level:Xk,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(_q),currencyCode:o().nullable().optional()});const Jk=p({from:o().nullable(),to:o().nullable(),inProgressDate:o().nullable()}),Wk=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:Jk,totals:Wk});const e3=A(["unavailable","partial","complete"]);e3.enum;const t3=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"]);t3.enum;const n3=A(["unavailable","reported"]);n3.enum;const zq={storedSnapshot:"stored_ads_snapshot"},a3=A(["unavailable","partial_snapshot","metrics_unavailable","observed_activity","no_observed_activity"]);a3.enum;const Eq=p({id:o(),name:o(),status:o(),reviewStatus:o().nullable()}),Dq=p({id:o(),name:o(),status:o(),billingEventType:Le([ul,le()]),maxBidMicros:m().int().nullable(),contextHints:y(o()),ads:y(Eq)}),Tq=p({id:o(),name:o(),status:o(),biddingType:Le([cl,le()]),dailySpendLimitMicros:m().int().nullable(),lifetimeSpendLimitMicros:m().int().nullable(),conversionEventSettingIds:y(o()),adGroups:y(Dq)});p({snapshot:p({status:e3,issue:Le([t3,le()]),lastSyncedAt:o().nullable(),campaignCount:m().int().nonnegative(),adGroupCount:m().int().nonnegative(),adCount:m().int().nonnegative(),sourceSync:p({runId:o(),status:ca}).nullable()}),historicalCampaignRollups:p({status:n3,window:Jk,totals:Wk.nullable()}),storedConfiguration:p({basis:O(zq.storedSnapshot),connection:p({status:o().nullable(),reviewStatus:o().nullable(),integrityReviewStatus:o().nullable(),integrityDecision:o().nullable(),conversionTrackingConfigured:_()}).nullable(),campaigns:y(Tq)}),assessment:p({state:a3})});const $a=o().min(8).max(128).regex(/^[\w.:-]+$/,"operationKey may contain letters, numbers, dot, underscore, colon, and hyphen"),bt=o().min(1).max(200),fs=o().min(3).max(1e3).refine(e=>e.trim().length>0),So=m().int().min(946684800).max(4102444800),jo=m().int().positive().max(Number.MAX_SAFE_INTEGER),wh=o().regex(/^[a-f0-9]{64}$/),i3=y(bt).max(100).refine(e=>new Set(e).size===e.length,"conversionEventSettingIds must be unique"),s3=o().url().refine(e=>new URL(e).protocol==="https:",{message:"URL must use https"}),o3=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"]);o3.enum;const r3=A(["pending","reconciling","succeeded","failed","unknown"]),fo=r3.enum,l3=A(["known_entity","create_fingerprint","manual_only"]);l3.enum;const c3=A([fo.pending,fo.unknown,fo.reconciling]);c3.enum;const u3=A(["active","paused","archived"]);u3.enum;const d3=A(["file","campaign","ad_group","ad"]);d3.enum;const m3=A(["campaign","ad_group","ad"]);m3.enum;const Sh=p({id:bt,expectedUpdatedAt:m().int().nonnegative()}).strict(),Rq=Sh,uu=1e3;function Oq(e){return 1+e.campaign.adGroups.reduce((a,s)=>a+1+s.ads.length,0)}const Bq=Sh.extend({ads:y(Rq).min(1).max(uu-1)}).strict(),qq=Sh.extend({adGroups:y(Bq).min(1).max(uu-1)}).strict();function Mq(e,a){return e<a?-1:e>a?1:0}function nv(e,a,s){for(let r=1;r<e.length;r+=1)if(Mq(e[r-1].id,e[r].id)>=0){s.addIssue({code:"custom",path:a,message:"Activation manifest entities must be uniquely sorted by id"});return}}const p3=p({campaign:qq}).strict().superRefine((e,a)=>{Oq(e)>uu&&a.addIssue({code:"custom",path:["campaign"],message:`Activation manifests may contain at most ${uu} entities`}),nv(e.campaign.adGroups,["campaign","adGroups"],a);const r=new Set;for(let u=0;u<e.campaign.adGroups.length;u+=1){const f=e.campaign.adGroups[u];nv(f.ads,["campaign","adGroups",u,"ads"],a);for(let g=0;g<f.ads.length;g+=1){const b=f.ads[g];r.has(b.id)&&a.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)}}}),h3=wh,Pq=A(["approved","executing","consumed","revoked","expired","unknown"]),Ia=Pq.enum,Iq=A(["pending","executing","active","failed","rollback_executing","rolled_back","rollback_failed","unknown"]),Ei=Iq.enum,Vq=p({name:fs.optional(),description:o().max(4e3).nullable().optional(),status:u3.optional(),startTime:So.nullable().optional(),endTime:So.nullable().optional(),lifetimeSpendLimitMicros:jo.min(1e6).optional(),locationIds:y(bt).max(100).optional(),biddingType:cl.optional(),conversionEventSettingIds:i3.optional(),campaignId:bt.optional(),contextHints:y(o().min(1).max(1e3)).max(100).optional(),maxBidMicros:jo.max(1e8).optional(),billingEventType:ul.optional(),adGroupId:bt.optional(),creativeFingerprint:wh.optional()}).strict();p({operationKey:$a,imageUrl:s3});p({operationKey:$a,name:fs,description:o().max(4e3).optional(),startTime:So.optional(),endTime:So.optional(),lifetimeSpendLimitMicros:jo.min(1e6),locationIds:y(bt).min(1).max(100),biddingType:cl.optional(),conversionEventSettingIds:i3.optional()}).superRefine((e,a)=>{e.startTime!==void 0&&e.endTime!==void 0&&e.endTime<=e.startTime&&a.addIssue({code:"custom",path:["endTime"],message:"endTime must be after startTime"}),e.biddingType===jq.clicks&&(e.conversionEventSettingIds===void 0||e.conversionEventSettingIds.length===0)&&a.addIssue({code:"custom",path:["conversionEventSettingIds"],message:"conversionEventSettingIds must be non-empty when biddingType is clicks"})});p({operationKey:$a,campaignId:bt,name:fs,description:o().max(4e3).optional(),contextHints:y(o().min(1).max(1e3)).min(1).max(100),maxBidMicros:jo.max(1e8),billingEventType:ul.optional()});const f3=p({title:o().min(3).max(50),body:o().min(1).max(100),targetUrl:s3,fileId:bt});p({operationKey:$a,adGroupId:bt,name:fs,creative:f3});function jh(e){return Object.keys(e).some(a=>a!=="operationKey"&&a!=="expectedUpdatedAt")}p({operationKey:$a,expectedUpdatedAt:m().int().nonnegative(),name:fs.optional(),description:o().max(4e3).nullable().optional(),startTime:So.nullable().optional(),endTime:So.nullable().optional(),lifetimeSpendLimitMicros:jo.min(1e6).optional(),locationIds:y(bt).min(1).max(100).optional()}).refine(jh,{message:"At least one campaign field must be updated"});p({operationKey:$a,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:jo.max(1e8).optional()}).refine(jh,{message:"At least one ad group field must be updated"});p({operationKey:$a,expectedUpdatedAt:m().int().nonnegative(),name:fs.optional(),creative:f3.optional()}).refine(jh,{message:"At least one ad field must be updated"});p({operationKey:$a});const Pu=p({id:o(),adAccountId:o().nullable(),operationKey:o(),kind:o3,state:r3,entityType:Le([d3,le()]),entityId:o().nullable(),upstreamUpdatedAt:m().int().nullable(),errorCode:o().nullable(),errorMessage:o().nullable(),reconcileStrategy:Le([l3,le()]),reconcileParentId:bt.nullable(),reconcileFingerprint:wh.nullable(),reconcileFields:Vq.nullable(),reconcileAttempts:m().int().nonnegative(),lastReconciledAt:o().nullable(),createdAt:o(),updatedAt:o()});p({operation:Pu,replayed:_()});const pt=Xx({offset:!0}),qo={id:bt,projectId:bt,adAccountId:bt,manifestHash:h3,manifest:p3,executorApiKeyId:bt,approverApiKeyId:bt,expiresAt:pt,approvedAt:pt,createdAt:pt,updatedAt:pt,revocationRequestedAt:pt.nullable()},Lq=p({...qo,state:O(Ia.approved),operationId:le(),executionStartedAt:le(),consumedAt:le(),revokedAt:le(),expiredAt:le()}).strict(),Uq=p({...qo,state:O(Ia.executing),operationId:bt,executionStartedAt:pt,consumedAt:le(),revokedAt:le(),expiredAt:le()}).strict(),Gq=p({...qo,state:O(Ia.consumed),operationId:bt,executionStartedAt:pt,consumedAt:pt,revokedAt:le(),expiredAt:le()}).strict(),$q=p({...qo,state:O(Ia.revoked),operationId:le(),executionStartedAt:le(),consumedAt:le(),revokedAt:pt,expiredAt:le()}).strict(),Hq=p({...qo,state:O(Ia.expired),operationId:le(),executionStartedAt:le(),consumedAt:le(),revokedAt:le(),expiredAt:pt}).strict(),Kq=p({...qo,state:O(Ia.unknown),operationId:bt,executionStartedAt:pt,consumedAt:le(),revokedAt:le(),expiredAt:le()}).strict(),g3=qe("state",[Lq,Uq,Gq,$q,Hq,Kq]).superRefine((e,a)=>{e.executorApiKeyId===e.approverApiKeyId&&a.addIssue({code:"custom",path:["executorApiKeyId"],message:"The activation executor must use a different API key from the approver"}),e.revocationRequestedAt!==null&&e.state!==Ia.executing&&e.state!==Ia.unknown&&e.state!==Ia.consumed&&a.addIssue({code:"custom",path:["revocationRequestedAt"],message:"Only an executing, cancelled, or unresolved activation can carry a cancellation request"})}),Di={id:bt,operationId:bt,ordinal:m().int().nonnegative(),entityType:m3,entityId:bt,expectedUpdatedAt:m().int().nonnegative(),createdAt:pt,updatedAt:pt},dl={errorCode:le(),errorMessage:le()},Ah={errorCode:o().min(1).max(100),errorMessage:o().min(1).max(500),remediation:o().min(1).max(500)},Qq=p({...Di,...dl,state:O(Ei.pending),providerUpdatedAt:le(),remediation:le(),startedAt:le(),finishedAt:le()}).strict(),Zq=p({...Di,...dl,state:O(Ei.executing),providerUpdatedAt:le(),remediation:le(),startedAt:pt,finishedAt:le()}).strict(),Fq=p({...Di,...dl,state:O(Ei.active),providerUpdatedAt:m().int().nonnegative(),remediation:le(),startedAt:pt,finishedAt:pt}).strict(),Yq=p({...Di,...Ah,state:O(Ei.failed),providerUpdatedAt:Le([m().int().nonnegative(),le()]),startedAt:pt,finishedAt:pt}).strict(),Xq=p({...Di,...dl,state:O(Ei.rollback_executing),providerUpdatedAt:m().int().nonnegative(),remediation:o().min(1).max(500),startedAt:pt,finishedAt:le()}).strict(),Jq=p({...Di,...dl,state:O(Ei.rolled_back),providerUpdatedAt:m().int().nonnegative(),remediation:o().min(1).max(500),startedAt:pt,finishedAt:pt}).strict(),Wq=p({...Di,...Ah,state:O(Ei.rollback_failed),providerUpdatedAt:m().int().nonnegative(),startedAt:pt,finishedAt:pt}).strict(),eM=p({...Di,...Ah,state:O(Ei.unknown),providerUpdatedAt:Le([m().int().nonnegative(),le()]),startedAt:pt,finishedAt:pt}).strict(),tM=qe("state",[Qq,Zq,Fq,Yq,Xq,Jq,Wq,eM]),o0={exact:"exact",refreshSemanticallyUnchanged:"refresh_semantically_unchanged"},nM=A([o0.exact,o0.refreshSemanticallyUnchanged]);p({manifest:p3,executorApiKeyId:bt,expiresAt:pt,versionPolicy:nM.default(o0.exact)}).strict();p({grant:g3}).strict();p({}).strict();p({operationKey:$a,grantId:bt,manifestHash:h3}).strict();p({grant:g3,operation:Pu,steps:y(tM)}).strict();const aM=[fo.pending,fo.unknown,fo.reconciling];function iM(e){if(e===void 0||e==="")return aM;if(Array.isArray(e)){const a=[];for(const s of e)typeof s=="string"?a.push(...s.split(",")):a.push(s);return a}return typeof e=="string"?e.split(",").filter(Boolean):e}p({state:z0(iM,y(c3).min(1).max(3).refine(e=>new Set(e).size===e.length,"state values must be unique")),limit:i2().int().min(1).max(200).default(100),cursor:o().min(1).max(1e3).optional()});p({operations:y(Pu),count:m().int().nonnegative(),nextCursor:o().nullable()});p({}).strict();p({operation:Pu,resolved:_()});p({campaignId:o().min(1).max(200).optional(),lookbackDays:i2().int().min(1).max(30).default(7)});const y3=A(["campaign","ad_group","ad"]);y3.enum;const b3=A(["both","live-only","stored-only"]);b3.enum;const sM=O("live-provider-read"),oM=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()}),av=p({impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int()}),rM=p({date:o(),live:av.nullable(),stored:av.nullable(),drifted:_()}),lM=p({field:o(),live:o().nullable(),stored:o().nullable()}),cM=p({name:o().nullable(),status:o(),reviewStatus:o().nullable(),mode:o().nullable(),updatedAt:m().nullable()}),uM=p({name:o(),status:o(),reviewStatus:o().nullable(),upstreamUpdatedAt:m().nullable(),syncedAt:o()}),dM=p({entityType:y3,id:o(),parentId:o().nullable(),presence:b3,live:cM.nullable(),stored:uM.nullable(),fieldDeltas:y(lM),liveMetrics:y(oM).nullable(),metricDeltas:y(rM).nullable(),drifted:_()}),mM=p({surface:o(),entityId:o().nullable(),upstreamStatus:m().int().nullable()});p({basis:sM,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(dM),drift:p({entitiesCompared:m().int().nonnegative(),driftedEntities:m().int().nonnegative(),statusDrifted:m().int().nonnegative(),metricsDrifted:m().int().nonnegative()}),errors:y(mM)});const v3=A(["admin","viewer"]),pM=/^[a-z\d][\w.-]{0,63}$/i,hM=o().regex(pM,"A name may use letters, digits, dots, dashes and underscores, and must start with a letter or digit."),iv=12,fM=o().min(iv,`A password must be at least ${iv} characters.`),x3=p({id:o(),name:o(),role:v3,createdAt:o(),lastLoginAt:o().nullable()});p({users:y(x3)});p({name:hM,password:fM,role:v3});p({name:o().min(1),password:o().min(1)});p({authRequired:_(),user:x3.pick({name:!0,role:!0}).nullable()});const Xe=1,Cp=A(["system","project","queries","competitors","run"]),Np=A(["0","1","2-3","4-5","6-10","11+"]);function ya(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 sv=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","rate_limited","provider_auth","network","unknown"]),gM=A(["wizard","platform","site_health"]),$c=p({eventId:o().uuid(),flowVersion:O(Xe),onboardingSessionId:o().uuid(),surface:gM.optional()});qe("event",[$c.extend({event:O("onboarding.started"),step:Cp,resumed:_()}).strict(),$c.extend({event:O("onboarding.step_completed"),step:Cp,method:A(["existing","inline","manual","generated","skipped","automatic"]),countBucket:Np.optional()}).strict(),$c.extend({event:O("onboarding.blocked"),step:Cp,action:A(["continue","configure_provider","generate_queries","save","launch_run","retry_run"]),reasonCode:sv}).strict(),$c.extend({event:O("run.requested"),origin:O("dashboard_setup"),result:A(["queued","rejected"]),kind:A(["answer_visibility","site_health"]).optional(),providerCountBucket:Np,queryCountBucket:Np,reasonCode:sv.optional()}).strict()]);p({accepted:_()});const yM=4;function bM(e){return e.length<yM}var vM=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(vM||{});const yH={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},bH={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},xM=ih;function kM(e){const a=[];if(e.message&&a.push(e.message),e.providers)for(const[s,r]of Object.entries(e.providers)){const u=`[${s}] ${r.message}`;r.raw!==void 0?a.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(a===g[0]){f(g);continue}if(e.external){const k=e.external.registry.get(g[0])?.id;if(a!==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 Fx(e,a){const s=e.seen.get(a);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),D=j.schema;if(D.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(x.allOf=x.allOf??[],x.allOf.push(D)):Object.assign(x,D),Object.assign(x,k),g._zod.parent===S)for(const q in x)q==="$ref"||q==="allOf"||q in k||delete x[q];if(D.$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 D in x)D==="$ref"||D==="allOf"||D in j.def&&JSON.stringify(x[D])===JSON.stringify(j.def[D])&&delete x[D]}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(a)?.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:{...a["~standard"],jsonSchema:{input:tu(a,"input",e.processors),output:tu(a,"output",e.processors)}},enumerable:!1,writable:!1}),g}catch{throw new Error("Error converting schema to JSON.")}}function on(e,a){const s=a??{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 on(r.element,s);if(r.type==="set")return on(r.valueType,s);if(r.type==="lazy")return on(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 on(r.innerType,s);if(r.type==="intersection")return on(r.left,s)||on(r.right,s);if(r.type==="record"||r.type==="map")return on(r.keyType,s)||on(r.valueType,s);if(r.type==="pipe")return on(r.in,s)||on(r.out,s);if(r.type==="object"){for(const u in r.shape)if(on(r.shape[u],s))return!0;return!1}if(r.type==="union"){for(const u of r.options)if(on(u,s))return!0;return!1}if(r.type==="tuple"){for(const u of r.items)if(on(u,s))return!0;return!!(r.rest&&on(r.rest,s))}return!1}const u7=(e,a={})=>s=>{const r=Qx({...s,processors:a});return Mt(e,r),Zx(r,e),Fx(r,e)},tu=(e,a,s={})=>r=>{const{libraryOptions:u,target:f}=r??{},g=Qx({...u??{},target:f,io:a,processors:s});return Mt(e,g),Zx(g,e),Fx(g,e)},d7={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},m7=(e,a,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=d7[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=>({...a.target==="draft-07"||a.target==="draft-04"||a.target==="openapi-3.0"?{type:"string"}:{},pattern:C.source}))])}},p7=(e,a,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"&&(a.target==="draft-04"||a.target==="openapi-3.0"?(u.minimum=S,u.exclusiveMinimum=!0):u.exclusiveMinimum=S),typeof f=="number"&&(u.minimum=f,typeof S=="number"&&a.target!=="draft-04"&&(S>=f?delete u.minimum:delete u.exclusiveMinimum)),typeof k=="number"&&(a.target==="draft-04"||a.target==="openapi-3.0"?(u.maximum=k,u.exclusiveMaximum=!0):u.exclusiveMaximum=k),typeof g=="number"&&(u.maximum=g,typeof k=="number"&&a.target!=="draft-04"&&(k<=g?delete u.maximum:delete u.exclusiveMaximum)),typeof x=="number"&&(u.multipleOf=x)},h7=(e,a,s,r)=>{s.type="boolean"},f7=(e,a,s,r)=>{a.target==="openapi-3.0"?(s.type="string",s.nullable=!0,s.enum=[null]):s.type="null"},g7=(e,a,s,r)=>{s.not={}},y7=(e,a,s,r)=>{},b7=(e,a,s,r)=>{const u=e._zod.def,f=Cx(u.entries);f.every(g=>typeof g=="number")&&(s.type="number"),f.every(g=>typeof g=="string")&&(s.type="string"),s.enum=f},v7=(e,a,s,r)=>{const u=e._zod.def,f=[];for(const g of u.values)if(g===void 0){if(a.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof g=="bigint"){if(a.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,a.target==="draft-04"||a.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},x7=(e,a,s,r)=>{if(a.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},k7=(e,a,s,r)=>{if(a.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},w7=(e,a,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,a,{...r,path:[...r.path,"items"]})},S7=(e,a,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],a,{...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 a.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,a,{...r,path:[...r.path,"additionalProperties"]})):a.io==="output"&&(u.additionalProperties=!1)},j7=(e,a,s,r)=>{const u=e._zod.def,f=u.inclusive===!1,g=u.options.map((b,x)=>Mt(b,a,{...r,path:[...r.path,f?"oneOf":"anyOf",x]}));f?s.oneOf=g:s.anyOf=g},A7=(e,a,s,r)=>{const u=e._zod.def,f=Mt(u.left,a,{...r,path:[...r.path,"allOf",0]}),g=Mt(u.right,a,{...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},C7=(e,a,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,a,{...r,path:[...r.path,"patternProperties","*"]});u.patternProperties={};for(const C of x)u.patternProperties[C.source]=S}else(a.target==="draft-07"||a.target==="draft-2020-12")&&(u.propertyNames=Mt(f.keyType,a,{...r,path:[...r.path,"propertyNames"]})),u.additionalProperties=Mt(f.valueType,a,{...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)}},N7=(e,a,s,r)=>{const u=e._zod.def,f=Mt(u.innerType,a,r),g=a.seen.get(e);a.target==="openapi-3.0"?(g.ref=u.innerType,s.nullable=!0):s.anyOf=[f,{type:"null"}]},_7=(e,a,s,r)=>{const u=e._zod.def;Mt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType},z7=(e,a,s,r)=>{const u=e._zod.def;Mt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType,s.default=JSON.parse(JSON.stringify(u.defaultValue))},E7=(e,a,s,r)=>{const u=e._zod.def;Mt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType,a.io==="input"&&(s._prefault=JSON.parse(JSON.stringify(u.defaultValue)))},D7=(e,a,s,r)=>{const u=e._zod.def;Mt(u.innerType,a,r);const f=a.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},T7=(e,a,s,r)=>{const u=e._zod.def,f=a.io==="input"?u.in._zod.def.type==="transform"?u.out:u.in:u.out;Mt(f,a,r);const g=a.seen.get(e);g.ref=f},R7=(e,a,s,r)=>{const u=e._zod.def;Mt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType,s.readOnly=!0},Yx=(e,a,s,r)=>{const u=e._zod.def;Mt(u.innerType,a,r);const f=a.seen.get(e);f.ref=u.innerType},O7=Z("ZodISODateTime",(e,a)=>{DN.init(e,a),jt.init(e,a)});function Xx(e){return P8(O7,e)}const B7=Z("ZodISODate",(e,a)=>{TN.init(e,a),jt.init(e,a)});function Jx(e){return I8(B7,e)}const q7=Z("ZodISOTime",(e,a)=>{RN.init(e,a),jt.init(e,a)});function M7(e){return V8(q7,e)}const P7=Z("ZodISODuration",(e,a)=>{ON.init(e,a),jt.init(e,a)});function I7(e){return L8(P7,e)}const V7=(e,a)=>{Ex.init(e,a),e.name="ZodError",Object.defineProperties(e,{format:{value:s=>SC(e,s)},flatten:{value:s=>wC(e,s)},addIssue:{value:s=>{e.issues.push(s),e.message=JSON.stringify(e.issues,Vp,2)}},addIssues:{value:s=>{e.issues.push(...s),e.message=JSON.stringify(e.issues,Vp,2)}},isEmpty:{get(){return e.issues.length===0}}})},Kn=Z("ZodError",V7,{Parent:Error}),L7=A0(Kn),U7=C0(Kn),G7=bu(Kn),$7=vu(Kn),H7=CC(Kn),K7=NC(Kn),Q7=_C(Kn),Z7=zC(Kn),F7=EC(Kn),Y7=DC(Kn),X7=TC(Kn),J7=RC(Kn),wt=Z("ZodType",(e,a)=>(xt.init(e,a),Object.assign(e["~standard"],{jsonSchema:{input:tu(e,"input"),output:tu(e,"output")}}),e.toJSONSchema=u7(e,{}),e.def=a,e.type=a.type,Object.defineProperty(e,"_def",{value:a}),e.check=(...s)=>e.clone(Ni(a,{checks:[...a.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)=>L7(e,s,r,{callee:e.parse}),e.safeParse=(s,r)=>G7(e,s,r),e.parseAsync=async(s,r)=>U7(e,s,r,{callee:e.parseAsync}),e.safeParseAsync=async(s,r)=>$7(e,s,r),e.spa=e.safeParseAsync,e.encode=(s,r)=>H7(e,s,r),e.decode=(s,r)=>K7(e,s,r),e.encodeAsync=async(s,r)=>Q7(e,s,r),e.decodeAsync=async(s,r)=>Z7(e,s,r),e.safeEncode=(s,r)=>F7(e,s,r),e.safeDecode=(s,r)=>Y7(e,s,r),e.safeEncodeAsync=async(s,r)=>X7(e,s,r),e.safeDecodeAsync=async(s,r)=>J7(e,s,r),e.refine=(s,r)=>e.check(H_(s,r)),e.superRefine=s=>e.check(K_(s)),e.overwrite=s=>e.check(zo(s)),e.optional=()=>ab(e),e.exactOptional=()=>T_(e),e.nullable=()=>ib(e),e.nullish=()=>ab(ib(e)),e.nonoptional=s=>P_(e,s),e.array=()=>y(e),e.or=s=>Le([e,s]),e.and=s=>N_(e,s),e.transform=s=>Gp(e,t2(s)),e.default=s=>B_(e,s),e.prefault=s=>M_(e,s),e.catch=s=>V_(e,s),e.pipe=s=>Gp(e,s),e.readonly=()=>G_(e),e.describe=s=>{const r=e.clone();return Vr.add(r,{description:s}),r},Object.defineProperty(e,"description",{get(){return Vr.get(e)?.description},configurable:!0}),e.meta=(...s)=>{if(s.length===0)return Vr.get(e);const r=e.clone();return Vr.add(r,s[0]),r},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=s=>s(e),e)),Wx=Z("_ZodString",(e,a)=>{N0.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(r,u,f)=>m7(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(F8(...r)),e.includes=(...r)=>e.check(J8(...r)),e.startsWith=(...r)=>e.check(W8(...r)),e.endsWith=(...r)=>e.check(e7(...r)),e.min=(...r)=>e.check(eu(...r)),e.max=(...r)=>e.check(Hx(...r)),e.length=(...r)=>e.check(Kx(...r)),e.nonempty=(...r)=>e.check(eu(1,...r)),e.lowercase=r=>e.check(Y8(r)),e.uppercase=r=>e.check(X8(r)),e.trim=()=>e.check(n7()),e.normalize=(...r)=>e.check(t7(...r)),e.toLowerCase=()=>e.check(a7()),e.toUpperCase=()=>e.check(i7()),e.slugify=()=>e.check(s7())}),W7=Z("ZodString",(e,a)=>{N0.init(e,a),Wx.init(e,a),e.email=s=>e.check(y8(e_,s)),e.url=s=>e.check(w8(t_,s)),e.jwt=s=>e.check(M8(g_,s)),e.emoji=s=>e.check(S8(n_,s)),e.guid=s=>e.check(Xy(tb,s)),e.uuid=s=>e.check(b8(qc,s)),e.uuidv4=s=>e.check(v8(qc,s)),e.uuidv6=s=>e.check(x8(qc,s)),e.uuidv7=s=>e.check(k8(qc,s)),e.nanoid=s=>e.check(j8(a_,s)),e.guid=s=>e.check(Xy(tb,s)),e.cuid=s=>e.check(A8(i_,s)),e.cuid2=s=>e.check(C8(s_,s)),e.ulid=s=>e.check(N8(o_,s)),e.base64=s=>e.check(O8(p_,s)),e.base64url=s=>e.check(B8(h_,s)),e.xid=s=>e.check(_8(r_,s)),e.ksuid=s=>e.check(z8(l_,s)),e.ipv4=s=>e.check(E8(c_,s)),e.ipv6=s=>e.check(D8(u_,s)),e.cidrv4=s=>e.check(T8(d_,s)),e.cidrv6=s=>e.check(R8(m_,s)),e.e164=s=>e.check(q8(f_,s)),e.datetime=s=>e.check(Xx(s)),e.date=s=>e.check(Jx(s)),e.time=s=>e.check(M7(s)),e.duration=s=>e.check(I7(s))});function o(e){return g8(W7,e)}const jt=Z("ZodStringFormat",(e,a)=>{kt.init(e,a),Wx.init(e,a)}),e_=Z("ZodEmail",(e,a)=>{wN.init(e,a),jt.init(e,a)}),tb=Z("ZodGUID",(e,a)=>{xN.init(e,a),jt.init(e,a)}),qc=Z("ZodUUID",(e,a)=>{kN.init(e,a),jt.init(e,a)}),t_=Z("ZodURL",(e,a)=>{SN.init(e,a),jt.init(e,a)}),n_=Z("ZodEmoji",(e,a)=>{jN.init(e,a),jt.init(e,a)}),a_=Z("ZodNanoID",(e,a)=>{AN.init(e,a),jt.init(e,a)}),i_=Z("ZodCUID",(e,a)=>{CN.init(e,a),jt.init(e,a)}),s_=Z("ZodCUID2",(e,a)=>{NN.init(e,a),jt.init(e,a)}),o_=Z("ZodULID",(e,a)=>{_N.init(e,a),jt.init(e,a)}),r_=Z("ZodXID",(e,a)=>{zN.init(e,a),jt.init(e,a)}),l_=Z("ZodKSUID",(e,a)=>{EN.init(e,a),jt.init(e,a)}),c_=Z("ZodIPv4",(e,a)=>{BN.init(e,a),jt.init(e,a)}),u_=Z("ZodIPv6",(e,a)=>{qN.init(e,a),jt.init(e,a)}),d_=Z("ZodCIDRv4",(e,a)=>{MN.init(e,a),jt.init(e,a)}),m_=Z("ZodCIDRv6",(e,a)=>{PN.init(e,a),jt.init(e,a)}),p_=Z("ZodBase64",(e,a)=>{IN.init(e,a),jt.init(e,a)}),h_=Z("ZodBase64URL",(e,a)=>{LN.init(e,a),jt.init(e,a)}),f_=Z("ZodE164",(e,a)=>{UN.init(e,a),jt.init(e,a)}),g_=Z("ZodJWT",(e,a)=>{$N.init(e,a),jt.init(e,a)}),_0=Z("ZodNumber",(e,a)=>{Vx.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(r,u,f)=>p7(e,r,u),e.gt=(r,u)=>e.check(Wy(r,u)),e.gte=(r,u)=>e.check(cp(r,u)),e.min=(r,u)=>e.check(cp(r,u)),e.lt=(r,u)=>e.check(Jy(r,u)),e.lte=(r,u)=>e.check(lp(r,u)),e.max=(r,u)=>e.check(lp(r,u)),e.int=r=>e.check(nb(r)),e.safe=r=>e.check(nb(r)),e.positive=r=>e.check(Wy(0,r)),e.nonnegative=r=>e.check(cp(0,r)),e.negative=r=>e.check(Jy(0,r)),e.nonpositive=r=>e.check(lp(0,r)),e.multipleOf=(r,u)=>e.check(eb(r,u)),e.step=(r,u)=>e.check(eb(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 U8(_0,e)}const y_=Z("ZodNumberFormat",(e,a)=>{HN.init(e,a),_0.init(e,a)});function nb(e){return $8(y_,e)}const b_=Z("ZodBoolean",(e,a)=>{KN.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>h7(e,s,r)});function _(e){return H8(b_,e)}const v_=Z("ZodNull",(e,a)=>{QN.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>f7(e,s,r)});function le(e){return K8(v_,e)}const x_=Z("ZodUnknown",(e,a)=>{ZN.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>y7()});function Sn(){return Q8(x_)}const k_=Z("ZodNever",(e,a)=>{FN.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>g7(e,s,r)});function w_(e){return Z8(k_,e)}const S_=Z("ZodArray",(e,a)=>{YN.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>w7(e,s,r,u),e.element=a.element,e.min=(s,r)=>e.check(eu(s,r)),e.nonempty=s=>e.check(eu(1,s)),e.max=(s,r)=>e.check(Hx(s,r)),e.length=(s,r)=>e.check(Kx(s,r)),e.unwrap=()=>e.element});function y(e,a){return o7(S_,e,a)}const j_=Z("ZodObject",(e,a)=>{JN.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>S7(e,s,r,u),ot(e,"shape",()=>a.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:Sn()}),e.loose=()=>e.clone({...e._zod.def,catchall:Sn()}),e.strict=()=>e.clone({...e._zod.def,catchall:w_()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=s=>yC(e,s),e.safeExtend=s=>bC(e,s),e.merge=s=>vC(e,s),e.pick=s=>fC(e,s),e.omit=s=>gC(e,s),e.partial=(...s)=>xC(n2,e,s[0]),e.required=(...s)=>kC(a2,e,s[0])});function p(e,a){const s={type:"object",shape:e??{},...ze(a)};return new j_(s)}const e2=Z("ZodUnion",(e,a)=>{Gx.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>j7(e,s,r,u),e.options=a.options});function Le(e,a){return new e2({type:"union",options:e,...ze(a)})}const A_=Z("ZodDiscriminatedUnion",(e,a)=>{e2.init(e,a),WN.init(e,a)});function qe(e,a,s){return new A_({type:"union",options:a,discriminator:e,...ze(s)})}const C_=Z("ZodIntersection",(e,a)=>{e8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>A7(e,s,r,u)});function N_(e,a){return new C_({type:"intersection",left:e,right:a})}const __=Z("ZodRecord",(e,a)=>{t8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>C7(e,s,r,u),e.keyType=a.keyType,e.valueType=a.valueType});function Ve(e,a,s){return new __({type:"record",keyType:e,valueType:a,...ze(s)})}const Up=Z("ZodEnum",(e,a)=>{n8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(r,u,f)=>b7(e,r,u),e.enum=a.entries,e.options=Object.values(a.entries);const s=new Set(Object.keys(a.entries));e.extract=(r,u)=>{const f={};for(const g of r)if(s.has(g))f[g]=a.entries[g];else throw new Error(`Key ${g} not found in enum`);return new Up({...a,checks:[],...ze(u),entries:f})},e.exclude=(r,u)=>{const f={...a.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 Up({...a,checks:[],...ze(u),entries:f})}});function A(e,a){const s=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new Up({type:"enum",entries:s,...ze(a)})}const z_=Z("ZodLiteral",(e,a)=>{a8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>v7(e,s,r),e.values=new Set(a.values),Object.defineProperty(e,"value",{get(){if(a.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return a.values[0]}})});function O(e,a){return new z_({type:"literal",values:Array.isArray(e)?e:[e],...ze(a)})}const E_=Z("ZodTransform",(e,a)=>{i8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>k7(e,s),e._zod.parse=(s,r)=>{if(r.direction==="backward")throw new jx(e.constructor.name);s.addIssue=f=>{if(typeof f=="string")s.issues.push(Fr(f,s.value,a));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(Fr(g))}};const u=a.transform(s.value,s);return u instanceof Promise?u.then(f=>(s.value=f,s)):(s.value=u,s)}});function t2(e){return new E_({type:"transform",transform:e})}const n2=Z("ZodOptional",(e,a)=>{$x.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>Yx(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function ab(e){return new n2({type:"optional",innerType:e})}const D_=Z("ZodExactOptional",(e,a)=>{s8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>Yx(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function T_(e){return new D_({type:"optional",innerType:e})}const R_=Z("ZodNullable",(e,a)=>{o8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>N7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function ib(e){return new R_({type:"nullable",innerType:e})}const O_=Z("ZodDefault",(e,a)=>{r8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>z7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function B_(e,a){return new O_({type:"default",innerType:e,get defaultValue(){return typeof a=="function"?a():_x(a)}})}const q_=Z("ZodPrefault",(e,a)=>{l8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>E7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function M_(e,a){return new q_({type:"prefault",innerType:e,get defaultValue(){return typeof a=="function"?a():_x(a)}})}const a2=Z("ZodNonOptional",(e,a)=>{c8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>_7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function P_(e,a){return new a2({type:"nonoptional",innerType:e,...ze(a)})}const I_=Z("ZodCatch",(e,a)=>{u8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>D7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function V_(e,a){return new I_({type:"catch",innerType:e,catchValue:typeof a=="function"?a:()=>a})}const L_=Z("ZodPipe",(e,a)=>{d8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>T7(e,s,r,u),e.in=a.in,e.out=a.out});function Gp(e,a){return new L_({type:"pipe",in:e,out:a})}const U_=Z("ZodReadonly",(e,a)=>{m8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>R7(e,s,r,u),e.unwrap=()=>e._zod.def.innerType});function G_(e){return new U_({type:"readonly",innerType:e})}const $_=Z("ZodCustom",(e,a)=>{p8.init(e,a),wt.init(e,a),e._zod.processJSONSchema=(s,r,u)=>x7(e,s)});function H_(e,a={}){return r7($_,e,a)}function K_(e){return l7(e)}function z0(e,a){return Gp(t2(e),a)}const Je={custom:"custom"};function i2(e){return G8(_0,e)}const s2=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(s2)});p({name:o().min(1).max(100),scopes:y(o()).min(1).optional(),projectId:o().optional()});s2.extend({key:o()});const Q_=p({maxConcurrency:m().int().positive(),maxRequestsPerMinute:m().int().positive(),maxRequestsPerDay:m().int().positive()}),ht=o().min(1),E0=Ve(o(),o().trim().min(1));o().min(1);const un=p({label:o().min(1),city:o().min(1),region:o().min(1),country:o().length(2),timezone:o().optional()}),D0=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(D0),enabled:_().default(!0),source:o().optional(),webhookSecret:o().optional(),createdAt:o(),updatedAt:o()});p({channel:O("webhook"),url:o().url(),events:y(D0).min(1),source:o().optional()});function Z_(e){if(e instanceof Error)return e.message;if(typeof e=="string")return e;if(e==null)return"unknown error";try{const a=JSON.stringify(e);if(a!==void 0)return a}catch{}try{return String(e)}catch{return"unknown error"}}function up(e,a=!1){const s=new Set,r=[];for(const u of e){const f=a?u.toLowerCase():u;s.has(f)||(s.add(f),r.push(u))}return r}function sb(e){try{const a=e.includes("://"),s=new URL(a?e:`https://${e}`);if(!a&&(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 F_=o().trim().min(1).refine(e=>sb(e)!==null,{message:"Marketing hosts must be valid hostnames without credentials or ports"}).overwrite(e=>sb(e)??e),Y_=o().trim().min(1),X_=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"}),T0=p({marketingHosts:y(F_).overwrite(e=>up(e,!0)),brandTerms:y(Y_).overwrite(e=>up(e,!0)),leadEventNames:y(X_).overwrite(e=>up(e))});function J_(){return{marketingHosts:[],brandTerms:[],leadEventNames:["generate_lead"]}}const dp=Object.freeze({marketingHosts:Object.freeze([]),brandTerms:Object.freeze([]),leadEventNames:Object.freeze(["generate_lead"])}),o2=()=>J_(),ob=A(["never-synced","ready","error"]),W_=A(["landing-page","channel"]),ez=A(["30d","60d","90d"]),tz=A(["marketing","all"]),Lr=Jx(),nl=p({label:A(["earliest","middle","previous","latest"]),startDate:Lr,endDate:Lr}),mp=nl.extend({sessions:m().int().nonnegative()}),rb=nl.extend({eventCount:m().int().nonnegative()}),lb=nl.extend({clicks:m().int().nonnegative(),impressions:m().int().nonnegative()}),nz=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()}),az=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()}),iz=p({window:ez,bucketDays:O(30),filters:p({hostScope:tz,marketingHosts:y(o()),pathPrefix:o().nullable(),brandTerms:y(o()),queryMixScope:O("property")}),acquisition:p({status:ob,error:o().nullable(),syncedAt:o().datetime().nullable(),periods:y(mp),channels:y(p({channelGroup:o(),periods:y(mp)})),pages:y(p({hostName:o(),landingPage:o(),periods:y(mp)}))}),leads:p({status:ob,error:o().nullable(),syncedAt:o().datetime().nullable(),attributionScope:W_.nullable(),hostAndPathFiltersApplied:_(),periods:y(rb),channels:y(p({channelGroup:o(),periods:y(rb)}))}),engagement:p({status:A(["ready","unavailable"]),availableFromDate:Lr.nullable(),latestDate:Lr.nullable(),periods:y(az)}),searchDemand:p({status:A(["ready","unavailable"]),periods:y(nz),queries:y(p({query:o(),classification:A(["branded","non-branded"]),periods:y(lb)})),pages:y(p({hostName:o(),landingPage:o(),periods:y(lb)})),latestDate:Lr.nullable()})}),sz=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,oz=/[\0-\x1F\x7F-\x9F]/,rz=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\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]/,lz=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;var cz=class{src_Any=sz.source;src_Cc=oz.source;src_Z=lz.source;src_P=rz.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,a,s=4){const r=this.escapeRE(e),u=this.escapeRE(a),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}",a=`(?:(?:${e}:${e})|${this.get_ipv4_addr().source})`;return this.cache.src_ip6_addr??=new RegExp(`(?:(?:${e}:){6}${a}|::(?:${e}:){5}${a}|(?:${e})?::(?:${e}:){4}${a}|(?:(?:${e}:){0,1}${e})?::(?:${e}:){3}${a}|(?:(?:${e}:){0,2}${e})?::(?:${e}:){2}${a}|(?:(?:${e}:){0,3}${e})?::${e}:${a}|(?:(?:${e}:){0,4}${e})?::${a}|(?:(?:${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")}},pp={validate:(e,a,s)=>{const r=s.re.get_http_validator();r.lastIndex=a;const u=r.exec(e);return u?u[0].length:0},normalize:(e,a)=>a.normalize(e)},uz={"http:":pp,"https:":pp,"ftp:":pp,"//":{validate:function(e,a,s){const r=s.re.get_relative_proto_validator();r.lastIndex=a;const u=r.exec(e);return u?a>=3&&e[a-3]===":"||a>=3&&e[a-3]==="/"?0:u[0].length:0},normalize:(e,a)=>a.normalize(e)},"mailto:":{validate:function(e,a,s){const r=s.re.get_mailto_validator();r.lastIndex=a;const u=r.exec(e);return u?u[0].length:0},normalize:(e,a)=>a.normalize(e)}},dz="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",mz="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";function pz(){const e=mz.split("|");return dz.split("|").forEach(a=>{const s=a.indexOf(":"),r=a.slice(0,s);for(const u of a.slice(s+1))e.push(r+u)}),e}var hz={fuzzyLink:!1,fuzzyEmail:!0,fuzzyIP:!1,"---":!1,tlds:pz(),urlAuth:!1,maxLength:1e4},cb=class{schema;index;lastIndex;raw;text;url;constructor(e,a,s,r){const u=e.slice(s,r);this.schema=a.toLowerCase(),this.index=s,this.lastIndex=r,this.raw=u,this.text=u,this.url=u}},fz=class{__opts__;__schemas__;re;constructor(e={}){const{rebuilder:a,...s}=e;this.__opts__={...hz,...s},this.__schemas__={...uz},this.re=a||new cz,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)})}add(e,a=null){if(!a)delete this.__schemas__[e];else{const s={normalize:(r,u)=>u.normalize(r),...a};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 a,s;for(s=this.re.get_schema_search(),s.lastIndex=0;(a=s.exec(e))!==null;)if(this.testSchemaAt(e,a[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;(a=r.exec(e))!==null;){const f=e.slice(Math.max(0,a.index-65),a.index);if(u.test(f))return!0}}return!1}testSchemaAt(e,a,s){return this.__schemas__[a.toLowerCase()]?this.__schemas__[a.toLowerCase()].validate(e.slice(0,s+this.__opts__.maxLength),s,this):0}match(e){const a=[],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 D=Math.max(j-1,0);if(u&&f&&!C&&(!b||b.index<j))for(u.lastIndex<D&&(u.lastIndex=D);;){const ee=u.exec(e);if(!ee){C=!0,b=void 0;break}const X=f.exec(e.slice(Math.max(0,ee.index-65),ee.index));if(X){if(b={schema:"mailto:",index:ee.index-X[1].length,lastIndex:ee.index+ee[0].length},b.index>=j)break;u.lastIndex<D&&(u.lastIndex=D)}}if(r&&!S&&(!g||g.index<j))for(r.lastIndex<D&&(r.lastIndex=D);;){const ee=r.exec(e);if(!ee){S=!0,g=void 0;break}if(g={schema:"",index:ee.index+ee[1].length,lastIndex:ee.index+ee[0].length},g.index>=j)break;r.lastIndex<D&&(r.lastIndex=D)}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<D&&(s.lastIndex=D);const te=s.exec(e);if(!te){k=!0;break}x={schema:te[2],index:te.index+te[1].length,lastIndex:te.index+te[0].length}}if(x.index<j){x=void 0;continue}if(B&&x.index>B.index)break;const ee=x;x=void 0;const X=this.testSchemaAt(e,ee.schema,ee.lastIndex);if(X){q={schema:ee.schema,index:ee.index,lastIndex:ee.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 cb(e,U.schema,U.index,U.lastIndex);G.schema?this.__schemas__[G.schema].normalize(G,this):this.normalize(G),a.push(G),j=U.lastIndex}return a.length?a:null}matchAtStart(e){if(!e.length)return null;const a=this.re.get_schema_at_start().exec(e);if(!a)return null;const s=this.testSchemaAt(e,a[2],a[0].length);if(!s)return null;const r=new cb(e,a[2],a.index+a[1].length,a.index+a[0].length+s);return this.__schemas__[r.schema].normalize(r,this),r}tlds(e,a=!1){return e=Array.isArray(e)?e:[e],a?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 gz=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 yz(e,a){return e.endsWith(a)?e.length===a.length||e[e.length-a.length-1]===".":!1}function bz(e,a){const s=e.length-a.length-2,r=e.lastIndexOf(".",s);return r===-1?e:e.slice(r+1)}function vz(e,a,s){if(s.validHosts!==null){const u=s.validHosts;for(const f of u)if(yz(a,f))return f}let r=0;if(a.startsWith("."))for(;r<a.length&&a[r]===".";)r+=1;return e.length===a.length-r?null:bz(a,e)}function xz(e,a){return e.slice(0,-a.length-1)}const hp=/[\t\n\r]/g;let $p=!1;function ub(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function db(e,a,s){const r=s-a,u=e.charCodeAt(a)|32;if(r===2)return u===119&&(e.charCodeAt(a+1)|32)===115?1:0;if(r===3){const f=e.charCodeAt(a+1)|32,g=e.charCodeAt(a+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(a+1)|32,g=e.charCodeAt(a+2)|32,b=e.charCodeAt(a+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(a+1)|32)===116&&(e.charCodeAt(a+2)|32)===116&&(e.charCodeAt(a+3)|32)===112&&(e.charCodeAt(a+4)|32)===115?1:0;return 0}function Ur(e,a,s=!1){let r=0,u=e.length,f=!1,g=!1;if($p=!1,!a){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=db(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 ee=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&ee<2;)r+=1,ee+=1;if(ee<2)return null}else{for(let ee=r;ee<U;ee+=1){const X=e.charCodeAt(ee)|32;if(!(X>=97&&X<=122||X>=48&&X<=57||X===46||X===45||X===43)){const te=e.charCodeAt(ee);return te===9||te===10||te===13?Ur(e.replace(hp,""),a,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 ee=r;ee<u;ee+=1){const X=e.charCodeAt(ee);if(X===9||X===10||X===13)return Ur(e.replace(hp,""),a,s);if(X===58){G=ee;break}if(X===47||X===92||X===63||X===35)break}if(G!==-1){let ee=!1;for(let X=G+1;X<u;X+=1){const te=e.charCodeAt(X);if(te===47||te===92||te===63||te===35)break;if(te===64){ee=!0;break}}if(!ee){let X=!0,te=G+1;for(;te<u;te+=1){const se=e.charCodeAt(te);if(se===47||se===92||se===63||se===35)break;if(se<48||se>57){X=!1;break}}if(te===G+1&&(X=!1),!X){const se=db(e,r,G);if(se===0){let ve=!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){ve=!0;break}}if(!ve)return null}else if(g=!0,r=G+1,se===2){let ve=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&ve<2;)r+=1,ve+=1;if(ve<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,D=s,B=r-1,q=-1;if(s&&r<u){const U=e.charCodeAt(r);(!(ub(U)||U===46||U===95)||U===45)&&(D=!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)&&(D=!1),B=U):(G<48||G>57)&&(G!==45||q===46)&&(D=!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&&!ub(G)&&(D=!1);s&&(q=G)}if(j)return Ur(e.replace(hp,""),a,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&&D&&x===-1&&S===-1&&k===-1&&e.charCodeAt(u-1)!==46&&u-r<=255&&u-B-1<=63&&q!==45&&($p=!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 kz(e){if(e.length<7||e.length>15)return!1;let a=0;for(let s=0;s<e.length;s+=1){const r=e.charCodeAt(s);if(r===46)a+=1;else if(r<48||r>57)return!1}return a===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function wz(e){if(e.length<3)return!1;let a=e.startsWith("[")?1:0,s=e.length;if(e[s-1]==="]"&&(s-=1),s-a>39)return!1;let r=!1;for(;a<s;a+=1){const u=e.charCodeAt(a);if(u===58)r=!0;else if(!(u>=48&&u<=57||u>=97&&u<=102||u>=65&&u<=70))return!1}return r}function Sz(e){return wz(e)||kz(e)}const jz=["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 Az(e){for(const a of jz)if(e.endsWith(a)&&(e.length===a.length||e.charCodeAt(e.length-a.length-1)===46))return!0;return!1}function mb(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function pb(e){if(e.length>255||e.length===0||!mb(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let a=-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-a>64||s===46||s===45)return!1;a=u}else if(!(mb(f)||f===45||f===95)||f===45&&s===46)return!1;s=f}return r-a-1<=63&&s!==45}function r2({allowIcannDomains:e=!0,allowPrivateDomains:a=!1,detectIp:s=!0,detectSpecialUse:r=!1,extractHostname:u=!0,mixedInputs:f=!0,validHosts:g=null,validateHostname:b=!0}){return{allowIcannDomains:e,allowPrivateDomains:a,detectIp:s,detectSpecialUse:r,extractHostname:u,mixedInputs:f,validHosts:g,validateHostname:b}}const Cz=r2({});function Nz(e){return e===void 0?Cz:r2(e)}function _z(e,a){return a.length===e.length?"":e.slice(0,-a.length-1)}function zz(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function l2(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 c2(e,a,s,r,u){const f=Nz(r);if(typeof e!="string")return u;let g=!1;return f.extractHostname?f.mixedInputs?(g=pb(e),u.hostname=Ur(e,g,f.validateHostname)):u.hostname=Ur(e,!1,f.validateHostname):u.hostname=e,f.detectIp&&u.hostname!==null&&(u.isIp=Sz(u.hostname),u.isIp)?u:f.validateHostname&&f.extractHostname&&u.hostname!==null&&!(g&&u.hostname===e)&&!$p&&!pb(u.hostname)?(u.hostname=null,u):(a===0||u.hostname===null||(a===5&&f.detectSpecialUse&&(u.isSpecialUse=Az(u.hostname)),s(u.hostname,f,u),a===2||u.publicSuffix===null)||(u.domain=vz(u.publicSuffix,u.hostname,f),a===3||u.domain===null)||(u.subdomain=_z(u.hostname,u.domain),a===4)||(u.domainWithoutSuffix=xz(u.domain,u.publicSuffix)),u)}function Ez(e,a,s){if(!a.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 rs=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]),nu=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]),au=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]),hb=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]),Hp="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",Dz=621,Tz=625,u2=rs.length,d2=au.length,m2=new Uint32Array(d2),Zc=new Uint32Array(d2),Kp=new Int32Array(u2).fill(-1);for(let e=0,a=0;e<u2;e+=1)for(let s=nu[e];s<nu[e+1];s+=1){m2[s]=a;const r=a+au[s];let u=5381;for(let f=r-1;f>=a;f-=1)u=u*33^Hp.charCodeAt(f);Zc[s]=u>>>0,au[s]===1&&Hp.charCodeAt(a)===42&&(Kp[e]=s),a=r}let Pa=-1,Qp=0,Zp=0;function fb(e,a,s,r){if(au[e]!==r)return!1;const u=m2[e];for(let f=0;f<r;f+=1)if(Hp.charCodeAt(u+f)!==a.charCodeAt(s+f))return!1;return!0}function gb(e,a,s,r,u){let f=nu[e],g=nu[e+1];for(;f<g;){const b=f+g>>>1,x=Zc[b];if(x<a)f=b+1;else if(x>a)g=b;else{for(let k=b;k>=f&&Zc[k]===a;k-=1)if(fb(k,s,r,u))return k;for(let k=b+1;k<g&&Zc[k]===a;k+=1)if(fb(k,s,r,u))return k;return-1}}return-1}function yb(e,a,s){let r=a,u=e.length,f=5381;Pa=-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=gb(r,f>>>0,e,k,u-k);if(S===-1&&(S=Kp[r]),S===-1)return Pa!==-1;r=hb[S],(rs[r]&s)!==0&&(Pa=r,Qp=k,Zp=u),u=b,f=5381}else f=f*33^x}let g=gb(r,f>>>0,e,0,u);return g===-1&&(g=Kp[r]),g!==-1&&(r=hb[g],(rs[r]&s)!==0&&(Pa=r,Qp=0,Zp=u)),Pa!==-1}function p2(e,a,s){if(Ez(e,a,s))return;const r=(a.allowPrivateDomains?2:0)|(a.allowIcannDomains?1:0);if(yb(e,Tz,r)){s.isIcann=(rs[Pa]&1)!==0,s.isPrivate=(rs[Pa]&2)!==0,s.publicSuffix=e.slice(Zp+1);return}if(yb(e,Dz,r)){s.isIcann=(rs[Pa]&1)!==0,s.isPrivate=(rs[Pa]&2)!==0,s.publicSuffix=e.slice(Qp);return}s.isIcann=!1,s.isPrivate=!1;const u=e.lastIndexOf(".");s.publicSuffix=u===-1?e:e.slice(u+1)}const iu=zz();function Rz(e,a){return l2(iu),c2(e,0,p2,a,iu).hostname}function Oz(e,a){return l2(iu),c2(e,5,p2,a,iu).domainWithoutSuffix}const Bz={allowPrivateDomains:!0};new fz({fuzzyLink:!0,fuzzyEmail:!1}).tlds(gz);function ku(e){if(e==null)return null;const a=e.trim();if(!a)return null;const s=Rz(a);return s?s.replace(/^www\./i,"").toLowerCase():null}function qz(e){return e==null||e.trim()===""?"":Oz(e,Bz)?.toLowerCase()??""}const Mz=new Intl.Segmenter("en",{granularity:"word"}),Pz=/[\p{L}\p{N}]+/gu,Iz=/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}]/u,Vz=new RegExp("\\P{ASCII}","u");function Lz(e){if(!Vz.test(e))return e;let a="";for(const s of e){if(s.charCodeAt(0)<128){a+=s;continue}const r=s.normalize("NFD"),u=r[0];a+=r.length>1&&Iz.test(u)?u:s}return a}function Uz(e){return Lz(e.normalize("NFKC")).toLocaleLowerCase("en")}function Gz(e){const a=[];for(const s of Mz.segment(e))if(s.isWordLike)for(const r of s.segment.match(Pz)??[])a.push(r);return a}function $z(e){return Gz(Uz(e))}function cs(e){return $z(e).join("")}const h2=A(["cli","api","config-file"]);function Hz(e){const a=new Set,s=new Set;for(const r of e){if(a.has(r.label)){s.add(r.label);continue}a.add(r.label)}return[...s]}function Kz(e,a){return a?e.some(s=>s.label===a):!0}const Qz=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:Ve(o(),o()).optional(),providers:y(ht).optional(),providerModels:E0.optional(),locations:y(un).optional(),defaultLocation:o().nullable().optional(),measurement:T0.optional(),autoExtractBacklinks:_().optional(),configSource:h2.optional()});Qz.extend({name:o().trim().min(1).max(120)});const Zz=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:Ve(o(),o()).default({}),providers:y(o()).default([]),providerModels:E0.default({}),locations:y(un).default([]),defaultLocation:o().nullable().optional(),measurement:T0.default(o2),autoExtractBacklinks:_().default(!1),configSource:h2.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:ht,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 Fp(e){return ku(e)??e.trim().toLowerCase().replace(/^www\./,"")}function Fz(e){const a=[e.canonicalDomain,...e.ownedDomains??[]],s=new Set,r=[];for(const u of a){const f=u.trim();if(!f)continue;const g=Fp(f);s.has(g)||(s.add(g),r.push(f))}return r}const Yz=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:Ve(o(),o()).optional().default({})}),Xz=p({preset:o().optional(),cron:o().optional(),timezone:o().optional().default("UTC"),providers:y(ht).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(),Jz=p({channel:O("webhook"),url:o().url(),events:y(D0).min(1)}),Wz=p({gsc:p({propertyUrl:o()}).optional(),syncSchedule:p({preset:o().optional(),cron:o().optional()}).optional()}).optional(),bb=y(o().min(1)),e9=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:bb.optional(),keywords:bb.optional(),competitors:y(o().min(1)).optional().default([]),providers:y(ht).optional().default([]),providerModels:E0.optional().default({}),locations:y(un).optional().default([]),defaultLocation:o().optional(),measurement:T0.optional().default(o2),schedule:Xz,notifications:y(Jz).optional().default([]),google:Wz,autoExtractBacklinks:_().optional().default(!1)}).superRefine((e,a)=>{e.queries!==void 0&&e.keywords!==void 0&&a.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=Hz(e.locations);s.length>0&&a.addIssue({code:"custom",message:`Duplicate location labels are not allowed: ${s.join(", ")}`,path:["locations"]}),Kz(e.locations,e.defaultLocation)||a.addIssue({code:"custom",message:`defaultLocation "${e.defaultLocation}" must match a configured location label`,path:["defaultLocation"]})});p({apiVersion:O("canonry/v1"),kind:O("Project"),metadata:Yz,spec:e9});const t9=["branded","non-brand"],n9=A(t9),a9=A(["all","branded","non-brand"]),i9=2,s9=o().regex(/^[a-f0-9]{64}$/),wu=o().trim().min(1).max(256),vb=A(["sensitive","insensitive"]),Se=o().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),o9=o().trim().min(1).refine(e=>ku(e)!==null,"A competitor domain must be a valid hostname"),r9=qe("kind",[p({kind:O("exact"),url:o().min(1),pathCase:vb}).strict(),p({kind:O("prefix"),host:o().min(1),pathPrefix:o().min(1),pathCase:vb}).strict(),p({kind:O("host"),host:o().min(1)}).strict()]),l9=p({canonicalHost:o().min(1),ownedHosts:y(o().min(1)),names:y(o().min(1))}).strict(),c9=p({projectBrand:l9}).strict(),u9=p({stableKey:Se,label:o().trim().min(1),aliases:y(o().min(1)),urlMatchers:y(r9),mentionNotApplicable:_(),discoveryIdentity:o().min(1).nullable()}).strict(),f2=p({stableKey:Se,label:o().trim().min(1),domain:o9,aliases:y(o().min(1))}).strict(),d9=p({stableKey:Se,label:o().trim().min(1),targetKeys:y(Se),competitors:y(f2)}).strict(),m9=A(["manual","query-set","template","discovery"]),p9=p({source:m9,sourceId:o().min(1).nullable(),capturedAt:o().datetime()}).strict(),h9=p({queryId:wu,queryText:o().min(1),provenance:p9}).strict(),f9=p({providers:y(ht).min(1),models:Ve(ht,o().min(1)),location:un.nullable()}).strict(),g9=p({stableKey:o().min(1),queryId:wu,queryText:o().min(1),context:f9,expectedSnapshots:m().int().nonnegative()}).strict(),R0=n9,y9=p({targetKey:Se,queryId:wu,queryClass:R0,executionNodeKey:o().min(1)}).strict(),b9=p({executionNodeKey:o().min(1),targetKey:Se,queryId:wu}).strict(),Su=p({schemaVersion:O(i9),identities:c9,targets:y(u9),groups:y(d9),querySnapshots:y(h9),assignments:y(y9),executionNodes:y(g9),usageEdges:y(b9),compiledChecksum:s9}).strict().superRefine((e,a)=>{const s=new Set;for(const u of e.executionNodes)s.has(u.stableKey)&&a.addIssue({code:Je.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)||a.addIssue({code:Je.custom,path:["usageEdges",f,"executionNodeKey"],message:`Usage edge references unknown execution node "${u.executionNodeKey}"`}),r.has(u.targetKey)||a.addIssue({code:Je.custom,path:["usageEdges",f,"targetKey"],message:`Usage edge references unknown Target "${u.targetKey}"`})}),e.assignments.forEach((u,f)=>{r.has(u.targetKey)||a.addIssue({code:Je.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)||a.addIssue({code:Je.custom,path:["groups"],message:`Group "${u.stableKey}" references unknown Target "${f}"`})}),O0=100;function xo(e){return p({items:y(e),nextCursor:o().min(1).nullable(),totalEstimate:m().int().nonnegative().optional()}).strict()}const B0=A(["no_completed_run","plan_v1","no_population","evidence_incomplete","not_applicable"]),Lt=qe("state",[p({state:O("available"),value:m(),numerator:m().int().nonnegative().optional(),denominator:m().int().positive().optional()}).strict(),p({state:O("unavailable"),reason:B0}).strict()]),q0=A(["all","group","property"]),la=a9,v9=A(["label-asc","label-desc","citationCoverage-asc","citationCoverage-desc","mentionCoverage-asc","mentionCoverage-desc"]),M0=A(["not_measured","queued","running","complete","partial","failed"]),x9=A(["run_measurement","review_flags","complete_setup","republish_setup","none"]);p({scope:q0,groupKey:Se.optional(),targetKey:Se.optional(),queryClass:la.optional(),provider:ht.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:v9.optional(),cursor:o().trim().min(1).optional(),limit:m().int().positive().max(O0).optional()}).strict();const k9=p({provider:ht,mentionCoverage:Lt,citationCoverage:Lt}).strict(),w9=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(),S9=p({targetKey:Se,label:o().min(1),mentionCoverage:Lt,citationCoverage:Lt,providers:y(k9),flags:m().int().nonnegative()}).strict(),j9=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(),A9=p({groupKey:Se,queryClass:O("non-brand"),denominator:m().int().positive(),entries:y(j9)}).strict();p({mode:A(["active-v1","active-v2"]),scope:p({kind:q0,key:o().min(1).optional(),label:o().min(1)}).strict(),queryClass:la,measurement:p({state:M0,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:x9,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:xo(S9),outcomes:w9,flags:p({total:m().int().nonnegative()}).strict(),namedShareOfVoice:A9.optional()}).strict();const g2=A(["sources","answers"]),C9=g2.enum;C9.sources;p({targetKey:Se,queryClass:la.optional(),provider:ht.optional(),location:o().trim().min(1).optional(),runId:o().trim().min(1).optional(),shape:g2.optional(),cursor:o().trim().min(1).optional(),limit:m().int().positive().max(O0).optional()}).strict();const y2=1,al=m().int().positive(),Ut=o().trim().min(1).max(128).regex(/^[a-z0-9][\w.~-]*$/i,"Must be a URL-safe stable key"),il=o().trim().min(1).max(256),xb=A(["sensitive","insensitive"]);function su(e){const a=ku(e);if(!a)throw new Error(`Invalid measurement host: ${e}`);return a}function N9(e){const a=[];let s=!1;for(let r=0;r<e.length;r++){const u=e[r];u==="/"?(s||a.push(u),s=!0):(a.push(u),s=!1)}for(;a.length>1&&a.at(-1)==="/";)a.pop();return a.length?a.join(""):"/"}function kb(e){try{return decodeURI(e).normalize("NFC").toLowerCase()}catch{return e.normalize("NFC").toLowerCase()}}function b2(e){const a=new URL(`https://measurement.invalid${e}`).pathname;return N9(a.replace(/%[0-9a-f]{2}/gi,s=>s.toUpperCase()))}function Yp(e){const a=e.trim();if(!a||a.includes("?")||a.includes("#")||a.includes("://")||a.includes("\\"))throw new Error(`Invalid measurement path prefix: ${e}`);const s=a.startsWith("/")?a:`/${a}`;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 b2(s)}catch{throw new Error(`Invalid measurement path prefix: ${e}`)}}function _9(e){const a=/^[a-z][a-z0-9+.-]*:\/\/[^/?#]*/i.exec(e);if(!a)throw new Error(`Invalid exact measurement URL: ${e}`);return e.slice(a[0].length).split(/[?#]/,1)[0]||"/"}function wb(e){const a=e.trim();if(!a||a.includes("\\"))throw new Error(`Invalid exact measurement URL: ${e}`);let s;try{s=new URL(a)}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=su(s.hostname),u=Yp(_9(a));return`https://${r}${u}`}const Yr=o().trim().min(1).refine(e=>{try{return su(e),!0}catch{return!1}},"A target URL matcher host must be a valid hostname").overwrite(e=>su(e)),z9=o().trim().min(1).refine(e=>{try{return Yp(e),!0}catch{return!1}},"A target URL matcher pathPrefix must be an absolute path without query or fragment").overwrite(e=>Yp(e)),E9=o().trim().min(1).refine(e=>{try{return wb(e),!0}catch{return!1}},"A target exact matcher must be an HTTP(S) URL without credentials, port, query, or fragment").overwrite(e=>wb(e)),D9=qe("kind",[p({kind:O("exact"),url:E9,pathCase:xb}).strict(),p({kind:O("prefix"),host:Yr,pathPrefix:z9,pathCase:xb}).strict(),p({kind:O("host"),host:Yr}).strict()]),v2=o().trim().min(1).max(256).refine(e=>cs(e).length>0,"A target alias must contain mention text"),T9=Ve(o().trim().min(1),o()),R9=Yr,x2=p({stableKey:Ut,label:o().trim().min(1),urls:y(D9).min(1),aliases:y(v2),metadata:T9.optional()}).strict(),P0=p({stableKey:Ut,label:o().trim().min(1),targetKeys:y(Ut).min(1),competitors:y(R9).optional()}).strict(),k2=p({targetKey:Ut,queryIds:y(il).min(1),context:un.nullable().optional()}).strict();function O9(e,a){return e<a?-1:e>a?1:0}function B9(e,a=s=>s){const s=new Set,r=new Set;for(const u of e){const f=a(u);s.has(f)&&r.add(f),s.add(f)}return r}function fp(e,a,s,r,u){for(const f of B9(a,u))e.addIssue({code:"custom",path:[...s],message:`Duplicate ${r}: ${f}`})}function Sb(e){if(e.kind==="host")return{host:e.host,pathname:null};if(e.kind==="prefix")return{host:e.host,pathname:e.pathPrefix};const a=new URL(e.url);return{host:su(a.hostname),pathname:b2(a.pathname||"/")}}function q9(e,a,s,r){return e===s||(a==="insensitive"||r==="insensitive")&&kb(e)===kb(s)}function M9(e,a){if(e.kind!==a.kind)return!1;const s=Sb(e),r=Sb(a);return s.host!==r.host?!1:e.kind==="host"||a.kind==="host"?!0:q9(s.pathname,e.pathCase,r.pathname,a.pathCase)}function P9(e){const a=new Set;return[...e].sort(O9).filter(s=>{const r=cs(s);return a.has(r)?!1:(a.add(r),!0)})}const w2=p({schemaVersion:O(y2),targets:y(x2).min(1),groups:y(P0).optional(),targetQuerySelections:y(k2).optional()}).strict().superRefine((e,a)=>{const s=e.groups??[],r=e.targetQuerySelections??[];fp(a,e.targets.map(x=>x.stableKey),["targets"],"target stable key"),fp(a,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)&&a.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 P9(x.aliases)){const C=cs(S),j=g.get(C);j&&j!==x.stableKey&&a.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(D=>D.targetKey!==x.stableKey&&M9(D.matcher,S))&&a.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)=>{fp(a,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)||a.addIssue({code:"custom",path:["groups",k,"targetKeys",S],message:`Unknown target: ${C}`})}}),r.forEach((x,k)=>{u.has(x.targetKey)||a.addIssue({code:"custom",path:["targetQuerySelections",k,"targetKey"],message:`Unknown target: ${x.targetKey}`})})});w2.transform(e=>({...e,groups:e.groups??[],targetQuerySelections:e.targetQuerySelections??[]}));p({expectedActiveRevision:al.nullable(),plan:w2}).strict();const I9=p({queryId:il,queryText:o().min(1)}).strict(),I0=p({stableKey:o().min(1),queryText:o().min(1),context:un.nullable(),expectedSnapshots:m().int().nonnegative()}).strict(),V9=p({kind:O("baseline"),executionNodeKey:o().min(1),queryId:il}).strict(),L9=p({kind:O("target"),executionNodeKey:o().min(1),queryId:il,targetKey:Ut}).strict(),Xp=qe("kind",[V9,L9]),S2=p({code:O("target-alias-prefix-overlap"),message:o().min(1),targetKeys:y(Ut).min(1),aliases:y(o().min(1)).min(1)}).strict(),j2=x2.extend({mentionNotApplicable:_()}),A2=p({schemaVersion:O(y2),defaultContext:un.nullable(),effectiveOwnedHosts:y(Yr),projectCanonicalHost:Yr,projectBrandNames:y(v2),targets:y(j2),groups:y(P0),targetQuerySelections:y(k2),querySnapshots:y(I9),executionNodes:y(I0),usageEdges:y(Xp),warnings:y(S2)}).strict(),U9=A2,C2=qe("schemaVersion",[A2,Su]),V0=o().regex(/^[a-f0-9]{64}$/),L0=o().datetime(),N2=p({schemaVersion:O(1),providers:y(o().min(1)).min(1),models:Ve(o().min(1),o().min(1)),checksum:o().regex(/^[a-f0-9]{64}$/)}).strict(),G9=p({groups:y(Ut).optional(),targets:y(Ut).optional()}).strict(),$9=p({groups:y(Ut),targets:y(Ut),queries:y(o().min(1)),resolvedTargets:y(Ut)}).strict().superRefine((e,a)=>{e.resolvedTargets.length===0&&e.queries.length===0&&a.addIssue({code:"custom",path:["resolvedTargets"],message:"A recorded scope must name something it measured"})});p({stableKey:Ut,retiredAt:o().datetime()});p({active:p({revision:al,checksum:V0,createdAt:L0,plan:C2}).nullable()});p({versions:y(p({revision:al,checksum:V0,createdAt:L0,active:_()}))});p({version:p({revision:al,checksum:V0,createdAt:L0,active:_(),plan:C2})});const Fc=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(),H9=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"]),_2=p({id:H9,severity:A(["fail","warn"]),message:o().min(1),path:y(Le([o(),m().int()]))}).strict(),K9=p({baseline:m().int().nonnegative(),target:m().int().nonnegative()}).strict(),z2=p({ok:O(!0),checks:y(_2),executionNodes:y(I0),dedupSaved:m().int().nonnegative(),usageEdges:K9,estCostUsd:le(),plan:U9,warnings:y(S2),counts:Fc}).strict(),E2=p({ok:O(!1),checks:y(_2).min(1),executionNodes:y(I0).length(0),dedupSaved:O(0),usageEdges:p({baseline:O(0),target:O(0)}).strict(),estCostUsd:le()}).strict();qe("ok",[z2,E2]);const Mc=p({targetKey:Ut,context:un.nullable(),queryIds:y(il)}).strict();function jb(e){return p({added:y(e),removed:y(e),changed:y(p({stableKey:Ut,before:e,after:e}).strict()),unchanged:y(Ut)}).strict()}const Q9=z2.extend({diff:p({activeRevision:al.nullable(),targets:jb(j2),groups:jb(P0),querySelections:p({added:y(Mc),removed:y(Mc),changed:y(p({targetKey:Ut,before:Mc,after:Mc}).strict()),unchanged:y(p({targetKey:Ut,context:un.nullable()}).strict())}).strict(),execution:p({addedNodeKeys:y(o().min(1)),removedNodeKeys:y(o().min(1)),addedUsageEdges:y(Xp),removedUsageEdges:y(Xp),counts:p({before:Fc.nullable(),after:Fc,delta:Fc.nullable()}).strict()}).strict()}).strict()}).strict(),Z9=E2.extend({diff:le()}).strict();qe("ok",[Q9,Z9]);const ju=A(["complete","partial","failed","unsupported"]);ju.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 F9=A(["invalid-url","unowned-host","duplicate-url","url-cap-reached"]),Y9=p({kind:A(["exact","prefix","suffix","contains"]),value:o().trim().min(1)}).strict(),Ab=p({host:o().trim().min(1),pathTemplate:o().trim().min(1)}).strict(),U0=p({primary:Ab,aliases:y(Ab).optional(),excludedSlugSuffixes:y(o().trim().min(1)).optional(),excludedSlugPatterns:y(Y9).optional()}).strict();p({sitemapUrl:o().url().refine(e=>{try{const a=new URL(e).protocol;return a==="http:"||a==="https:"}catch{return!1}},"Sitemap URL must use http or https"),rule:U0,maxUrls:m().int().positive().max(1e4).optional()}).strict();const gp=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,a)=>{({shared:["shared-path"],unmatched:["unmatched-path","alias-without-primary","unsupported-slug"],excluded:["excluded-slug"]})[e.classification].includes(e.reason)||a.addIssue({code:"custom",message:"Discovery classification and reason do not match"})}),X9=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(),J9=p({classification:O("alias"),reason:O("exact-slug-match"),slug:o().trim().min(1),url:o().url(),targetStableKey:Ut}).strict(),W9=p({kind:F9,url:o(),canonicalUrl:o().nullable(),duplicateOf:o().optional()}).strict();p({proposed:y(X9),aliases:y(J9),shared:y(gp),unmatched:y(gp),excluded:y(gp),diagnostics:y(W9)}).strict().superRefine((e,a)=>{const s=[["shared",["shared"]],["unmatched",["unmatched"]],["excluded",["excluded"]]];for(const[r,u]of s)for(const f of e[r])u.includes(f.classification)||a.addIssue({code:"custom",path:[r],message:"Discovery item is in the wrong result bucket"})});const G0=A(["assigned","sibling","ownedUnmapped","external","ambiguous","invalid"]),D2=A(["baseline","target"]),T2=A(["incomplete","evidence-incomplete","no-population","aliasless","no-competitors","no-project-aliases"]),us=Le([p({numerator:m().int().nonnegative(),denominator:m().int().positive(),rate:m().min(0).max(1)}).strict(),p({numerator:le(),denominator:le(),rate:le(),reason:T2}).strict()]).superRefine((e,a)=>{e.numerator!==null&&e.numerator>e.denominator&&a.addIssue({code:"custom",path:["numerator"],message:"Rate numerator cannot exceed denominator"})}),eE=o().trim().min(1).overwrite(e=>e.toLocaleLowerCase("en")),tE=p({executionId:o().trim().min(1),queryText:o().trim().min(1),provider:eE,context:un.nullable(),requestedModel:o().trim().min(1).optional()}).strict();p({schemaVersion:O(1),expectedSlots:y(tE)}).strict().superRefine((e,a)=>{const s=new Set;for(const[r,u]of e.expectedSlots.entries()){const f=[u.executionId,u.provider].join("\0");s.has(f)&&a.addIssue({code:"custom",path:["expectedSlots",r],message:"Duplicate expected provider slot"}),s.add(f)}});const Au=p({executed:m().int().nonnegative(),expected:m().int().nonnegative(),complete:_(),sourceComplete:_(),sourceCompleteObservations:m().int().nonnegative(),answerComplete:_()}).strict(),Cb=Le([p({domain:o().trim().min(1),own:_(),presentIn:m().int().nonnegative(),of:m().int().positive()}).strict(),p({domain:o().trim().min(1),own:_(),presentIn:le(),of:le(),reason:T2}).strict()]),nE=p({domains:y(Cb),providers:y(p({provider:ht,domains:y(Cb)}).strict())}).strict(),aE=p({provider:ht,completeness:Au,answerCoverage:us}).strict(),iE=p({id:o().trim().min(1),label:o().trim().min(1),targetIds:y(o().trim().min(1)),completeness:Au,answerCoverage:us,targetCoverage:us,sov:nE,providers:y(aE)}).strict(),sE=p({provider:ht,completeness:Au,citationCoverage:us,mentionCoverage:us}).strict(),oE=p({id:o().trim().min(1),label:o().trim().min(1),completeness:Au,citationCoverage:us,mentionCoverage:us,providers:y(sE)}).strict(),R2=p({observationId:o().trim().min(1),expectedSlotId:o().trim().min(1),executionId:o().trim().min(1),usageEdgeId:o().trim().min(1),usageEdgeType:D2,provider:ht,queryText:o().trim().min(1),location:o().nullable(),sourceUrl:o(),bridged:_(),historical:_(),evidenceComplete:_(),classification:G0,normalizedUrl:o().nullable(),matchedTargetIds:y(o().trim().min(1)),matchedUrlIds:y(o().trim().min(1))}).strict(),rE=p({sourceUrl:o(),normalizedUrl:o().nullable(),classification:G0,matchedTargetIds:y(o().trim().min(1)),matchedUrlIds:y(o().trim().min(1))}).strict(),lE=p({observationId:o().trim().min(1),expectedSlotId:o().trim().min(1),executionId:o().trim().min(1),usageEdgeId:o().trim().min(1),usageEdgeType:D2,provider:ht,queryText:o().trim().min(1),location:o().nullable(),queryClass:Le([A(["branded","non-brand"]),le()]),mentioned:_().nullable(),cited:_().nullable(),sources:y(rE),sourceCount:m().int().nonnegative(),sourcesTruncated:_(),bridged:_(),historical:_(),evidenceComplete:_()}).strict(),cE=p({bridgedObservationIds:y(o()),historicalObservationIds:y(o()),evidenceIncompleteObservationIds:y(o()),ambiguousObservationIds:y(o()),unmatchedObservationIds:y(o())}).strict(),uE=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:uE.nullable(),groups:y(iE),targets:y(oE),evidence:y(R2),diagnostics:cE}).strict();p({property:p({targetKey:Se,label:o().min(1)}).strict(),queryClass:la,measurement:p({state:M0,displayedRunId:o().min(1).optional(),completedAt:o().datetime().optional()}).strict(),evidence:xo(R2).optional(),answers:xo(lE).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 $0=A(["used","not-used","unknown","not-applicable"]);$0.enum;const H0=A(["native-auto-v1","search-required-v1"]);H0.enum;const oa=o().trim().min(1),sl=o().trim().min(1),dE=o().trim().min(1),at=m().int().nonnegative(),ol=p({state:M0,displayedRunId:oa.nullable(),planRevision:m().int().positive(),completedAt:o().datetime().nullable()}).strict(),rl=p({targetKey:Se,label:sl}).strict(),Bn={runId:oa.optional(),provider:ht.optional(),location:dE.optional()},Xr=o().trim().min(1);p({runId:Bn.runId,groupKey:Se.optional(),queryClass:la.default("non-brand"),provider:Bn.provider,location:Bn.location,limit:m().int().positive().max(50).optional()}).strict();const mE=rl.extend({mentionCoverage:Lt,citationCoverage:Lt,flags:at,recommendedInstead:y(p({name:Xr,occurrences:at}).strict()).max(5),recommendedInsteadTotal:at,recommendedInsteadTruncated:_()}).strict().superRefine((e,a)=>{e.recommendedInstead.length>e.recommendedInsteadTotal&&a.addIssue({code:Je.custom,path:["recommendedInsteadTotal"],message:"Total cannot be smaller than the returned replacements"}),e.recommendedInsteadTruncated!==e.recommendedInstead.length<e.recommendedInsteadTotal&&a.addIssue({code:Je.custom,path:["recommendedInsteadTruncated"],message:"Truncation must agree with the replacement total"})}),pE=p({groupKey:Se,label:sl,propertyCount:at,propertiesMentioned:Lt,mentionCoverage:Lt,citationCoverage:Lt}).strict();p({portfolio:p({groupKey:Se.nullable(),label:sl.nullable(),measurementScope:Le([A(["full","spot_check"]),le()])}).strict(),measurement:ol,queryClass:la,metrics:p({propertiesMentioned:Lt,mentionCoverage:Lt,citationCoverage:Lt}).strict(),weakestProperties:y(mE),markets:y(pE),totalProperties:at,truncated:_()}).strict();p({targetKey:Se,runId:Bn.runId,provider:Bn.provider,location:Bn.location,queryClass:la.optional(),offset:m().int().nonnegative().optional(),limit:m().int().positive().max(100).optional()}).strict();A(["answered","missing"]);const Jp={queryId:oa,text:sl,class:R0,provider:ht,requestedModel:o().nullable(),servedModel:o().nullable(),location:o().nullable()},hE=qe("status",[p({resultId:oa,...Jp,status:O("answered"),mentioned:_().nullable(),cited:_().nullable(),recommendedInstead:y(Xr),answerExcerpt:o().nullable()}).strict(),p({resultId:le(),...Jp,status:O("missing"),mentioned:le(),cited:le(),recommendedInstead:y(Xr).length(0),answerExcerpt:le()}).strict()]);p({property:rl,measurement:ol,queryClass:la,questions:y(hE),total:at,truncated:_()}).strict();p({targetKey:Se,resultId:oa}).strict();const fE=p({url:oa,classification:G0,matchedTargetKeys:y(Se),assigned:_(),historical:_(),evidenceComplete:_()}).strict().superRefine((e,a)=>{e.assigned!==(e.classification==="assigned")&&a.addIssue({code:Je.custom,path:["assigned"],message:"Assigned must agree with the source attribution classification"})});p({property:rl,measurement:ol,question:p({resultId:oa,...Jp,status:O("answered")}).strict(),mentioned:_().nullable(),cited:_().nullable(),recommendedInstead:y(Xr),answer:o().nullable(),sources:y(fE),captureStatus:Le([ju,le()]),retrievalStatus:Le([$0,le()]),retrievalContract:Le([H0,le()])}).strict();p({targetKey:Se,runId:Bn.runId,provider:Bn.provider,location:Bn.location,queryClass:la.optional(),limit:m().int().positive().max(50).optional()}).strict();const gE=qe("state",[p({state:O("available"),answeredResults:at,targetMissResults:at,recommendationOccurrences:at}).strict(),p({state:O("unavailable"),reason:B0}).strict()]),yE=p({name:Xr,occurrences:at,providers:y(ht).max(5),providerTotal:at,providersTruncated:_(),questions:y(sl).max(5),questionTotal:at,questionsTruncated:_()}).strict().superRefine((e,a)=>{(e.providers.length>e.providerTotal||e.questions.length>e.questionTotal)&&a.addIssue({code:Je.custom,message:"Evidence totals cannot be smaller than returned evidence"}),e.providersTruncated!==e.providers.length<e.providerTotal&&a.addIssue({code:Je.custom,path:["providersTruncated"],message:"Provider truncation must agree with its total"}),e.questionsTruncated!==e.questions.length<e.questionTotal&&a.addIssue({code:Je.custom,path:["questionsTruncated"],message:"Question truncation must agree with its total"})});p({property:rl,measurement:ol,queryClass:la,basis:gE,competitors:y(yE),total:at,truncated:_()}).strict();p({runId:Bn.runId,scope:q0.default("all"),groupKey:Se.optional(),targetKey:Se.optional(),queryClass:la.default("all"),provider:Bn.provider,location:Bn.location,limit:m().int().positive().max(50).optional()}).strict().superRefine((e,a)=>{e.scope==="all"&&(e.groupKey!==void 0||e.targetKey!==void 0)&&a.addIssue({code:Je.custom,path:["scope"],message:"All scope cannot name a group or Property"}),e.scope==="group"&&(e.groupKey===void 0||e.targetKey!==void 0)&&a.addIssue({code:Je.custom,path:["groupKey"],message:"Group scope requires groupKey only"}),e.scope==="property"&&(e.targetKey===void 0||e.groupKey!==void 0)&&a.addIssue({code:Je.custom,path:["targetKey"],message:"Property scope requires targetKey only"})});const O2=A(["no_previous_run","execution_identity_changed","incomplete","not_comparable"]),B2=ol.extend({executionIdentity:oa.nullable(),measurementScope:Le([A(["full","spot_check"]),le()])}).strict(),Rr=qe("state",[p({state:O("available"),previous:Lt,current:Lt,delta:m()}).strict().superRefine((e,a)=>{if(e.previous.state!=="available"||e.current.state!=="available"){a.addIssue({code:Je.custom,message:"Available deltas require two available metrics"});return}Math.abs(e.delta-(e.current.value-e.previous.value))>Number.EPSILON&&a.addIssue({code:Je.custom,path:["delta"],message:"Delta must equal current minus previous"})}),p({state:O("unavailable"),reason:B0}).strict()]);p({current:B2,comparison:qe("state",[p({state:O("available"),previous:p({displayedRunId:oa,planRevision:m().int().positive(),completedAt:o().datetime().nullable(),executionIdentity:oa,measurementScope:A(["full","spot_check"])}).strict(),metrics:p({propertiesMentioned:Rr,mentionCoverage:Rr,citationCoverage:Rr}).strict(),changedProperties:y(rl.extend({mentionCoverage:Rr,citationCoverage:Rr,flags:at}).strict()),totalProperties:at,truncated:_()}).strict(),p({state:O("unavailable"),reason:O2}).strict()])}).strict().superRefine((e,a)=>{if(e.comparison.state==="available"){if(e.current.displayedRunId===null||e.current.executionIdentity===null){a.addIssue({code:Je.custom,path:["current"],message:"A comparison requires an identified current run"});return}e.comparison.previous.planRevision!==e.current.planRevision&&a.addIssue({code:Je.custom,path:["comparison","previous","planRevision"],message:"Comparisons cannot cross plan revisions"}),e.comparison.previous.executionIdentity!==e.current.executionIdentity&&a.addIssue({code:Je.custom,path:["comparison","previous","executionIdentity"],message:"Comparisons cannot cross execution identities"})}});p({runId:Bn.runId}).strict();const bE=A(["no_completed_run","incomplete","evidence_incomplete","no_population","not_applicable"]),Cu=p({state:O("unavailable"),reason:bE}).strict(),vE=p({state:O("available"),expected:at,executed:at,answered:at,missing:at}).strict(),xE=qe("state",[vE,Cu]).superRefine((e,a)=>{e.state==="available"&&(e.executed+e.missing!==e.expected&&a.addIssue({code:Je.custom,message:"Expected must equal executed plus missing"}),e.answered>e.executed&&a.addIssue({code:Je.custom,path:["answered"],message:"Answered cannot exceed executed"}))}),kE=p({state:O("available"),complete:at,partial:at,failed:at,unsupported:at,notRecorded:at}).strict(),wE=qe("state",[kE,Cu]),SE=p({state:O("available"),used:at,notUsed:at,unknown:at,notApplicable:at,notRecorded:at}).strict(),jE=qe("state",[SE,Cu]),AE=p({state:O("available"),expectedQuestions:at,answeredQuestions:at,missingQuestions:at}).strict(),CE=qe("state",[AE,Cu]).superRefine((e,a)=>{e.state==="available"&&e.answeredQuestions+e.missingQuestions!==e.expectedQuestions&&a.addIssue({code:Je.custom,message:"Expected questions must equal answered plus missing"})});p({run:B2,completeness:xE,capture:wE,retrieval:jE,population:CE,comparison:qe("state",[p({state:O("available"),previousDisplayedRunId:oa}).strict(),p({state:O("unavailable"),reason:O2}).strict()])}).strict().superRefine((e,a)=>{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&&a.addIssue({code:Je.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&&a.addIssue({code:Je.custom,path:["retrieval"],message:"Retrieval counts must total executed snapshots"})});const ko=o().regex(/^[a-f0-9]{64}$/),ra=o().trim().min(1).max(256),zi=m().int().positive(),Nb=p({kind:A(["user","api-key","system"]),id:o().trim().min(1),label:o().trim().min(1)}).strict(),NE=A(["proposed","included","excluded"]),_E=A(["manual","sitemap"]),K0=p({stableKey:Se,label:o().trim().min(1),status:NE,aliases:y(o().trim().min(1)),urlMatchers:y(o().trim().min(1)),source:_E,discoveredUrl:o().trim().min(1).optional(),discoveryIdentity:o().trim().min(1).optional()}).strict(),Nu=p({providers:y(ht).optional(),models:Ve(ht,o().trim().min(1)).optional(),locations:y(o().trim().min(1)).optional()}).strict(),zE=A(["branded","non-brand","unclassified"]),EE=A(["rule","operator"]),q2=p({targetKey:Se,queryId:ra,contextOverride:Nu.optional(),queryClass:zE,classificationSource:EE}).strict(),Q0=f2,M2=p({stableKey:Se,label:o().trim().min(1),targetKeys:y(Se),competitors:y(Q0)}).strict(),DE=p({sitemapUrl:o().url(),rule:U0,exclusions:y(o().trim().min(1)),inputChecksum:ko,reviewedAt:o().datetime().optional()}).strict(),TE=p({providers:y(ht),models:Ve(ht,o().trim().min(1)).optional(),locations:y(o().trim().min(1))}).strict(),RE=p({defaultContext:TE,targets:y(K0),assignments:y(q2),groups:y(M2),discovery:DE.optional()}).strict(),OE=p({id:o().trim().min(1),projectId:o().trim().min(1),schemaVersion:O(2),baseActiveVersionId:o().trim().min(1).nullable(),baseActiveRevision:zi.nullable(),authoring:RE,createdBy:Nb,updatedBy:Nb,createdAt:o().datetime(),updatedAt:o().datetime()}).strict(),Z0=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(),BE=p({code:o().trim().min(1),message:o().trim().min(1),path:y(Le([o(),m().int()]))}).strict(),qE=p({etag:o().trim().min(1),changed:_(),warnings:y(BE),counts:Z0}).strict();p({draft:OE.nullable(),etag:o().trim().min(1).nullable()}).strict();xo(K0);xo(q2);xo(M2);p({search:o().optional(),cursor:o().trim().min(1).optional(),limit:m().int().positive().max(O0).optional()}).strict();p({expectedActiveRevision:zi.nullable()}).strict();p({sitemapUrl:o().url(),rule:U0,exclusions:y(o().trim().min(1)).optional()}).strict();const ME=p({discoveryIdentity:o().trim().min(1),action:A(["create","rebind","ignore"]),targetKey:Se.optional(),label:o().trim().min(1).optional()}).strict();p({selections:y(ME),selectedTargetKeys:y(Se).optional()}).strict().superRefine((e,a)=>{e.selections.length===0&&e.selectedTargetKeys===void 0&&a.addIssue({code:"custom",message:"A proposal or reviewed Property selection is required."}),e.selectedTargetKeys&&new Set(e.selectedTargetKeys).size!==e.selectedTargetKeys.length&&a.addIssue({code:"custom",path:["selectedTargetKeys"],message:"Property keys must be unique."})});p({target:K0}).strict();p({targetKey:Se,label:o().trim().min(1)}).strict();p({targetKey:Se,mergedKeys:y(Se).min(1)}).strict();p({targetKey:Se,cleanup:O("assignments-and-group-memberships").optional()}).strict();p({targetKey:Se,discoveryIdentity:o().trim().min(1),discoveredUrl:o().url()}).strict();const P2={targetKeys:y(Se).optional(),groupKeys:y(Se).optional()};function I2(e,a){(e.targetKeys?.length??0)===0&&(e.groupKeys?.length??0)===0&&a.addIssue({code:"custom",message:"At least one Target or group selector is required."})}p(P2).strict().superRefine(I2);const PE=p({...P2,queryIds:y(ra).min(1),contextOverride:Nu.optional()}).strict().superRefine(I2);Le([p({targetKey:Se,queryIds:y(ra).min(1),contextOverride:Nu.optional()}).strict(),PE]);const IE=p({groupKey:Se,label:o().trim().min(1),memberCount:m().int().positive()}).strict();p({draftEtag:o().trim().min(1),groups:y(IE),resolvedTargetKeys:y(Se),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:Se,queryId:ra}).strict()).min(1),contextOverride:Nu.optional()}).strict();Le([p({targetKey:Se,queryId:ra}).strict(),p({targetKeys:y(Se).min(1),queryId:ra}).strict()]);p({targetKey:Se}).strict();p({queryClass:R0,assignments:y(p({targetKey:Se,queryId:ra}).strict()).min(1)}).strict();p({group:p({stableKey:Se,label:o().trim().min(1),targetKeys:y(Se),competitors:y(Q0).optional()}).strict()}).strict();p({groupKey:Se}).strict();p({groupKey:Se,competitor:Q0}).strict();p({groupKey:Se,competitorKey:Se}).strict();const ou=p({ruleId:o().trim().min(1),severity:A(["fail","warn"]),message:o().trim().min(1),path:y(Le([o(),m().int()]))}).strict();qe("ok",[p({ok:O(!0),compiledChecksum:ko,checks:y(ou),counts:Z0,plan:Su}).strict(),p({ok:O(!1),compiledChecksum:le(),checks:y(ou).min(1)}).strict()]);const _b=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(),VE=p({activeRevision:zi.nullable(),targets:_b,groups:_b,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();qe("ok",[p({ok:O(!0),compiledChecksum:ko,checks:y(ou),counts:Z0,plan:Su,diff:VE}).strict(),p({ok:O(!1),compiledChecksum:le(),checks:y(ou).min(1),diff:le()}).strict()]);p({expectedActiveRevision:zi.nullable(),expectedCompiledChecksum:ko}).strict();p({published:_(),active:p({revision:zi,checksum:ko,compiledChecksum:ko,createdAt:o().datetime(),plan:Su}).strict()}).strict();p({discarded:_()}).strict();p({expectedActiveRevision:zi}).strict();p({deactivated:_(),previousRevision:zi.nullable()}).strict();const LE=A(["republish_required","setup_in_progress","awaiting_first_run","operational","simple"]),UE=A(["republish_setup","continue_setup","run_measurement","view_measurement","start_setup"]),GE=A(["simple","draft-only","active-v1","active-v2"]);p({state:LE,nextAction:UE,mode:GE,activeRevision:zi.nullable(),activeSchemaVersion:Le([O(1),O(2)]).nullable(),draft:p({etag:o().trim().min(1),updatedAt:o().datetime()}).strict().nullable()}).strict();const V2=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(),$E=p({queryId:ra,queryText:o().min(1),position:m().int().nonnegative()}).strict();V2.extend({items:y($E)}).strict();p({querySets:y(V2)}).strict();p({name:o().trim().min(1),description:o().nullable().optional(),queryIds:y(ra)}).strict();const HE=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(HE)}).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(Ve(o().trim().min(1),o().trim().min(1))).min(1),querySetId:o().trim().min(1).optional()}).strict();p({created:y(p({queryId:ra,queryText:o().min(1)}).strict()),existing:y(p({queryId:ra,queryText:o().min(1)}).strict())}).strict();const ru=o().regex(/^[a-f0-9]{64}$/),_u=m().int().positive();p({stableKey:Se,kind:A(["target","group"]),retiredAt:o().datetime().nullable()}).strict();p({csv:o()}).strict();A(["matched","ambiguous","unmatched","invalid","duplicate","proposed","excluded"]);const KE=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"]),Wp=p({dataRow:_u,property:o(),group:o(),url:o().nullable(),normalizedProperty:o(),normalizedGroupLabel:o()}).strict(),Or=Wp.extend({reason:KE}),QE=p({source:A(["draft-target","draft-group","persisted-segment","retired-segment","proposed-group"]),stableKey:Se,kind:A(["target","group"]).optional(),retiredAt:o().datetime().nullable().optional(),normalizedGroupLabel:o().optional()}).strict(),ZE=p({proposedGroupKey:Se,evidence:y(QE).min(1)}).strict(),FE=qe("status",[Wp.extend({status:O("matched"),targetKey:Se,groupKey:Se}).strict(),Or.extend({status:O("ambiguous"),candidateTargetKeys:y(Se).min(1).optional(),candidateGroupKeys:y(Se).min(1).optional()}).strict(),Or.extend({status:O("unmatched")}).strict(),Or.extend({status:O("invalid"),groupKeyConflict:ZE.optional()}).strict(),Wp.extend({status:O("duplicate"),duplicateOfRow:_u,targetKey:Se,groupKey:Se}).strict(),Or.extend({status:O("proposed"),targetKey:Se}).strict(),Or.extend({status:O("excluded"),targetKey:Se}).strict()]),YE=p({normalizedGroupLabel:o(),groupKey:Se,label:o().trim().min(1),action:A(["create","extend"]),matchedRows:y(_u),targetKeys:y(Se),addedTargetKeys:y(Se),unchangedTargetKeys:y(Se)}).strict(),XE=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:ru,previewChecksum:ru,rows:y(FE),groupChanges:y(YE),counts:XE}).strict();p({csv:o(),sourceChecksum:ru,previewChecksum:ru,acceptedRows:y(_u).min(1)}).strict().superRefine((e,a)=>{new Set(e.acceptedRows).size!==e.acceptedRows.length&&a.addIssue({code:"custom",path:["acceptedRows"],message:"Accepted CSV data rows must be unique."})});qE.extend({appliedRows:m().int().nonnegative(),addedMemberships:m().int().nonnegative(),unchangedMemberships:m().int().nonnegative()}).strict();const L2=A(["introduced","repointed","retired"]),JE=L2.enum;p({modelId:o().trim().min(1),date:o().regex(/^\d{4}-\d{2}-\d{2}$/,"date must be YYYY-MM-DD"),kind:L2,confirmed:_(),sourceUrl:o().url(),note:o().min(1)});const WE=[{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.'}];JE.repointed;new Set(WE.map(e=>e.modelId.toLowerCase()));const eD=A(["not-exposed","no-known-change","known-change"]);eD.enum;const tD=p({modelId:o().trim().min(1),date:o().regex(/^\d{4}-\d{2}-\d{2}$/),confirmed:_(),sourceUrl:o().url()}),nD=p({status:A(["no-known-change","known-change"]),modelIds:y(o().trim().min(1)).min(1),changes:y(tD),changeCount:m().int().nonnegative(),unverifiedChangeCount:m().int().nonnegative(),firstChangeDate:o().optional(),lastChangeDate:o().optional(),knownGoodAsOf:o(),checkedThroughPeriodEnd:_()}),aD={openai:"ChatGPT",chatgpt:"ChatGPT",anthropic:"Claude",claude:"Claude",google:"Gemini",gemini:"Gemini",perplexity:"Perplexity"};function iD(e){const a=e.trim().toLowerCase();return aD[a]??e.charAt(0).toUpperCase()+e.slice(1)}function yp(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):0}function Br(e){return typeof e=="string"&&e.trim().length>=10?e.trim().slice(0,10):null}function bp(e){return[...new Set(e.filter(a=>a!==null))].sort()}function sD(e,a){const s=iD(e),r=Array.isArray(a.changes)?a.changes:[],u=yp(a.changeCount)||r.length,f=Math.min(u,yp(a.unverifiedChangeCount)||yp(a.unconfirmedChangeCount)||r.filter(S=>S.confirmed===!1).length),g=Br(a.knownGoodAsOf),b=a.checkedThroughPeriodEnd!==!1,x={engine:s,confirmedCount:u-f,unconfirmedCount:f,knownGoodAsOf:g,checkedThroughPeriodEnd:b};if(r.length>0)return{...x,confirmedDates:bp(r.filter(S=>S.confirmed!==!1).map(S=>Br(S.date))),unconfirmedDates:bp(r.filter(S=>S.confirmed===!1).map(S=>Br(S.date)))};const k=bp([Br(a.firstChangeDate),Br(a.lastChangeDate)]);return u===0?{...x,confirmedDates:[],unconfirmedDates:[]}:f===0?{...x,confirmedDates:k,unconfirmedDates:[]}:x.confirmedCount===0?{...x,confirmedDates:[],unconfirmedDates:k}:{...x,confirmedDates:[],unconfirmedDates:[]}}function oD(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 zb(e,a){return e.length===0?null:e.length===1&&a<=1?`on ${e[0]}`:`more than once between ${e[0]} and ${e[e.length-1]}`}function rD(e){const a=zb(e.confirmedDates,e.confirmedCount),s=zb(e.unconfirmedDates,e.unconfirmedCount),r=`The model behind ${e.engine}`;if(e.confirmedCount>0&&e.unconfirmedCount===0)return a?`${r} was updated ${a}, 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(a&&s)return`${r} was updated ${a}, 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 Eb(e){const a=e.filter(r=>!r.checkedThroughPeriodEnd&&r.knownGoodAsOf!==null);return a.length===0?null:`We last checked for model updates on ${a.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 F$(e){const a=Object.entries(e??{}).map(([x,k])=>sD(x,k??{})).sort((x,k)=>x.engine.localeCompare(k.engine));if(a.length===0)return null;const s=a.filter(x=>x.confirmedCount+x.unconfirmedCount>0);if(s.length===0){const x=[...new Set(a.map(D=>D.engine))],k=x.length>1,S=Eb(a),C=[...new Set(a.map(D=>D.knownGoodAsOf).filter(D=>D!==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 ${oD(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=Eb(a);return{kind:"change",text:`${s.map(rD).join(" ")} ${g}${b?` ${b}`:""}`}}const ls=p({slope:m(),intercept:m(),r2:m(),start:m(),end:m(),n:m(),startIndex:m(),endIndex:m()}),lD=A(["gsc","ga4","gbp"]);p({id:o(),domain:o(),connectionType:lD,propertyId:o().nullable().optional(),sitemapUrl:o().nullable().optional(),scopes:y(o()).default([]),createdAt:o(),updatedAt:o()});const cD=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(cD),totalMatching:m(),truncated:_(),latestAvailableDate:o().nullable()});const uD=p({date:o(),clicks:m(),impressions:m(),ctr:m(),position:m().nullable()}),dD=p({startDate:o().nullable(),endDate:o().nullable(),latestDataDate:o().nullable(),daysSinceLatestData:m().nullable()}),mD=p({clicks:ls.nullable(),impressions:ls.nullable(),ctr:ls.nullable(),position:ls.nullable()}),Db=p({startDate:o(),endDate:o(),clicks:m(),impressions:m(),ctr:m().nullable(),position:m().nullable(),source:A(["property-daily","dimensioned","mixed","empty"])}),pD=p({days:m(),basis:A(["prior-window","split-window"]).optional(),prior:Db,trailing:Db,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(uD),window:dD.optional(),trends:mD.optional(),periodComparison:pD.nullable().optional()});const hD=p({page:o(),clicks:m(),impressions:m(),ctr:m()});p({rows:y(hD),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 e0=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 fD=p({url:o(),previousState:o().nullable(),currentState:o().nullable(),transitionDate:o()}),gD=p({reason:o(),count:m(),urls:y(e0).default([])});p({summary:p({total:m(),indexed:m(),notIndexed:m(),deindexed:m(),percentage:m()}),lastInspectedAt:o().nullable(),lastSyncedAt:o().nullable(),indexed:y(e0).default([]),notIndexed:y(e0).default([]),deindexed:y(fD).default([]),reasonGroups:y(gD).default([])});p({url:o(),type:A(["URL_UPDATED","URL_DELETED"]),notifiedAt:o()});const yD=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(yD).default([])});p({date:o(),indexed:m(),notIndexed:m(),unknownPages:m().default(0),verifiedByInspection:m().default(0),derivedFromImpressions:m().default(0),reasonBreakdown:Ve(o(),m()).default({})});const bD=p({siteUrl:o(),permissionLevel:o()});p({sites:y(bD).default([])});const vD=p({type:o(),submitted:o(),indexed:o().optional().describe("Deprecated compatibility field.")}),U2=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(vD).optional()});p({sitemaps:y(U2).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 a=new URL(e).protocol;return a==="http:"||a==="https:"},{message:"Sitemap URL must use http or https."})).min(1).max(50)});const xD=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(xD)});p({sitemaps:y(U2),primarySitemapUrl:o(),run:p({id:o(),projectId:o(),kind:o(),status:o(),trigger:o(),createdAt:o()}).nullable()});const Ze=o().trim().min(1),Tb=o().regex(/^[a-f0-9]{64}$/i);function kD(e){if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;const a=new Date(`${e}T00:00:00.000Z`);return!Number.isNaN(a.getTime())&&a.toISOString().slice(0,10)===e}const ba=o().refine(kD,{message:"Expected a calendar date as YYYY-MM-DD."});function wD(e,a){const s=Date.parse(`${e}T00:00:00.000Z`),r=Date.parse(`${a}T00:00:00.000Z`);return Math.floor((r-s)/864e5)+1}const SD=A(["not-connected","selection-required","connected","stale"]),Pc=SD.enum,G2=A(["enabled","suspended","closed","canceled","unspecified","unknown"]);G2.enum;const F0=A(["enabled","paused","removed","unknown"]);F0.enum;const $2=A(["enabled","hidden","removed","unknown"]);$2.enum;const Y0=A(["customer","campaign"]);Y0.enum;const H2=A(["customer-goal","campaign-goal","custom-goal"]);H2.enum;const K2=p({loginCustomerId:Ze.nullable(),customerId:Ze.nullable(),selectedAt:o().nullable()}).strict(),vp=p({id:Ze,projectId:Ze,scopes:y(o()).default([]),selection:K2,lastValidatedAt:o().nullable(),lastInventorySnapshotAt:o().nullable(),lastMetricsSnapshotAt:o().nullable(),createdAt:o(),updatedAt:o()}).strict(),t0=p({resourceName:Ze,customerId:Ze,parentCustomerId:Ze.nullable(),descriptiveName:o().nullable(),currencyCode:o().nullable(),timeZone:o().nullable(),manager:_(),hidden:_(),testAccount:_(),level:m().int().nonnegative(),status:G2}).strict(),jD=p({customers:y(t0),totalAccessible:m().int().nonnegative(),truncated:_(),selection:K2,fetchedAt:o()}).strict();qe("status",[p({connected:O(!1),status:O(Pc["not-connected"]),connection:le(),selectedCustomer:le()}).strict(),p({connected:O(!0),status:O(Pc["selection-required"]),connection:vp,selectedCustomer:le()}).strict(),p({connected:O(!0),status:O(Pc.connected),connection:vp,selectedCustomer:t0}).strict(),p({connected:O(!0),status:O(Pc.stale),connection:vp,selectedCustomer:t0}).strict()]);const AD=p({id:Ze,resourceName:Ze,name:o(),status:F0,advertisingChannelType:o().nullable(),biddingStrategyType:o().nullable()}).strict(),CD=p({id:Ze,resourceName:Ze,name:o(),status:$2,category:o(),origin:o(),primaryForGoal:_(),includeInConversionsMetric:_()}).strict(),ND=p({category:o(),origin:o(),biddable:_()}).strict(),_D=p({campaignId:Ze,category:o(),origin:o(),biddable:_()}).strict(),zD=p({id:Ze,name:o(),conversionActionIds:y(Ze)}).strict(),ED=p({campaignId:Ze,goalConfigLevel:Y0,customGoalId:Ze.nullable()}).strict(),DD=p({customerId:Ze,fetchedAt:o(),campaigns:y(AD),conversionActions:y(CD),customerConversionGoals:y(ND),campaignConversionGoals:y(_D),campaignConversionGoalsComplete:_().optional(),customConversionGoals:y(zD),campaignGoalConfigurations:y(ED)}).strict(),TD=p({source:H2,category:o().nullable(),origin:o().nullable(),customGoalId:Ze.nullable(),biddable:_().nullable(),conversionActionIds:y(Ze),primaryConversionActionIds:y(Ze),secondaryConversionActionIds:y(Ze),missingConversionActionIds:y(Ze)}).strict(),RD=p({campaignId:Ze,goalConfigLevel:Y0,customGoalId:Ze.nullable(),missingCustomGoalId:Ze.nullable(),goals:y(TD)}).strict();p({customerId:Ze,derivedAt:o(),campaigns:y(RD)}).strict();const Q2=50,n0=31,OD=Q2*n0,BD=p({campaignIds:y(Ze).min(1).max(Q2),startDate:ba,endDate:ba}).strict().superRefine((e,a)=>{if(new Set(e.campaignIds).size!==e.campaignIds.length&&a.addIssue({code:Je.custom,path:["campaignIds"],message:"Campaign IDs must be unique."}),e.endDate<e.startDate){a.addIssue({code:Je.custom,path:["endDate"],message:"endDate must not precede startDate."});return}wD(e.startDate,e.endDate)>n0&&a.addIssue({code:Je.custom,path:["endDate"],message:`Campaign metrics may cover at most ${n0} calendar days.`})}),qD=p({campaignId:Ze,date:ba,impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),conversionValueMicros:m().int().nonnegative().nullable()}).strict(),MD=p({query:BD,rows:y(qD).max(OD),truncated:_(),fetchedAt:o()}).strict(),Z2=A(["accessible-customers","inventory","campaign-metrics"]),xp=Z2.enum,X0=p({id:Ze,projectId:Ze,connectionId:Ze,runId:Ze,kind:Z2,customerId:Ze.nullable(),payloadChecksum:Tb,rawPayloadSha256:Tb.nullable(),rawPayloadBytes:m().int().nonnegative().nullable(),redactedFieldCount:m().int().nonnegative(),capturedAt:o(),createdAt:o()}).strict(),PD=qe("kind",[p({kind:O(xp["accessible-customers"]),data:jD}).strict(),p({kind:O(xp.inventory),data:DD}).strict(),p({kind:O(xp["campaign-metrics"]),data:MD}).strict()]),ID=p({metadata:X0,payload:PD}).strict().superRefine((e,a)=>{e.metadata.kind!==e.payload.kind&&a.addIssue({code:Je.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),VD=A(["7d","14d","30d"]),J0=p({impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),conversionValueMicros:m().int().nonnegative().nullable(),ctr:m().nullable(),cpcMicros:m().int().nonnegative().nullable(),conversionRate:m().nullable(),costPerConversionMicros:m().int().nonnegative().nullable()}),LD=p({date:ba,origin:A(["provider","filled"]),impressions:m().int().nonnegative(),clicks:m().int().nonnegative(),costMicros:m().int().nonnegative(),conversions:m().nonnegative(),ctr:m().nullable()}),UD=p({campaignId:Ze,name:o().nullable(),status:F0,totals:J0}),GD=p({snapshotId:Ze,capturedAt:o(),customerId:Ze,currencyCode:o().nullable(),timeZone:o().nullable(),asOfDate:ba,openDate:ba.nullable(),truncated:_(),campaignsQueried:m().int().nonnegative(),campaignsInInventory:m().int().nonnegative()}),$D=p({startDate:ba,endDate:ba,days:m().int().positive(),totals:J0}),HD=p({days:m().int().positive(),prior:$D,change:p({impressions:m().nullable(),clicks:m().nullable(),costMicros:m().nullable(),conversions:m().nullable(),ctr:m().nullable(),conversionRate:m().nullable()})});p({window:VD,startDate:ba,endDate:ba,days:m().int().positive(),totals:J0,daily:y(LD),campaigns:y(UD),comparison:HD.nullable(),comparisonUnavailableReason:A(["insufficient-history","no-snapshot"]).nullable(),source:GD.nullable()});const Qe=o().trim().min(1),Rb=o().regex(/^[a-f0-9]{64}$/i),KD=A(["not-connected","selection-required","connected","stale"]),Ic=KD.enum,QD=A(["live","draft"]),F2=QD.enum,Yc=p({accountId:Qe.nullable(),containerId:Qe.nullable(),workspaceId:Qe.nullable(),selectedAt:o().nullable()}).strict(),kp=p({id:Qe,projectId:Qe,scopes:y(o()).default([]),selection:Yc,lastValidatedAt:o().nullable(),lastSnapshotAt:o().nullable(),createdAt:o(),updatedAt:o()}).strict(),Y2=p({id:Qe,path:o(),name:o(),shareData:_().nullable()}).strict(),X2=p({accountId:Qe,id:Qe,path:o(),name:o(),publicId:o().nullable(),domainName:o().nullable(),usageContexts:y(o())}).strict(),W0=p({accountId:Qe,containerId:Qe,id:Qe,path:o(),name:o(),description:o().nullable(),fingerprint:o().nullable()}).strict(),ZD=p({accounts:y(Y2),totalAccessible:m().int().nonnegative(),truncated:_(),fetchedAt:o()}).strict();p({accountId:Qe,containers:y(X2),totalAccessible:m().int().nonnegative(),truncated:_(),fetchedAt:o()}).strict();p({accountId:Qe,containerId:Qe,workspaces:y(W0),totalAccessible:m().int().nonnegative(),truncated:_(),fetchedAt:o()}).strict();const FD=p({id:Qe,name:o(),type:o(),paused:_(),firingTriggerIds:y(Qe),blockingTriggerIds:y(Qe),referencedVariableIds:y(Qe),parameterKeys:y(o()),fingerprint:o().nullable()}).strict(),YD=p({id:Qe,name:o(),type:o(),customEventNames:y(o()),filterKeys:y(o()),autoEventFilterKeys:y(o()),fingerprint:o().nullable()}).strict(),XD=p({id:Qe,name:o(),type:o(),dataLayerVariableName:o().nullable(),parameterKeys:y(o()),fingerprint:o().nullable()}).strict(),J2=A(["recognized","unknown"]),Ob=J2.enum,JD=A(["literal","variable-ref","absent","unknown"]),zu=JD.enum,WD=o().trim().min(5).max(132).regex(/^\{\{\w[\w ./-]{0,127}\}\}$/),Eo=p({source:O(zu.absent),literal:le(),variableRef:le()}).strict(),Do=p({source:O(zu.unknown),literal:le(),variableRef:le()}).strict(),To=p({source:O(zu["variable-ref"]),literal:le(),variableRef:WD}).strict();function ll(e){return p({source:O(zu.literal),literal:e,variableRef:le()}).strict()}const eT=o().trim().max(23).regex(/^(?:AW-)?\d{1,20}$/i),tT=o().trim().min(1).max(128).regex(/^[\w-]+$/),nT=o().trim().min(1).max(20).regex(/^(?:0|[1-9]\d{0,11})(?:\.\d{1,6})?$/),aT=o().trim().length(3).regex(/^[a-z]{3}$/i);qe("source",[ll(o().trim().min(1).max(256)),To,Eo,Do]);const iT=qe("source",[ll(eT),To,Eo,Do]),sT=qe("source",[ll(tT),To,Eo,Do]),oT=qe("source",[ll(nT),To,Eo,Do]),rT=qe("source",[To,Eo,Do]),lT=qe("source",[ll(aT),To,Eo,Do]),W2=A(["all-pages","custom-event","filtered","unknown"]);W2.enum;const Bb=p({operator:o().trim().min(1).max(64),value:o().max(2048),negated:_(),ignoreCase:_()}).strict(),cT=p({triggerId:Qe,triggerType:o(),eventPredicates:y(Bb),hostnamePredicates:y(Bb),unsupportedConditionCount:m().int().nonnegative()}).strict(),ek=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"]);ek.enum;const uT=p({tagId:Qe,tagType:o(),recognition:J2,recognitionReason:o().nullable(),conversionId:iT,conversionLabel:sT,value:oT,transactionId:rT,currency:lT,triggerStrategy:W2,triggerIds:y(Qe),triggerPredicates:y(cT),reviewReasons:y(ek)}).strict().superRefine((e,a)=>{e.recognition===Ob.recognized&&e.recognitionReason!==null&&a.addIssue({code:Je.custom,path:["recognitionReason"],message:"Recognized assessments cannot carry an unknown-recognition reason."}),e.recognition===Ob.unknown&&!e.recognitionReason&&a.addIssue({code:Je.custom,path:["recognitionReason"],message:"Unknown assessments require a recognition reason."})}),tk=p({accountId:Qe,containerId:Qe,workspaceId:Qe.nullable(),tags:y(FD),triggers:y(YD),variables:y(XD),googleAdsTagAssessments:y(uT).default([])}).strict(),dT=p({accountId:Qe,containerId:Qe,id:Qe,path:o(),name:o(),description:o().nullable(),fingerprint:o().nullable(),deleted:_()}).strict(),nk=p({source:O(F2.live),version:dT,graph:tk,fetchedAt:o()}).strict(),ak=p({source:O(F2.draft),workspace:W0,graph:tk,conflictCount:m().int().nonnegative(),fetchedAt:o()}).strict(),mT=p({account:Y2,container:X2,workspaces:y(W0),live:nk.nullable(),draft:ak.nullable(),fetchedAt:o()}).strict();qe("status",[p({connected:O(!1),status:O(Ic["not-connected"]),connection:le(),selection:le()}).strict(),p({connected:O(!0),status:O(Ic["selection-required"]),connection:kp,selection:Yc}).strict(),p({connected:O(!0),status:O(Ic.connected),connection:kp,selection:Yc}).strict(),p({connected:O(!0),status:O(Ic.stale),connection:kp,selection:Yc}).strict()]);const ik=A(["accounts","container","live","draft"]),Vc=ik.enum,eh=p({id:Qe,projectId:Qe,connectionId:Qe,runId:Qe,kind:ik,accountId:Qe.nullable(),containerId:Qe.nullable(),workspaceId:Qe.nullable(),payloadChecksum:Rb,rawPayloadSha256:Rb.nullable(),rawPayloadBytes:m().int().nonnegative().nullable(),redactedFieldCount:m().int().nonnegative(),capturedAt:o(),createdAt:o()}).strict(),pT=qe("kind",[p({kind:O(Vc.accounts),data:ZD}).strict(),p({kind:O(Vc.container),data:mT}).strict(),p({kind:O(Vc.live),data:nk}).strict(),p({kind:O(Vc.draft),data:ak}).strict()]),hT=p({metadata:eh,payload:pT}).strict().superRefine((e,a)=>{e.metadata.kind!==e.payload.kind&&a.addIssue({code:Je.custom,path:["payload","kind"],message:"Snapshot metadata and payload kinds must match."})}),kn=o().trim().min(1),fT=o().trim().min(1).refine(e=>ku(e)!==null,"Expected a hostname or http(s) URL."),th=A(["configured","statically-consistent","runtime-unverified","observed"]);th.enum;const sk=A(["pass","fail","unknown"]);sk.enum;const ok=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"]);ok.enum;const rk=p({id:kn,projectId:kn,name:o().trim().min(1),eventName:o().trim().min(1),googleAds:p({customerId:kn,conversionActionId:kn,conversionId:o().trim().min(1).optional(),conversionLabel:o().trim().min(1).optional(),campaignIds:y(kn).max(50).default([]),requireBiddableGoal:_().default(!0),requirePrimaryAction:_().default(!0)}).strict(),gtm:p({accountId:kn,containerId:kn,tagId:kn,triggerIds:y(kn).default([]),variableIds:y(kn).default([])}).strict(),runtime:p({verificationRequired:_().default(!0),requireTransactionId:_().default(!0),requireValue:_().default(!0),requireCurrency:_().default(!0),productionHosts:y(fT).default([])}).strict(),createdAt:o(),updatedAt:o()}).strict();rk.omit({id:!0,projectId:!0,createdAt:!0,updatedAt:!0});const lk=A(["not-run","consistent","inconsistent"]);lk.enum;const ck=A(["not-run","not-observed","observed"]);ck.enum;p({staticCheck:lk,runtimeVerificationRequired:_(),runtimeObservation:ck}).strict();const gT=p({code:ok,subject:o().trim().min(1),outcome:sk,status:th,evidenceIds:y(kn).default([])}).strict(),yT=p({contract:rk,status:th,findings:y(gT),evaluatedAt:o()}).strict(),qb=p({id:kn,name:o(),detail:o(),active:_()});p({googleAds:p({customerId:kn.nullable(),syncedAt:o().nullable(),conversionActions:y(qb)}),gtm:p({containerId:kn.nullable(),syncedAt:o().nullable(),tags:y(qb)})});const Gr=o().trim().min(1);function Mb(e){const a=e.trim();return/^\d{10}$/.test(a)?a:/^\d{3}-\d{3}-\d{4}$/.test(a)?a.replaceAll("-",""):null}const bT=/^[\w-]+$/;function nh(e){const a=e.trim();return bT.test(a)?a:null}function vT(e){const a=e.trim();return/^accounts\/([\w-]+)$/.exec(a)?.[1]??nh(a)}function xT(e,a){const s=e.trim(),r=/^accounts\/([\w-]+)\/containers\/([\w-]+)$/.exec(s);return r?r[1]===a?r[2]:null:nh(s)}function kT(e,a,s){const r=e.trim(),u=/^accounts\/([\w-]+)\/containers\/([\w-]+)\/workspaces\/([\w-]+)$/.exec(r);return u?u[1]===a&&u[2]===s?u[3]:null:nh(r)}function wT(e){const a=Mb(e.customerId);if(!a)return null;if(e.loginCustomerId===null)return{loginCustomerId:null,customerId:a};if(e.loginCustomerId===void 0)return{customerId:a};const s=Mb(e.loginCustomerId);return s?{loginCustomerId:s,customerId:a}:null}function ST(e){const a=vT(e.accountId);if(!a)return null;const s=xT(e.containerId,a);if(!s)return null;if(e.workspaceId===void 0)return{accountId:a,containerId:s};const r=kT(e.workspaceId,a,s);return r?{accountId:a,containerId:s,workspaceId:r}:null}const Eu=A(["google-ads","gtm"]);Eu.enum;p({provider:Eu,publicUrl:o().url().optional(),developerToken:o().trim().min(1).max(512).optional()}).strict();p({provider:Eu,authorizationUrl:o().url(),redirectUri:o().url(),expiresAt:o().nullable()}).strict();p({loginCustomerId:Gr.nullable().optional(),customerId:Gr}).strict().superRefine((e,a)=>{wT(e)||a.addIssue({code:Je.custom,message:"Expected ten-digit Google Ads customer IDs, with optional 3-3-4 display hyphens."})});p({accountId:Gr,containerId:Gr,workspaceId:Gr.optional()}).strict().superRefine((e,a)=>{ST(e)||a.addIssue({code:Je.custom,message:"GTM resource paths must match the selected account and container."})});p({provider:Eu,disconnected:_()}).strict();const uk=100;p({snapshots:y(X0).max(uk),nextCursor:o().nullable(),total:m().int().nonnegative()}).strict();p({snapshot:ID}).strict();p({snapshots:y(eh).max(uk),nextCursor:o().nullable(),total:m().int().nonnegative()}).strict();p({snapshot:hT}).strict();p({assessment:yT,googleAdsSnapshot:X0.nullable(),gtmSnapshot:eh.nullable()}).strict();const jT=p({name:o(),accountName:o().nullable(),type:o().nullable(),role:o().nullable()});p({accounts:y(jT),total:m().int().nonnegative()});const AT=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:Ve(o(),Sn()).nullable(),regularHours:Ve(o(),Sn()).nullable(),primaryPhone:o().nullable(),openStatus:o().nullable(),openingDate:o().nullable(),selected:_(),syncedAt:o().nullable(),createdAt:o(),updatedAt:o()});p({locations:y(AT),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 CT=p({locationName:o(),date:o(),metric:o(),value:m().int()});p({metrics:y(CT),total:m().int().nonnegative()});const NT=p({locationName:o(),periodStart:o(),periodEnd:o(),keyword:o(),valueCount:m().int().nullable(),valueThreshold:m().int().nullable()});p({keywords:y(NT),total:m().int().nonnegative(),thresholdedPct:m().int().min(0).max(100)});const _T=p({locationName:o(),placeActionLinkName:o(),placeActionType:o(),uri:o().nullable(),isPreferred:_(),providerType:o().nullable()});p({placeActions:y(_T),total:m().int().nonnegative()});const zT=p({locationName:o(),populatedGroupCount:m().int().nonnegative(),syncedAt:o(),attributes:Ve(o(),Sn())});p({lodging:y(zT),total:m().int().nonnegative()});const ET=p({name:o(),valueType:o(),values:y(Le([_(),o()])),unsetValues:y(o()),uris:y(o())}),DT=p({locationName:o(),attributeCount:m().int().nonnegative(),syncedAt:o(),attributes:y(ET)});p({attributes:y(DT),total:m().int().nonnegative()});const TT=p({locationName:o(),placeId:o(),tier:o(),amenities:y(o()),syncedAt:o(),place:Ve(o(),Sn())});p({places:y(TT),total:m().int().nonnegative()});p({scope:p({locationName:o().nullable(),locationCount:m().int().nonnegative()}),performance:p({totals:Ve(o(),m()),recent7d:Ve(o(),m()),prior7d:Ve(o(),m()),deltaPct:Ve(o(),m().nullable())}),freshness:p({dataThroughDate:o().nullable(),latestStoredDate:o().nullable(),pendingDays:m().int().nonnegative()}),timeseries:y(p({date:o(),pending:_(),metrics:Ve(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 RT={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 OT(e){const a=e.replace(/^BUSINESS_/,"").split("_").filter(Boolean).map(r=>r.toLowerCase());if(a.length===0)return e;const s=a.join(" ");return s.charAt(0).toUpperCase()+s.slice(1)}function Y$(e){return RT[e]??OT(e)}const BT=["BUSINESS_DIRECTION_REQUESTS","WEBSITE_CLICKS","CALL_CLICKS"],qT=["BUSINESS_IMPRESSIONS_DESKTOP_SEARCH","BUSINESS_IMPRESSIONS_MOBILE_SEARCH","BUSINESS_IMPRESSIONS_DESKTOP_MAPS","BUSINESS_IMPRESSIONS_MOBILE_MAPS"];function X$(e){return BT.includes(e)?"conversion":qT.includes(e)?"reach":"other"}p({id:o(),domain:o(),siteUrl:o().nullable().optional(),createdAt:o(),updatedAt:o()});const wp=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(wp).default([]),notIndexed:y(wp).default([]),unknown:y(wp).default([]).optional()});p({query:o(),impressions:m(),clicks:m(),ctr:m(),averagePosition:m()});p({date:o(),indexed:m(),notIndexed:m(),unknown:m()});const MT=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(MT).default([])});const dk=p({url:o(),verified:_()});p({sites:y(dk).default([])});p({connected:_(),domain:o(),siteUrl:o().nullable(),createdAt:o().nullable(),updatedAt:o().nullable()});p({connected:_(),domain:o(),siteUrl:o().nullable(),availableSites:y(dk).default([])});p({siteUrl:o()});const PT=p({name:o(),alive:_(),lastUsed:o().nullable()});p({connected:_(),endpoint:o(),version:o().optional(),browserVersion:o().optional(),targets:y(PT).default([])});const Ro=A(["live","staging"]);p({projectName:o(),url:o(),stagingUrl:o().optional(),username:o(),defaultEnv:Ro,createdAt:o(),updatedAt:o()});const Pb=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:Ro,live:Pb.nullable(),staging:Pb.nullable(),adminUrl:o().nullable().optional()});const IT=p({id:m(),slug:o(),title:o(),status:o(),modifiedAt:o().nullable().optional(),link:o().nullable().optional()}),mk=p({title:o().nullable(),description:o().nullable(),noindex:_().nullable(),writable:_().default(!1),writeTargets:y(o()).default([])}),VT=p({type:o(),json:Ve(o(),Sn())}),LT=IT.extend({env:Ro,content:o(),seo:mk,schemaBlocks:y(VT).default([])}),Ib=LT.extend({contentHash:o(),contentSnippet:o()}),pk=p({manualRequired:O(!0),targetUrl:o(),adminUrl:o().nullable().optional(),content:o(),nextSteps:y(o()).default([])}),UT=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:mk,schemaPresent:_(),issues:y(UT).default([])});const GT=p({slug:o(),status:A(["applied","skipped","manual"]),error:o().optional(),manualAssist:pk.optional()});p({env:Ro,strategy:A(["plugin","manual"]),results:y(GT)});const $T=p({slug:o(),status:A(["deployed","stripped","skipped","failed"]),schemasInjected:y(o()).optional(),manualAssist:pk.optional(),error:o().optional()});p({env:Ro,results:y($T)});const HT=p({slug:o(),title:o(),canonrySchemas:y(o()),thirdPartySchemas:y(o()),hasCanonrySchema:_()});p({env:Ro,pages:y(HT)});const KT=p({name:o(),status:A(["completed","skipped","failed"]),summary:o().optional(),error:o().optional()});p({projectName:o(),steps:y(KT)});p({slug:o(),live:Ib,staging:Ib,hasDifferences:_(),differences:p({title:_(),slug:_(),content:_(),seoTitle:_(),seoDescription:_(),noindex:_(),schema:_()})});const QT=p({name:o(),displayName:o().optional(),keyUrl:o().optional(),modelHint:o().optional(),model:o().optional(),defaultModel:o().optional(),configured:_(),quota:Q_.optional(),vertexConfigured:_().optional()}),ZT=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()}),Vb=p({configured:_()});p({providers:y(QT).default([]),providerCatalog:y(ZT).default([]),google:Vb,bing:Vb});const ca=A(["queued","running","completed","partial","failed","cancelled"]),rn=ca.enum,hk=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=hk.enum,ah=A(["manual","scheduled","config-apply","backfill","probe"]),ho=ah.enum,Va=A(["cited","not-cited"]),lu=Va.enum,cu=A(["visible","not-visible"]);cu.enum;const Jr=A(["mentioned","not-mentioned"]);Jr.enum;const fk=A(["new","cited","lost","emerging","not-cited"]);fk.enum;const FT=A(["new","mentioned","lost","emerging","not-mentioned"]);FT.enum;const YT=A([ho.manual,ho.probe]);p({kind:O(Te["answer-visibility"]).optional(),trigger:YT.optional(),providers:y(ht).optional(),queries:y(o().min(1)).min(1).optional(),measurementScope:G9.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 XT=p({message:o(),raw:Sn().optional()}),JT=p({message:o().optional(),providers:Ve(o(),XT).optional()}),WT=p({id:o(),projectId:o(),kind:hk,status:ca,trigger:ah.default("manual"),measurementPlanVersionId:o().nullable().optional(),measurementManifest:Ve(o(),Sn()).nullable().optional(),measurementScope:$9.nullable().optional(),measurementExecutionIdentity:N2.nullable().optional(),location:o().nullable().optional(),queries:y(o()).nullable().optional(),startedAt:o().nullable().optional(),finishedAt:o().nullable().optional(),error:JT.nullable().optional(),queryBasketRevision:m().int().nullable().optional(),createdAt:o()});function ih(e){if(e.providers){const a=Object.entries(e.providers);if(a.length===1){const[s,r]=a[0];return`${s}: ${r.message}`}if(a.length>1)return a.map(([s,r])=>`${s}: ${r.message}`).join(" • ")}return e.message??"Run failed."}const Du=p({uri:o(),title:o()}),eR=p({status:A(["applied","ignored","browser-implicit","unknown"]),resolved:un.nullable().optional()}),gk=p({id:o(),runId:o(),queryId:o(),query:o().optional(),provider:ht,citationState:Va,answerMentioned:_().optional(),visibilityState:cu.optional(),mentionState:Jr.optional(),transition:fk.optional(),answerText:o().nullable().optional(),citedDomains:y(o()).default([]),citedUrls:y(o()).nullable().default(null),captureStatus:Le([ju,le()]).default(null),sourceCount:m().int().nonnegative().nullable().default(null),resolvedCount:m().int().nonnegative().nullable().default(null),captureVersion:m().int().positive().nullable().default(null),retrievalStatus:Le([$0,le()]).default(null),retrievalContract:Le([H0,le()]).default(null),competitorOverlap:y(o()).default([]),citedCompetitorDomains:y(o()).default([]),mentionedCompetitorDomains:y(o()).default([]),recommendedCompetitors:y(o()).default([]),matchedTerms:y(o()).default([]),groundingSources:y(Du).default([]),searchQueries:y(o()).default([]),model:o().nullable().optional(),servedModel:o().nullable().optional(),location:o().nullable().optional(),requestedContext:un.nullable().optional(),supportedContext:eR.nullable().optional(),createdAt:o()});p({snapshots:y(gk),total:m().int().nonnegative()});const tR=p({queryId:o().nullable(),query:o().nullable(),run1State:Va.nullable(),run2State:Va.nullable(),run1AnswerMentioned:_().nullable(),run2AnswerMentioned:_().nullable(),run1VisibilityState:cu.nullable(),run2VisibilityState:cu.nullable(),run1MentionState:Jr.nullable().optional(),run2MentionState:Jr.nullable().optional(),changed:_(),visibilityChanged:_()});p({run1:o(),run2:o(),diff:y(tR)});const nR=WT.extend({snapshots:y(gk).optional()}),aR=p({totalRuns:m().int().nonnegative(),run:nR.nullable()});p({id:o(),projectId:o().nullable().optional(),actor:o(),action:o(),entityType:o(),entityId:o().nullable().optional(),diff:Sn().optional(),userAgent:o().nullable().optional(),actorSession:o().nullable().optional(),createdAt:o()});const iR=A(["yes","no","unknown","not-mentioned"]),Lb=y(o().min(1));p({companyName:o().min(1),domain:o().min(1),queries:Lb.optional(),phrases:Lb.optional(),competitors:y(o().min(1)).optional().default([])}).superRefine((e,a)=>{e.queries!==void 0&&e.phrases!==void 0&&a.addIssue({code:"custom",message:"Use queries; phrases is accepted only as a legacy alias when queries is omitted",path:["phrases"]})});const sR=p({name:o(),count:m().int().nonnegative()}),oR=p({id:o(),name:o(),weight:m(),score:m(),findings:y(p({type:o(),message:o()})).default([]),recommendations:y(o()).default([])}),rR=p({url:o(),finalUrl:o(),auditedAt:o(),overallScore:m(),summary:o(),factors:y(oR).default([])}),lR=p({industry:o(),summary:o(),services:y(o()).default([]),categoryTerms:y(o()).default([])}),cR=p({provider:o(),displayName:o(),model:o().nullable().optional(),mentioned:_(),cited:_(),describedAccurately:iR,accuracyNotes:o().nullable().optional(),incorrectClaims:y(o()).default([]),recommendedCompetitors:y(o()).default([]),citedDomains:y(o()).default([]),groundingSources:y(Du).default([]),searchQueries:y(o()).default([]),answerText:o(),error:o().nullable().optional()}),uR=p({query:o(),providerResults:y(cR).default([])}),dR=p({totalQueries:m().int().nonnegative(),totalProviders:m().int().nonnegative(),totalComparisons:m().int().nonnegative(),mentionCount:m().int().nonnegative(),citationCount:m().int().nonnegative(),topCompetitors:y(sR).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:lR,audit:rR,queryResults:y(uR).default([]),summary:dR});const yk=Le([ca,le()]),sh=A(["pass","partial","fail"]);sh.enum;const bk=A(["up","down","flat"]);bk.enum;const mR=p({id:o(),name:o(),weight:m(),avgScore:m(),status:sh,pagesPassing:m().int().nonnegative(),pagesPartial:m().int().nonnegative(),pagesFailing:m().int().nonnegative()}),pR=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:yk,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:Le([bk,le()]),previousScore:m().nullable(),previousAuditedAt:o().nullable(),factors:y(mR).default([]),crossCuttingIssues:y(pR).default([]),prioritizedFixes:y(o()).default([])});const vk=p({id:o(),name:o(),weight:m(),score:m()}),hR=p({url:o(),overallScore:m(),status:A(["success","error"]),error:o().nullable().optional(),factors:y(vk).default([])});p({project:o(),runId:o().nullable(),auditedAt:o().nullable(),total:m().int().nonnegative(),pages:y(hR).default([])});const fR=p({runId:o(),auditedAt:o(),aggregateScore:m(),pagesAudited:m().int().nonnegative()});p({project:o(),points:y(fR).default([])});const gR=A(["disabled","complete","partial","unavailable"]);gR.enum;const yR=p({pagesDiscovered:m().int().nonnegative(),pagesFetched:m().int().nonnegative(),pagesEligible:m().int().nonnegative(),edges:m().int().nonnegative(),findings:m().int().nonnegative()}),bR=qe("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:yk,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:Ve(o(),Sn()).default({}),complete:_(),termination:o().nullable(),detailsAvailable:_(),counts:yR,deadLinks:bR});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 Tu=A(["eligible","hidden","resource","redirect","failed","unchecked"]),J$=Tu.enum,W$=Tu.options,oo={discovered:"discovered",robotsBlocked:"robots-blocked",html:"html",redirect:"redirect",nonHtml:"non-html",fetchError:"fetch-error"},Lc={indexable:"indexable",noindex:"noindex",blocked:"blocked",unknown:"unknown"},vR={robotsDisallow:"robots-disallow",redirectTerminal:"redirect-terminal",metaRobotsNoindex:"meta-robots-noindex",xRobotsNoindex:"x-robots-noindex",canonicalToOther:"canonical-to-other",notHtmlOrUnavailable:"not-html-or-unavailable"};function xR(e){return e.indexabilityReasons?.some(a=>a===vR.canonicalToOther)===!0||e.nodeKey!==void 0&&e.canonicalNodeKey!==null&&e.canonicalNodeKey!==void 0&&e.canonicalNodeKey!==e.nodeKey}function eH(e){switch(e.fetchState){case oo.fetchError:return"failed";case oo.discovered:return"unchecked";case oo.nonHtml:return"resource";case oo.redirect:return"redirect";case oo.robotsBlocked:return"hidden";case oo.html:break;default:return"unchecked"}if(xR(e))return"hidden";switch(e.indexabilityState){case Lc.indexable:return"eligible";case Lc.noindex:case Lc.blocked:return"hidden";case Lc.unknown:default:return"unchecked"}}const tH=15,kR=A(["navigation","content","unknown"]);kR.enum;const wR=p({navigation:m().int().nonnegative(),content:m().int().nonnegative(),unknown:m().int().nonnegative()}),xk=A(["placement","ubiquity","unmeasured"]);xk.enum;const Ru=A(["applied","applied-placement","applied-placement-with-ubiquity","applied-placement-partial","unavailable-too-few-pages","unavailable-legacy-scan"]);Ru.enum;function nH(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 Ou=A(["all","content","template"]);Ou.enum;const SR=A(["anchor","redirect","canonical","link"]);SR.enum;const Wr=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:Tu}),jR=p({type:A(["found","missing","info","timeout","unreachable"]),code:o().min(1),message:o().min(1)}),Ub=vk.extend({status:sh,applicable:_().nullable(),findings:y(jR).default([]),recommendations:y(o()).default([])}),Gb=p({id:o().min(1),severity:A(["critical","warning"]),detail:o().min(1),recommendation:o().min(1)}),Uc=p({project:o(),runId:o(),complete:_(),termination:o().nullable()}),$b=p({nodeKey:o(),url:o(),auditState:o()});qe("state",[p({state:O("no-crawl"),project:o(),runId:le()}),Uc.extend({state:O("details-unavailable")}),Uc.extend({state:O("not-found")}),Uc.merge($b).extend({state:O("not-audited"),auditScore:le(),factors:y(Ub).length(0).default([]),criticalDefects:y(Gb).length(0).default([])}),Uc.merge($b).extend({state:O("ready"),auditScore:m(),evidenceState:A(["complete","scores-only"]),factors:y(Ub).default([]),criticalDefects:y(Gb).default([])})]);const AR=A(["applied","unavailable-legacy-scan"]);p({project:o(),hasCrawlData:_(),runId:o().nullable(),total:m().int().nonnegative(),nextCursor:o().nullable(),healthStateFilter:Le([AR,le()]).default(null),pages:y(Wr).default([])});const CR=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(CR).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:Le([_(),le()]),templateRatio:Le([m(),le()]),templateSource:xk,placementOccurrences:Le([wR,le()])}),NR=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:Tu,x:m(),y:m()}),_R=p({edgeKey:o(),sourceNodeKey:o(),targetNodeKey:o(),followable:_(),occurrences:m().int().positive(),isTemplate:_()}),zR=A(["no-crawl","legacy-snapshot","details-unavailable","layout-failed","empty-crawl"]),ER=qe("state",[p({state:O("ready"),version:o().min(1),computedAt:o().min(1),templateLinksExcluded:_()}),p({state:O("unavailable"),version:le(),reason:zR})]);p({project:o(),hasCrawlData:_(),runId:o().nullable(),rootNodeKey:o().nullable(),layout:ER,templateDetection:Ru,linkKind:Ou,totalNodes:m().int().nonnegative(),totalEdges:m().int().nonnegative(),totalTemplateEdges:m().int().nonnegative(),totalContentEdges:m().int().nonnegative(),nodes:y(NR).default([]),edges:y(_R).default([]),omittedNodes:m().int().nonnegative(),omittedEdges:m().int().nonnegative(),sampled:_()});const aH=2e4,iH=5e4,DR=A(["focus","inbound","outbound","both","transitive"]),TR=Wr.extend({distance:m().int().nonnegative(),relationToFocus:DR});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(TR).default([]),edges:y(ds).default([]),omittedNodes:m().int().nonnegative(),omittedEdges:m().int().nonnegative(),countAccuracy:A(["exact","lower-bound"]),truncated:_()});const Hb=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:Hb.nullable(),to:Hb.nullable(),maxDepth:m().int().positive(),visitedNodes:m().int().nonnegative(),nodes:y(Wr).default([]),edges:y(ds).default([])});const kk=A(["added","removed","changed"]),RR=p({entity:O("page"),change:kk,key:o(),changedFields:y(o()).default([]),before:Wr.nullable(),after:Wr.nullable()}),OR=p({entity:O("link"),change:kk,key:o(),changedFields:y(o()).default([]),before:ds.nullable(),after:ds.nullable()}),BR=qe("entity",[RR,OR]),Kb=p({added:m().int().nonnegative(),removed:m().int().nonnegative(),changed:m().int().nonnegative()}),qR=p({scope:A(["all","pages","links"]),change:A(["all","added","removed","changed"])});qe("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:qR,summaryState:A(["exact","omitted-on-continuation"]),summary:p({pages:Kb,links:Kb}).nullable(),total:m().int().nonnegative().nullable(),nextCursor:o().nullable(),changes:y(BR).default([])})]);p({project:o(),hasCrawlData:_(),runId:o().nullable(),total:m().int().nonnegative(),nextCursor:o().nullable(),templateDetection:Ru,linkKind:Ou,edges:y(ds).default([])});p({project:o(),hasCrawlData:_(),runId:o().nullable(),nodeKey:o().nullable(),url:o().nullable(),templateDetection:Ru,linkKind:Ou,inbound:y(ds).default([]),outbound:y(ds).default([]),inboundTruncated:_(),outboundTruncated:_()});const Qb=p({findingKey:o(),severity:o(),sourceNodeKey:o().nullable(),sourceUrl:o().nullable(),targetNodeKey:o().nullable(),targetUrl:o().nullable(),evidence:Ve(o(),Sn()).default({})});qe("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(Qb).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(Qb).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:ca});const MR=p({runId:o(),status:ca,createdAt:o(),startedAt:o().nullable(),finishedAt:o().nullable(),hasCrawlData:_()});p({project:o(),scans:y(MR).default([])});const PR=A(["queued","discovering","checking","arranging-map","completed","partial","failed","cancelled"]),IR=p({state:A(["pending","ready","unavailable"]),layoutVersion:o().nullable(),failureCode:o().nullable(),updatedAt:o().nullable()}),VR=p({id:o(),state:o(),pagesDiscovered:m().int().nonnegative(),pagesFetched:m().int().nonnegative(),pagesEligible:m().int().nonnegative(),pagesErrored:m().int().nonnegative(),edgesDiscovered:m().int().nonnegative(),lastUpdatedAt:o(),startedAt:o().nullable(),finishedAt:o().nullable(),error:o().nullable()});p({project:o(),runId:o(),status:ca,phase:PR,attempt:VR.nullable(),layout:IR,error:o().nullable()});const LR=A(["waiting","collecting","terminal"]),UR=p({nodeKey:o(),url:o(),auditScore:m(),checksNeedingAttention:m().int().nonnegative()});p({project:o(),runId:o(),status:ca,state:LR,attemptId:o().nullable(),pagesAudited:m().int().nonnegative(),updatedAt:o().nullable(),examples:y(UR).max(12).default([])});const oh=A(["answer-visibility","traffic-sync","gbp-sync","data-refresh","backlinks-sync","site-audit","ads-sync","doctor"]);oh.enum;p({id:o(),projectId:o(),kind:oh,cronExpr:o(),preset:o().nullable().optional(),timezone:o().default("UTC"),enabled:_().default(!0),providers:y(ht).default([]),sourceId:o().nullable().optional(),lastRunAt:o().nullable().optional(),nextRunAt:o().nullable().optional(),createdAt:o(),updatedAt:o()});p({kind:oh.optional(),preset:o().optional(),cron:o().optional(),timezone:o().optional().default("UTC"),enabled:_().optional().default(!0),providers:y(ht).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 rh=A(["competitor","directory","social","forum","news","reference","blog","ecommerce","video","academic","other"]);rh.enum;const lh=A(["cited","aspirational","wasted-surface"]),Zb=lh.enum;Zb.cited,Zb.aspirational;const Bu=A(["direct-competitor","ota-aggregator","editorial-media","other","unknown"]),GR=Bu.enum;GR["direct-competitor"];const qu=A(["queued","seeding","probing","completed","failed"]);qu.enum;const wk=p({domain:o().min(1),hits:m().int().positive(),competitorType:Bu.default("unknown")}),$R=p({id:o(),sessionId:o(),projectId:o(),query:o(),bucket:lh.nullable().default(null),citationState:Va,citedDomains:y(o()).default([]),answerMentioned:_().nullable().default(null),createdAt:o()}),HR=p({id:o(),projectId:o(),status:qu,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(un).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:Ve(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(wk).default([]),warning:o().nullable().optional(),error:o().nullable().optional(),startedAt:o().nullable().optional(),finishedAt:o().nullable().optional(),createdAt:o()});HR.extend({probes:y($R).default([])});const KR=500,QR=8,ZR=["gemini","openai"],FR=A(ZR);p({icpDescription:o().min(1).optional(),buyerDescription:o().min(1).optional(),seedProviders:y(FR).min(1).transform(e=>[...new Set(e)].sort()).optional(),dedupThreshold:m().min(0).max(1).optional(),maxProbes:m().int().positive().max(KR).optional(),probeConcurrency:m().int().min(1).max(QR).optional(),locations:y(o().min(1)).optional()});p({buckets:y(lh).min(1).optional(),includeCompetitors:_().optional(),competitorTypes:y(Bu).min(1).optional()});p({sessionId:o(),projectId:o(),status:qu,queriesByBucket:p({cited:y(o()),aspirational:y(o()),"wasted-surface":y(o())}),suggestedCompetitors:y(wk)});p({sessionId:o(),projectId:o(),promoted:p({queries:y(o()),competitors:y(o())}),skipped:p({queries:y(o()),competitors:y(o())})});Le([O("cli"),o().regex(/^discovery:.+$/)]);const YR=p({query:o().min(1),probeHits:m().int().positive()}),XR=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:qu,minProbeHits:m().int().positive(),anchorApplied:_(),semanticNoveltyApplied:_(),candidates:y(YR),stats:XR});const ch=A(["own","direct-competitor","ota-aggregator","editorial-media","other"]);ch.enum;const Sk=A(["7d","30d","90d","all"]),Fb=A(["improving","declining","stable"]),JR=A(["mentioned","cited"]);JR.enum;const a0=p({citationRate:m(),cited:m().int(),total:m().int(),mentionRate:m(),mentionedCount:m().int()}),uh=o().trim().min(1),WR=y(uh).min(1).superRefine((e,a)=>{for(let s=1;s<e.length;s+=1)e[s-1]>=e[s]&&a.addIssue({code:"custom",message:"mixed model IDs must be sorted and unique",path:[s]})}),wo=qe("status",[p({status:O("known"),model:uh}),p({status:O("unknown")}),p({status:O("mixed"),models:WR,includesUnknown:_()})]),eO=p({observedAt:o(),bucketStartDate:o(),from:wo,to:wo,fromPreWindowAnchor:_().optional(),anchorObservedAt:o().optional()}),jk=p({latestObservation:p({observedAt:o(),state:wo}),events:y(eO),eventTotal:m().int().nonnegative().optional(),anchorUnavailable:_().optional()}),tO=Ve(o(),jk),nO=jk.extend({latestServedModelIds:y(uh).default([])}),aO=Ve(o(),nO),iO=p({observedAt:o(),configured:wo,served:wo}),sO=p({scope:A(["non-brand","pooled"]),rate:m().nullable(),projectMentionSnapshots:m().int().nonnegative(),competitorMentionSnapshots:m().int().nonnegative()}),oO=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:sO,byProvider:Ve(o(),a0),modelEvidenceByProvider:Ve(o(),wo).default({}),basketRevision:m().int().nullable().default(null)}),rO=p({revision:m().int(),at:o(),added:y(o()),removed:y(o())}),lO=p({date:o(),delta:m().int(),label:o()}),cO=p({at:o(),identity:N2});p({window:Sk,mentionShareScope:A(["non-brand","pooled"]),buckets:y(oO),overall:a0,byProvider:Ve(o(),a0),trend:Fb,mentionTrend:Fb,queryChanges:y(lO),basketChanges:y(rO).default([]),executionIdentityChanges:y(cO).default([]),referenceBasketRevision:m().int().nullable().default(null),modelAttribution:tO.default({}),servedModelAttribution:aO.default({}),modelServiceMismatch:Ve(o(),iO).default({}),modelPointerChanges:Ve(o(),nD).default({})});const Yb=p({category:rh,label:o(),count:m().int(),percentage:m(),topDomains:y(p({domain:o(),count:m().int()}))}),uO=p({domain:o(),count:m().int(),percentage:m(),category:rh,label:o(),surfaceClass:ch}),dO=p({surfaceClass:ch,label:o(),count:m().int(),percentage:m(),domainCount:m().int()}),Xb=p({totalCitedSlots:m().int(),domainTotal:m().int(),entries:y(uO),truncatedDomainCount:m().int(),truncatedCitedSlots:m().int(),bySurfaceClass:y(dO)});p({overall:y(Yb),byQuery:Ve(o(),y(Yb)),ranked:Xb,byProvider:Ve(o(),Xb),runId:o(),window:Sk,limit:m().int().nullable()});const dh=p({total:m().int(),checked:m().int(),mentioned:m().int(),cited:m().int(),mentionRate:m().nullable(),citedRate:m().nullable()}),Ak=dh.extend({provider:o(),firstObserved:o(),lastObserved:o()}),mO=dh.extend({queryId:o().nullable(),query:o(),firstObserved:o(),lastObserved:o(),providers:y(Ak).optional()}),pO=p({since:o().nullable(),until:o().nullable(),lastRuns:m().int().nullable(),runCount:m().int()}),hO=A(["provider"]),i0=p({domain:o(),mentions:m().int()}),fO=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(i0)});p({project:o(),groupBy:hO.optional(),window:pO,totals:dh,byProvider:y(Ak).optional(),queries:y(mO),shareOfVoice:fO.optional()});const gO=A(["within-noise","moved","insufficient-data","model-discontinuous","model-unknown"]),yO=A(["up","down","flat"]),Jb=p({availability:A(["available","no-observations","no-competitive-frame"]),point:m().nullable(),ciLow:m().nullable(),ciHigh:m().nullable(),numerator:m().int(),denominator:m().int()}),bO=A(["mention-share-of-voice","cited-share-of-voice","mention-rate","cited-rate"]),vO=p({key:bO,label:o(),queryClass:A(["all","non-brand","pooled"]),driftRobust:_(),from:Jb,to:Jb,rateRatio:m().nullable(),direction:Le([yO,le()]),verdict:gO}),Wb=p({month:o(),since:o(),until:o(),runCount:m().int(),lowRunCount:_()}),xO=p({queryCount:m().int(),excludedFromOnly:m().int(),excludedToOnly:m().int(),providers:y(o()),excludedProviders:y(o())}),kO=p({provider:o(),fromModels:y(o()),toModels:y(o())}),wO=A(["included","model-discontinuous","model-unknown"]),SO=p({provider:o(),status:wO,fromModels:y(o()),toModels:y(o())}),jO=A(["comparable","model-discontinuous","model-unknown","insufficient-data"]),AO=p({status:jO,comparedProviders:y(o()),providers:y(SO)}),CO=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()})}),NO=p({from:p({count:m().int(),of:m().int()}),to:p({count:m().int(),of:m().int()})});p({project:o(),from:Wb,to:Wb,basket:xO,metrics:y(vO),queriesMentioned:NO,byProvider:y(CO),modelChanges:y(kO),continuity:AO,competitors:p({from:y(i0),to:y(i0)})});A(["json","csv"]);const _O=p({runId:o(),runKind:O("answer-visibility"),runStatus:ca,runTrigger:ah,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:Va,cited:_(),answerMentioned:_().nullable(),mentionState:Le([Jr,le()]),citedDomains:y(o()),citedUrls:y(o()).nullable(),captureStatus:Le([ju,le()]),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(Du),searchQueries:y(o())}),zO=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:zO,recordCount:m().int().nonnegative(),records:y(_O)});const Mu=A(["organic","paid"]);Mu.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 mh=A(["session","first_user","manual_utm"]),EO=p({source:o(),medium:o(),trafficClass:Mu,sessions:m(),users:m().optional(),sourceDimension:mh}),DO=p({source:o(),medium:o(),trafficClass:Mu,sourceDimension:mh,landingPage:o(),sessions:m(),users:m().optional()}),TO=p({source:o(),medium:o(),sessions:m(),users:m(),channelGroup:o()}),qr=p({sessions:m(),sharePct:m(),sharePctDisplay:o()}),RO=p({organic:qr,social:qr,direct:qr,ai:qr,other:qr});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(EO),aiReferralLandingPages:y(DO),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(TO),socialSessions:m(),socialUsers:m(),channelBreakdown:RO,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 OO=p({propertyId:o(),displayName:o(),accountName:o()});p({properties:y(OO)});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:Mu,landingPage:o(),sessions:m(),users:m(),sourceDimension:mh});const BO=p({source:o(),sessions:m(),paidSessions:m(),organicSessions:m()}),qO=p({date:o(),sessions:m(),paidSessions:m(),organicSessions:m(),bySource:y(BO)});p({days:y(qO),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:Ve(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 Ck=A(["claude","openai","gemini","zai","deepinfra"]),MO=p({id:Ck,label:o(),defaultModel:o(),configured:_(),keySource:A(["config","env"]).nullable()});p({providers:y(MO).default([]),defaultProvider:Ck.nullable()});const PO=A(["aero","user","compaction"]);PO.enum;const Nk=128;p({key:o().min(1).max(Nk),value:o().min(1)});p({key:o().min(1).max(Nk)});const Oo=A(["commoncrawl","bing-webmaster"]);Oo.enum;const ph=A(["queued","downloading","querying","ready","failed"]);ph.enum;p({id:o(),release:o(),status:ph,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 IO=p({linkingDomain:o(),numHosts:m().int(),source:Oo}),VO=p({projectId:o(),release:o(),targetDomain:o(),totalLinkingDomains:m().int(),totalHosts:m().int(),top10HostsShare:o(),queriedAt:o(),source:Oo,excludedLinkingDomains:m().int().optional(),excludedHosts:m().int().optional()});p({source:Oo,summary:VO.nullable(),total:m().int(),rows:y(IO)});p({release:o(),totalLinkingDomains:m().int(),totalHosts:m().int(),top10HostsShare:o(),queriedAt:o(),source:Oo});const LO=p({source:Oo,connected:_(),hasData:_(),latestRelease:o().nullable(),totalLinkingDomains:m().int(),lastSyncedAt:o().nullable()});p({projectId:o(),targetDomain:o(),sources:y(LO),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:ph.nullable(),bytes:m().int(),lastUsedAt:o().nullable()});const hh=A(["positive","caution","negative","neutral"]),wi=p({label:o(),value:o(),delta:o(),tone:hh,description:o(),tooltip:o().optional(),trend:y(m()),progress:m().optional(),providerCoverage:o().optional()}),ev=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()}),UO=wi.extend({breakdown:ev,scope:A(["non-brand","pooled"]),branded:ev}),Sp=p({gained:m().int().nonnegative(),lost:m().int().nonnegative(),tone:hh,hasPreviousRun:_(),gainedQueries:y(o()).optional(),lostQueries:y(o()).optional()}),GO=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())}),$O=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()}),HO=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:Ve(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:Zz,latestRun:aR,health:HO.nullable(),topInsights:y($O),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:UO,gapQueries:wi,mentionGaps:wi,indexCoverage:wi,competitorPressure:wi,runStatus:wi}),movementSummary:Sp,citationMovement:Sp,mentionMovement:Sp,movementComparison:GO,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:hh,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 KO=p({kind:O("snapshot"),id:o(),runId:o(),query:o(),provider:o(),model:o().nullable(),citationState:Va,matchedField:A(["answerText","citedDomains","citedUrls","searchQueries","query"]),snippet:o(),createdAt:o()}),QO=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()}),ZO=qe("kind",[KO,QO]);p({query:o(),totalHits:m().int().nonnegative(),truncated:_(),hits:y(ZO)});const _k=A(["create","expand","refresh","add-schema"]);_k.enum;function sH(e){switch(e){case"create":return"Create";case"expand":return"Expand";case"refresh":return"Refresh";case"add-schema":return"Add schema"}}const zk=A(["gsc","competitor-evidence","both"]);zk.enum;const Ek=A(["high","medium","low"]);Ek.enum;const FO=A(["blog-post","comparison","listicle","how-to","guide","glossary"]);FO.enum;const Dk=A(["proposed","briefed","payload-generated","draft-created","published","validated","dismissed"]);Dk.enum;const fh=A(["ownable","ceded"]);fh.enum;const YO=p({url:o(),gscImpressions:m().nonnegative(),gscClicks:m().nonnegative(),gscAvgPosition:m().nonnegative().nullable(),organicSessions:m().nonnegative()}),XO=p({domain:o(),url:o(),title:o(),citationCount:m().int().nonnegative()}),JO=p({demand:m(),competitor:m(),absence:m(),gapSeverity:m()}),WO=p({actionId:o(),state:Dk,lastUpdated:o()}),Tk=p({targetRef:o(),query:o(),action:_k,ourBestPage:YO.nullable(),winningCompetitor:XO.nullable(),score:m(),scoreBreakdown:JO,drivers:y(o()),demandSource:zk,actionConfidence:Ek,existingAction:WO.nullable(),winnabilityClass:fh,winnability:m().min(0).max(1).nullable()});p({targets:y(Tk),contextMetrics:p({totalAiReferralSessions:m().int().nonnegative(),latestRunId:o(),runTimestamp:o()})});const eB=p({targetRef:o(),addressedUrl:o().nullable(),note:o().nullable(),dismissedAt:o()});p({dismissals:y(eB)});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 tB=p({targetQuery:o().trim().min(1),winnabilityClass:fh,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:tB,costMillicents:m().int().nonnegative(),generatedAt:o()});const nB=p({domain:o(),competitorType:Bu,hits:m().int().nonnegative(),updatedAt:o()});p({classifications:y(nB)});const aB=p({uri:o(),title:o(),domain:o(),isOurDomain:_(),isCompetitor:_(),citationCount:m().int().nonnegative(),providers:y(ht)}),Rk=p({query:o(),groundingSources:y(aB)});p({sources:y(Rk),latestRunId:o()});const Ok=p({query:o(),competitorDomains:y(o()),competitorCount:m().int().nonnegative(),missRate:m().min(0).max(1),lastSeenInRunId:o()});p({gaps:y(Ok),latestRunId:o()});const Bk=A(["ok","warn","fail","skipped"]);Bk.enum;const gh=A(["global","project"]);gh.enum;const qk=A(["auth","config","providers","integrations","database","schedules","agent"]);qk.enum;const iB=p({id:o(),category:qk,scope:gh,title:o(),status:Bk,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:Ve(o(),Sn()).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:gh,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(iB)});const sB=p({provider:o(),citationState:Va,cited:_(),mentioned:_(),runId:o(),runCreatedAt:o()}),oB=p({queryId:o(),query:o(),providers:y(sB),citedCount:m().int().nonnegative(),mentionedCount:m().int().nonnegative(),totalProviders:m().int().nonnegative()}),rB=p({queryId:o(),query:o(),provider:o(),citingCompetitors:y(o()),runId:o(),runCreatedAt:o()}),lB=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:lB,byQuery:y(oB),competitorGaps:y(rB),status:A(["ready","no-data"]),reason:A(["no-runs-yet","no-queries"]).optional()});const oH=[7,14,30,90],rH=30;Le([O(7),O(14),O(30),O(90)]).describe("Report window in days (7, 14, 30, or 90). Defaults to 30 when omitted.");const cB=A(["prompt","request-param","browser-geo","ignored"]),uB=p({label:o(),city:o(),region:o(),country:o(),otherConfiguredLabels:y(o())}),dB=p({provider:o(),treatment:cB,description:o()}),mB=p({generatedAt:o(),project:p({id:o(),name:o(),displayName:o(),canonicalDomain:o(),country:o(),language:o()}),location:uB.nullable(),providerLocationHandling:y(dB),periodStart:o().nullable(),periodEnd:o().nullable(),periodDays:m().int().positive()}),pB=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"])}))}),hB=p({citationState:A(["cited","not-cited","pending"]),answerMentioned:_().nullable(),model:o().nullable()}),fB=p({queries:y(o()),providers:y(o()),matrix:y(y(hB.nullable())),providerRates:y(p({provider:o(),citedCount:m(),mentionedCount:m(),totalCount:m(),citationRate:m(),mentionRate:m()}))}),gB=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())}))}),yB=p({projectCitationCount:m(),competitors:y(gB)}),bB=p({domain:o(),mentionCount:m(),totalCount:m(),pressureLabel:A(["High","Moderate","Low","None"]),mentionedQueries:y(o()),sharePct:m().nullable()}),jp=p({projectMentionCount:m(),totalAnswerSnapshots:m(),competitors:y(bB)}),vB=jp.extend({scope:A(["non-brand","pooled"]),nonBrand:jp,branded:jp}),xB=p({category:o(),label:o(),count:m(),sharePct:m()}),kB=p({categories:y(xB),topDomains:y(p({domain:o(),count:m(),isCompetitor:_()}))}),wB=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(wB),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())}),jB=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()}))}),AB=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()}))}),CB=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()}))}),NB=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()}))}),_B=p({provider:A(["google","bing"]).nullable(),total:m(),indexed:m(),notIndexed:m(),deindexed:m(),unknown:m(),indexedPct:m()}),zB=p({runId:o(),date:o(),citationRate:m(),citedQueryCount:m(),totalQueryCount:m(),mentionRate:m(),mentionedQueryCount:m(),providerRates:y(p({provider:o(),citationRate:m(),mentionRate:m()}))}),s0=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()}),EB=p({horizon:A(["immediate","short-term","medium-term"]),title:o(),rationale:o()}),ro=p({current:m(),prior:m(),deltaAbs:m(),deltaPct:m().nullable(),direction:A(["up","down","flat"]),window:m().optional()}),DB=p({provider:o(),current:m(),prior:m(),deltaAbs:m(),direction:A(["up","down","flat"])}),TB=p({enoughHistory:_(),headline:o(),citationRate:ro.nullable(),mentionRate:ro.nullable(),citedQueryCount:ro.nullable(),mentionedQueryCount:ro.nullable(),gscClicksDelta:ro.nullable(),aiReferralsDelta:ro.nullable(),comparisonWindowDays:m().int().positive(),providerMovements:y(DB),wins:y(s0),regressions:y(s0)});A(["agency","client"]);const RB=A(["agency","client","both"]),OB=A(["immediate","short-term","medium-term"]),BB=A(["high","medium","low"]);A(["positive","caution","negative","neutral"]);const qB=A(["content","competitors","provider","search-demand","indexing","location","monitoring"]),yh=p({audience:RB,priority:m(),horizon:OB,category:qB,title:o(),action:o(),why:y(o()),evidence:y(o()),successMetric:o(),confidence:BB,targetRef:o().optional()}),MB=p({headline:o(),overview:o(),actionItems:y(yh),confidenceNotes:y(o())}),PB=p({title:o(),detail:o(),severity:A(["positive","caution","negative","neutral"]),evidence:y(o())}),IB=p({priorities:y(yh),diagnostics:y(PB)});function lH(e){return e.horizon==="immediate"?"negative":e.confidence==="high"?"caution":e.confidence==="low"?"neutral":"caution"}function cH(e){switch(e){case"critical":return"Critical";case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}function uH(e){switch(e){case"immediate":return"Immediate";case"short-term":return"Short term";case"medium-term":return"Medium term"}}function dH(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 mH(e){switch(e){case"high":return"High";case"medium":return"Medium";case"low":return"Low"}}p({meta:mB,executiveSummary:pB,citationScorecard:fB,competitorLandscape:yB,mentionLandscape:vB,aiSourceOrigin:kB,gsc:SB.nullable(),ga:jB.nullable(),socialReferrals:AB.nullable(),aiReferrals:CB.nullable(),serverActivity:NB.nullable(),indexingHealth:_B.nullable(),citationsTrend:y(zB),whatsChanged:TB,insights:y(s0),recommendedNextSteps:y(EB),actionPlan:y(yh),clientSummary:MB,agencyDiagnostics:IB,contentOpportunities:y(Tk),contentGaps:y(Ok),groundingSources:y(Rk)});const VB=Le([O(60),O(90)]),LB=A(["earliest","middle","prior","latest"]),lo=p({clicks:m().int().nonnegative(),impressions:m().int().nonnegative()}),Mk=p({name:LB,startDate:o(),endDate:o()}),UB=Mk.extend({totals:lo}),GB=Mk.extend({organicSessions:m().int().nonnegative()}),Ap=p({startDate:o(),endDate:o(),observedDays:m().int().nonnegative()}),Gc=p({verified:m().int().nonnegative(),claimedUnverified:m().int().nonnegative(),unknownAiLike:m().int().nonnegative()}),tv=p({total:m().int().nonnegative(),paid:m().int().nonnegative(),organic:m().int().nonnegative(),unknown:m().int().nonnegative()});p({contractVersion:O("organic-evidence/v1"),periodDays:VB,asOfDate:o().nullable(),coverage:p({gsc:_(),ga4:_(),server:_(),visibility:_()}),sourceCoverage:p({gsc:Ap.nullable(),ga4:Ap.nullable(),server:Ap.nullable(),visibility:p({completedAt:o(),ageDays:m().nonnegative()}).nullable()}),gsc:p({propertyTotals:lo,namedBrand:lo,namedNonBrand:lo,suppressedOrUnreportedResidual:lo,cohorts:y(UB)}).nullable(),ga4:p({organicSessions:m().int().nonnegative(),cohorts:y(GB)}).nullable(),gaAiReferrals:p({paidSessions:m().int().nonnegative(),organicSessions:m().int().nonnegative()}).nullable(),server:p({crawlerHits:Gc,userFetchHits:Gc,referralSessions:tv}).nullable(),visibility:p({runId:o(),completedAt:o(),ageDays:m().nonnegative(),answerPairs:m().int().nonnegative(),mentionedPairs:m().int().nonnegative(),citedPairs:m().int().nonnegative()}).nullable(),measurement:iz,pages:y(p({path:o(),gsc:lo,ga4OrganicSessions:m().int().nonnegative(),server:p({crawlerHits:Gc,userFetchHits:Gc,referralSessions:tv})})),findings:y(p({tone:A(["positive","caution","neutral"]),title:o(),detail:o()})),limitations:y(p({code:o(),detail:o()}))});const $B=A(["claude","codex"]);$B.enum;const HB=A(["claude","codex","all"]);HB.enum;const Pk=p({content:m().int().nonnegative(),sitemap:m().int().nonnegative(),robots:m().int().nonnegative(),asset:m().int().nonnegative(),other:m().int().nonnegative()}),KB=A(["content","sitemap","robots","asset","other"]),bh=A(["cloud-run","wordpress","cloudflare","vercel","generic-log"]);bh.enum;const QB=A(["raw-request-events","aggregate-request-metrics","request-url","status-code","user-agent","remote-ip","referer","cursor-pull"]);QB.enum;const ZB=A(["raw-request","aggregate-bucket"]),FB=ZB.enum,YB=A(["observed","provider-aggregated","inferred"]),XB=YB.enum,JB=p({type:o().nullable(),labels:Ve(o(),o())}),WB=p({sourceType:bh,evidenceKind:O(FB["raw-request"]),confidence:O(XB.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:JB,providerLabels:Ve(o(),o())});p({events:y(WB),rawEntryCount:m().int().nonnegative(),skippedEntryCount:m().int().nonnegative(),nextPageToken:o().optional(),filter:o()});const Ik=A(["connected","paused","error","archived"]),pH=Ik.enum,Vk=A(["oauth","service-account"]);Vk.enum;const eq=A(["verified","claimed_unverified","unknown_ai_like"]),hH=eq.enum,tq=p({id:o().min(1),source:o().min(1),version:o().min(1)}),Lk=p({manifestId:o().min(1),manifest:tq.nullable(),hits:m().int().nonnegative()});p({gcpProjectId:o().min(1),serviceName:o().nullable().optional(),location:o().nullable().optional(),authMode:Vk});p({baseUrl:o().url(),username:o().min(1)});const vh=A(["production","preview"]);vh.enum;p({projectId:o().min(1),teamId:o().min(1),environment:vh});const Uk=p({id:o(),projectId:o(),sourceType:bh,displayName:o(),status:Ik,lastSyncedAt:o().nullable(),lastCursor:o().nullable(),lastError:o().nullable(),skippedThroughAt:o().nullable(),queueBacklogCount:m().int().nonnegative().nullable(),queueBacklogObservedAt:o().nullable(),archivedAt:o().nullable(),config:Ve(o(),Sn()),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:vh.optional(),displayName:o().min(1).optional()});const nq=A(["direct-push","queue-pull"]),Bo=nq.enum,xh=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"),Gk=p({schemaVersion:O(1),workerVersion:o().min(1),expectedBotListVersion:o().min(1),zoneId:o().nullable()}),aq=Gk.extend({deliveryMode:O(Bo["direct-push"]),accountId:o().nullable()}),iq=Gk.extend({deliveryMode:O(Bo["queue-pull"]),accountId:o().min(1),queueId:o().min(1),queueName:xh,retentionSeconds:m().int().min(60).max(1209600)});function $k(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;const a=e;return"deliveryMode"in a?e:{...a,deliveryMode:"direct-push"}}z0($k,qe("deliveryMode",[aq,iq]));const Hk=p({displayName:o().min(1).optional(),zoneId:o().min(1).optional()}),sq=Hk.extend({deliveryMode:O(Bo["direct-push"]),accountId:o().min(1).optional()}),oq=Hk.extend({deliveryMode:O(Bo["queue-pull"]),accountId:o().min(1),queueId:o().min(1),queueName:xh,retentionSeconds:m().int().min(60).max(1209600),apiToken:o().min(1)});z0($k,qe("deliveryMode",[sq,oq]));const Kk=p({sourceId:o().min(1),workerScript:o().min(1),wranglerToml:o().min(1),workerVersion:o().min(1),instructions:o().min(1)}),rq=Kk.extend({deliveryMode:O(Bo["direct-push"]),activationRequired:_().default(!1)}),lq=Kk.extend({deliveryMode:O(Bo["queue-pull"]),activationRequired:_().default(!1),accountId:o().min(1),queueId:o().min(1),queueName:xh,retentionSeconds:m().int().min(60).max(1209600)});qe("deliveryMode",[rq,lq]);const cq=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(cq).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:ca,windowStart:o(),windowEnd:o(),daysRequested:m().int().positive(),daysApplied:m().int().positive()});const uq=p({crawlerHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),crawlerInfraHits:m().int().nonnegative(),crawlerSegments:Pk,aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralLandedHits:m().int().nonnegative(),aiReferralRedirectedHits:m().int().nonnegative(),sampleCount:m().int().nonnegative()});p({sources:y(Uk)});const dq=Uk.extend({totals24h:uq,latestRun:p({runId:o(),status:ca,startedAt:o().nullable(),finishedAt:o().nullable(),error:o().nullable()}).nullable()});p({sources:y(dq)});const mq=A(["crawler","ai-user-fetch","ai-referral"]),kh=mq.enum,Qk=A(["hour","day"]);Qk.enum;const pq=p({bucket:o(),crawlerHits:m().int().nonnegative(),aiUserFetchHits:m().int().nonnegative(),aiReferralHits:m().int().nonnegative(),aiReferralLandedHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),measured:_()}),hq=p({kind:O(kh.crawler),sourceId:o(),tsHour:o(),botId:o(),operator:o(),verificationStatus:o(),verificationManifests:y(Lk).optional(),verificationUnattributedHits:m().int().nonnegative().optional(),pathNormalized:o(),pathClass:KB,status:m().int(),hits:m().int().nonnegative()}),fq=p({kind:O(kh["ai-user-fetch"]),sourceId:o(),tsHour:o(),botId:o(),operator:o(),verificationStatus:o(),verificationManifests:y(Lk).optional(),verificationUnattributedHits:m().int().nonnegative().optional(),pathNormalized:o(),status:m().int(),hits:m().int().nonnegative()}),gq=p({kind:O(kh["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()}),yq=qe("kind",[hq,fq,gq]);p({windowStart:o(),windowEnd:o(),series:p({granularity:Qk,points:y(pq),coverageStart:o().nullable(),trends:p({crawlerContentHits:ls.nullable(),aiUserFetchHits:ls.nullable(),aiReferralLandedHits:ls.nullable()})}),totals:p({crawlerHits:m().int().nonnegative(),crawlerContentHits:m().int().nonnegative(),crawlerInfraHits:m().int().nonnegative(),crawlerSegments:Pk,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(yq)});const Zk=A(["queued","running","completed","partial","failed"]),fH=Zk.enum,Fk=A(["queued","running","completed","failed"]),gH=Fk.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:un.nullable().optional(),idempotencyKey:o().trim().min(1).max(128).optional()}).superRefine((e,a)=>{e.model&&!e.provider&&a.addIssue({code:Je.custom,path:["provider"],message:"provider is required when model is supplied"})});const Yk=p({id:o(),projectId:o(),status:Zk,provider:o(),requestedModel:o().nullable(),resolvedModel:o(),location:un.nullable(),totalQueries:m().int(),completedQueries:m().int(),failedQueries:m().int(),error:o().nullable(),startedAt:o().nullable(),finishedAt:o().nullable(),createdAt:o()}),bq=p({id:o(),position:m().int(),query:o(),status:Fk,requestedModel:o().nullable(),resolvedModel:o(),servedModel:o().nullable(),answerText:o().nullable(),groundingSources:y(Du),citedDomains:y(o()),searchQueries:y(o()),namedCompetitors:y(o()).default([]),citedCompetitorDomains:y(o()).default([]),answerMentioned:_().nullable(),citationState:Va.nullable(),error:o().nullable(),startedAt:o().nullable(),finishedAt:o().nullable(),createdAt:o()});Yk.extend({queries:y(bq)});p({runs:y(Yk)});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 vq=p({id:o(),type:o(),canonicalName:o(),countryCode:o(),name:o(),regionCode:o().nullable()});p({count:m().int().nonnegative(),query:o(),results:y(vq)});const xq=p({id:o(),clientType:o().optional(),name:o().optional(),pixelId:o().optional()});p({pixels:y(xq)});const kq=p({id:o(),name:o().optional()}),wq=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(kq).optional(),archived:_().optional(),version:m().int().nonnegative().optional()});p({eventSettings:y(wq)});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()}),cl=A(["impressions","clicks"]),jq=cl.enum,ul=A(["impression","click"]);ul.enum;const Aq=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()}),Cq=p({id:o(),campaignId:o(),name:o(),description:o().nullable().optional(),status:o(),billingEventType:Le([ul,le()]).optional(),maxBidMicros:m().int().nullable().optional(),contextHints:y(o()).default([]),ads:y(Aq).default([]),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:o().optional()}),Nq=p({id:o(),name:o(),description:o().nullable().optional(),status:o(),startTime:m().int().nullable().optional(),endTime:m().int().nullable().optional(),biddingType:Le([cl,le()]).optional(),dailySpendLimitMicros:m().int().nullable().optional(),lifetimeSpendLimitMicros:m().int().nullable().optional(),conversionEventSettingIds:y(o()).default([]),locationIds:y(o()).optional(),adGroups:y(Cq).default([]),upstreamUpdatedAt:m().int().nullable().optional(),syncedAt:o().optional()});p({campaigns:y(Nq)});const Xk=A(["campaign","ad_group"]);Xk.enum;const _q=p({level:Xk,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(_q),currencyCode:o().nullable().optional()});const Jk=p({from:o().nullable(),to:o().nullable(),inProgressDate:o().nullable()}),Wk=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:Jk,totals:Wk});const e3=A(["unavailable","partial","complete"]);e3.enum;const t3=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"]);t3.enum;const n3=A(["unavailable","reported"]);n3.enum;const zq={storedSnapshot:"stored_ads_snapshot"},a3=A(["unavailable","partial_snapshot","metrics_unavailable","observed_activity","no_observed_activity"]);a3.enum;const Eq=p({id:o(),name:o(),status:o(),reviewStatus:o().nullable()}),Dq=p({id:o(),name:o(),status:o(),billingEventType:Le([ul,le()]),maxBidMicros:m().int().nullable(),contextHints:y(o()),ads:y(Eq)}),Tq=p({id:o(),name:o(),status:o(),biddingType:Le([cl,le()]),dailySpendLimitMicros:m().int().nullable(),lifetimeSpendLimitMicros:m().int().nullable(),conversionEventSettingIds:y(o()),adGroups:y(Dq)});p({snapshot:p({status:e3,issue:Le([t3,le()]),lastSyncedAt:o().nullable(),campaignCount:m().int().nonnegative(),adGroupCount:m().int().nonnegative(),adCount:m().int().nonnegative(),sourceSync:p({runId:o(),status:ca}).nullable()}),historicalCampaignRollups:p({status:n3,window:Jk,totals:Wk.nullable()}),storedConfiguration:p({basis:O(zq.storedSnapshot),connection:p({status:o().nullable(),reviewStatus:o().nullable(),integrityReviewStatus:o().nullable(),integrityDecision:o().nullable(),conversionTrackingConfigured:_()}).nullable(),campaigns:y(Tq)}),assessment:p({state:a3})});const $a=o().min(8).max(128).regex(/^[\w.:-]+$/,"operationKey may contain letters, numbers, dot, underscore, colon, and hyphen"),bt=o().min(1).max(200),fs=o().min(3).max(1e3).refine(e=>e.trim().length>0),So=m().int().min(946684800).max(4102444800),jo=m().int().positive().max(Number.MAX_SAFE_INTEGER),wh=o().regex(/^[a-f0-9]{64}$/),i3=y(bt).max(100).refine(e=>new Set(e).size===e.length,"conversionEventSettingIds must be unique"),s3=o().url().refine(e=>new URL(e).protocol==="https:",{message:"URL must use https"}),o3=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"]);o3.enum;const r3=A(["pending","reconciling","succeeded","failed","unknown"]),fo=r3.enum,l3=A(["known_entity","create_fingerprint","manual_only"]);l3.enum;const c3=A([fo.pending,fo.unknown,fo.reconciling]);c3.enum;const u3=A(["active","paused","archived"]);u3.enum;const d3=A(["file","campaign","ad_group","ad"]);d3.enum;const m3=A(["campaign","ad_group","ad"]);m3.enum;const Sh=p({id:bt,expectedUpdatedAt:m().int().nonnegative()}).strict(),Rq=Sh,uu=1e3;function Oq(e){return 1+e.campaign.adGroups.reduce((a,s)=>a+1+s.ads.length,0)}const Bq=Sh.extend({ads:y(Rq).min(1).max(uu-1)}).strict(),qq=Sh.extend({adGroups:y(Bq).min(1).max(uu-1)}).strict();function Mq(e,a){return e<a?-1:e>a?1:0}function nv(e,a,s){for(let r=1;r<e.length;r+=1)if(Mq(e[r-1].id,e[r].id)>=0){s.addIssue({code:"custom",path:a,message:"Activation manifest entities must be uniquely sorted by id"});return}}const p3=p({campaign:qq}).strict().superRefine((e,a)=>{Oq(e)>uu&&a.addIssue({code:"custom",path:["campaign"],message:`Activation manifests may contain at most ${uu} entities`}),nv(e.campaign.adGroups,["campaign","adGroups"],a);const r=new Set;for(let u=0;u<e.campaign.adGroups.length;u+=1){const f=e.campaign.adGroups[u];nv(f.ads,["campaign","adGroups",u,"ads"],a);for(let g=0;g<f.ads.length;g+=1){const b=f.ads[g];r.has(b.id)&&a.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)}}}),h3=wh,Pq=A(["approved","executing","consumed","revoked","expired","unknown"]),Ia=Pq.enum,Iq=A(["pending","executing","active","failed","rollback_executing","rolled_back","rollback_failed","unknown"]),Ei=Iq.enum,Vq=p({name:fs.optional(),description:o().max(4e3).nullable().optional(),status:u3.optional(),startTime:So.nullable().optional(),endTime:So.nullable().optional(),lifetimeSpendLimitMicros:jo.min(1e6).optional(),locationIds:y(bt).max(100).optional(),biddingType:cl.optional(),conversionEventSettingIds:i3.optional(),campaignId:bt.optional(),contextHints:y(o().min(1).max(1e3)).max(100).optional(),maxBidMicros:jo.max(1e8).optional(),billingEventType:ul.optional(),adGroupId:bt.optional(),creativeFingerprint:wh.optional()}).strict();p({operationKey:$a,imageUrl:s3});p({operationKey:$a,name:fs,description:o().max(4e3).optional(),startTime:So.optional(),endTime:So.optional(),lifetimeSpendLimitMicros:jo.min(1e6),locationIds:y(bt).min(1).max(100),biddingType:cl.optional(),conversionEventSettingIds:i3.optional()}).superRefine((e,a)=>{e.startTime!==void 0&&e.endTime!==void 0&&e.endTime<=e.startTime&&a.addIssue({code:"custom",path:["endTime"],message:"endTime must be after startTime"}),e.biddingType===jq.clicks&&(e.conversionEventSettingIds===void 0||e.conversionEventSettingIds.length===0)&&a.addIssue({code:"custom",path:["conversionEventSettingIds"],message:"conversionEventSettingIds must be non-empty when biddingType is clicks"})});p({operationKey:$a,campaignId:bt,name:fs,description:o().max(4e3).optional(),contextHints:y(o().min(1).max(1e3)).min(1).max(100),maxBidMicros:jo.max(1e8),billingEventType:ul.optional()});const f3=p({title:o().min(3).max(50),body:o().min(1).max(100),targetUrl:s3,fileId:bt});p({operationKey:$a,adGroupId:bt,name:fs,creative:f3});function jh(e){return Object.keys(e).some(a=>a!=="operationKey"&&a!=="expectedUpdatedAt")}p({operationKey:$a,expectedUpdatedAt:m().int().nonnegative(),name:fs.optional(),description:o().max(4e3).nullable().optional(),startTime:So.nullable().optional(),endTime:So.nullable().optional(),lifetimeSpendLimitMicros:jo.min(1e6).optional(),locationIds:y(bt).min(1).max(100).optional()}).refine(jh,{message:"At least one campaign field must be updated"});p({operationKey:$a,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:jo.max(1e8).optional()}).refine(jh,{message:"At least one ad group field must be updated"});p({operationKey:$a,expectedUpdatedAt:m().int().nonnegative(),name:fs.optional(),creative:f3.optional()}).refine(jh,{message:"At least one ad field must be updated"});p({operationKey:$a});const Pu=p({id:o(),adAccountId:o().nullable(),operationKey:o(),kind:o3,state:r3,entityType:Le([d3,le()]),entityId:o().nullable(),upstreamUpdatedAt:m().int().nullable(),errorCode:o().nullable(),errorMessage:o().nullable(),reconcileStrategy:Le([l3,le()]),reconcileParentId:bt.nullable(),reconcileFingerprint:wh.nullable(),reconcileFields:Vq.nullable(),reconcileAttempts:m().int().nonnegative(),lastReconciledAt:o().nullable(),createdAt:o(),updatedAt:o()});p({operation:Pu,replayed:_()});const pt=Xx({offset:!0}),qo={id:bt,projectId:bt,adAccountId:bt,manifestHash:h3,manifest:p3,executorApiKeyId:bt,approverApiKeyId:bt,expiresAt:pt,approvedAt:pt,createdAt:pt,updatedAt:pt,revocationRequestedAt:pt.nullable()},Lq=p({...qo,state:O(Ia.approved),operationId:le(),executionStartedAt:le(),consumedAt:le(),revokedAt:le(),expiredAt:le()}).strict(),Uq=p({...qo,state:O(Ia.executing),operationId:bt,executionStartedAt:pt,consumedAt:le(),revokedAt:le(),expiredAt:le()}).strict(),Gq=p({...qo,state:O(Ia.consumed),operationId:bt,executionStartedAt:pt,consumedAt:pt,revokedAt:le(),expiredAt:le()}).strict(),$q=p({...qo,state:O(Ia.revoked),operationId:le(),executionStartedAt:le(),consumedAt:le(),revokedAt:pt,expiredAt:le()}).strict(),Hq=p({...qo,state:O(Ia.expired),operationId:le(),executionStartedAt:le(),consumedAt:le(),revokedAt:le(),expiredAt:pt}).strict(),Kq=p({...qo,state:O(Ia.unknown),operationId:bt,executionStartedAt:pt,consumedAt:le(),revokedAt:le(),expiredAt:le()}).strict(),g3=qe("state",[Lq,Uq,Gq,$q,Hq,Kq]).superRefine((e,a)=>{e.executorApiKeyId===e.approverApiKeyId&&a.addIssue({code:"custom",path:["executorApiKeyId"],message:"The activation executor must use a different API key from the approver"}),e.revocationRequestedAt!==null&&e.state!==Ia.executing&&e.state!==Ia.unknown&&e.state!==Ia.consumed&&a.addIssue({code:"custom",path:["revocationRequestedAt"],message:"Only an executing, cancelled, or unresolved activation can carry a cancellation request"})}),Di={id:bt,operationId:bt,ordinal:m().int().nonnegative(),entityType:m3,entityId:bt,expectedUpdatedAt:m().int().nonnegative(),createdAt:pt,updatedAt:pt},dl={errorCode:le(),errorMessage:le()},Ah={errorCode:o().min(1).max(100),errorMessage:o().min(1).max(500),remediation:o().min(1).max(500)},Qq=p({...Di,...dl,state:O(Ei.pending),providerUpdatedAt:le(),remediation:le(),startedAt:le(),finishedAt:le()}).strict(),Zq=p({...Di,...dl,state:O(Ei.executing),providerUpdatedAt:le(),remediation:le(),startedAt:pt,finishedAt:le()}).strict(),Fq=p({...Di,...dl,state:O(Ei.active),providerUpdatedAt:m().int().nonnegative(),remediation:le(),startedAt:pt,finishedAt:pt}).strict(),Yq=p({...Di,...Ah,state:O(Ei.failed),providerUpdatedAt:Le([m().int().nonnegative(),le()]),startedAt:pt,finishedAt:pt}).strict(),Xq=p({...Di,...dl,state:O(Ei.rollback_executing),providerUpdatedAt:m().int().nonnegative(),remediation:o().min(1).max(500),startedAt:pt,finishedAt:le()}).strict(),Jq=p({...Di,...dl,state:O(Ei.rolled_back),providerUpdatedAt:m().int().nonnegative(),remediation:o().min(1).max(500),startedAt:pt,finishedAt:pt}).strict(),Wq=p({...Di,...Ah,state:O(Ei.rollback_failed),providerUpdatedAt:m().int().nonnegative(),startedAt:pt,finishedAt:pt}).strict(),eM=p({...Di,...Ah,state:O(Ei.unknown),providerUpdatedAt:Le([m().int().nonnegative(),le()]),startedAt:pt,finishedAt:pt}).strict(),tM=qe("state",[Qq,Zq,Fq,Yq,Xq,Jq,Wq,eM]),o0={exact:"exact",refreshSemanticallyUnchanged:"refresh_semantically_unchanged"},nM=A([o0.exact,o0.refreshSemanticallyUnchanged]);p({manifest:p3,executorApiKeyId:bt,expiresAt:pt,versionPolicy:nM.default(o0.exact)}).strict();p({grant:g3}).strict();p({}).strict();p({operationKey:$a,grantId:bt,manifestHash:h3}).strict();p({grant:g3,operation:Pu,steps:y(tM)}).strict();const aM=[fo.pending,fo.unknown,fo.reconciling];function iM(e){if(e===void 0||e==="")return aM;if(Array.isArray(e)){const a=[];for(const s of e)typeof s=="string"?a.push(...s.split(",")):a.push(s);return a}return typeof e=="string"?e.split(",").filter(Boolean):e}p({state:z0(iM,y(c3).min(1).max(3).refine(e=>new Set(e).size===e.length,"state values must be unique")),limit:i2().int().min(1).max(200).default(100),cursor:o().min(1).max(1e3).optional()});p({operations:y(Pu),count:m().int().nonnegative(),nextCursor:o().nullable()});p({}).strict();p({operation:Pu,resolved:_()});p({campaignId:o().min(1).max(200).optional(),lookbackDays:i2().int().min(1).max(30).default(7)});const y3=A(["campaign","ad_group","ad"]);y3.enum;const b3=A(["both","live-only","stored-only"]);b3.enum;const sM=O("live-provider-read"),oM=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()}),av=p({impressions:m().int(),clicks:m().int(),spendMicros:m().int(),conversions:m().int()}),rM=p({date:o(),live:av.nullable(),stored:av.nullable(),drifted:_()}),lM=p({field:o(),live:o().nullable(),stored:o().nullable()}),cM=p({name:o().nullable(),status:o(),reviewStatus:o().nullable(),mode:o().nullable(),updatedAt:m().nullable()}),uM=p({name:o(),status:o(),reviewStatus:o().nullable(),upstreamUpdatedAt:m().nullable(),syncedAt:o()}),dM=p({entityType:y3,id:o(),parentId:o().nullable(),presence:b3,live:cM.nullable(),stored:uM.nullable(),fieldDeltas:y(lM),liveMetrics:y(oM).nullable(),metricDeltas:y(rM).nullable(),drifted:_()}),mM=p({surface:o(),entityId:o().nullable(),upstreamStatus:m().int().nullable()});p({basis:sM,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(dM),drift:p({entitiesCompared:m().int().nonnegative(),driftedEntities:m().int().nonnegative(),statusDrifted:m().int().nonnegative(),metricsDrifted:m().int().nonnegative()}),errors:y(mM)});const v3=A(["admin","viewer"]),pM=/^[a-z\d][\w.-]{0,63}$/i,hM=o().regex(pM,"A name may use letters, digits, dots, dashes and underscores, and must start with a letter or digit."),iv=12,fM=o().min(iv,`A password must be at least ${iv} characters.`),x3=p({id:o(),name:o(),role:v3,createdAt:o(),lastLoginAt:o().nullable()});p({users:y(x3)});p({name:hM,password:fM,role:v3});p({name:o().min(1),password:o().min(1)});p({authRequired:_(),user:x3.pick({name:!0,role:!0}).nullable()});const Xe=1,Cp=A(["system","project","queries","competitors","run"]),Np=A(["0","1","2-3","4-5","6-10","11+"]);function ya(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 sv=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","rate_limited","provider_auth","network","unknown"]),gM=A(["wizard","platform","site_health"]),$c=p({eventId:o().uuid(),flowVersion:O(Xe),onboardingSessionId:o().uuid(),surface:gM.optional()});qe("event",[$c.extend({event:O("onboarding.started"),step:Cp,resumed:_()}).strict(),$c.extend({event:O("onboarding.step_completed"),step:Cp,method:A(["existing","inline","manual","generated","skipped","automatic"]),countBucket:Np.optional()}).strict(),$c.extend({event:O("onboarding.blocked"),step:Cp,action:A(["continue","configure_provider","generate_queries","save","launch_run","retry_run"]),reasonCode:sv}).strict(),$c.extend({event:O("run.requested"),origin:O("dashboard_setup"),result:A(["queued","rejected"]),kind:A(["answer_visibility","site_health"]).optional(),providerCountBucket:Np,queryCountBucket:Np,reasonCode:sv.optional()}).strict()]);p({accepted:_()});const yM=4;function bM(e){return e.length<yM}var vM=(e=>(e.Clicks="clicks",e.Impressions="impressions",e.CTR="ctr",e.Position="position",e))(vM||{});const yH={clicks:"Clicks",impressions:"Impressions",ctr:"CTR",position:"Position"},bH={clicks:"Clicks",impressions:"Impr",ctr:"CTR",position:"Pos"},xM=ih;function kM(e){const a=[];if(e.message&&a.push(e.message),e.providers)for(const[s,r]of Object.entries(e.providers)){const u=`[${s}] ${r.message}`;r.raw!==void 0?a.push(`${u}
53
53
 
54
54
  ${JSON.stringify(r.raw,null,2)}`):a.push(u)}return a.length>0?a.join(`
55
55
 
@@ -80,4 +80,4 @@ spec:
80
80
  `);Ri(Oe),an(!0)}}catch(F){Ka(F instanceof Error?F.message:"Failed to generate queries"),B({flowVersion:Xe,onboardingSessionId:j,event:"onboarding.blocked",step:"queries",action:"generate_queries",reasonCode:Qr(F,"unknown")},"onboarding.blocked:queries:generate")}finally{hl(!1)}}},Dt=async()=>{if(!pe)return;const F=Za;if(F.length!==0){Mi(!0),yl(null);try{await R6(pe,F),Zu(!0),await r(),B({flowVersion:Xe,onboardingSessionId:j,event:"onboarding.step_completed",step:"competitors",method:"manual",countBucket:ya(F.length)},"onboarding.step_completed:competitors"),Ce(4)}catch(Oe){yl(Oe instanceof Error?Oe.message:"Failed to save competitors"),B({flowVersion:Xe,onboardingSessionId:j,event:"onboarding.blocked",step:"competitors",action:"save",reasonCode:"unknown"},"onboarding.blocked:competitors:save")}finally{Mi(!1)}}},xl=async()=>{const F=Vi.trim();if(F){Jn(!0),Kt(null);try{await P6("gemini",{apiKey:F}),Xt({title:"Gemini configured",detail:"Provider is ready — continuing setup.",tone:"positive",dedupeKey:"setup:gemini:configured",dedupeMode:"drop"}),Uo(""),await r(),Oi(b.providerStatuses.find(Oe=>Oe.name.toLowerCase()==="gemini")?.name??"gemini"),B({flowVersion:Xe,onboardingSessionId:j,event:"onboarding.step_completed",step:"system",method:"inline"},"onboarding.step_completed:system")}catch(Oe){Kt(Oe instanceof Error?Oe.message:"Failed to save Gemini key"),B({flowVersion:Xe,onboardingSessionId:j,event:"onboarding.blocked",step:"system",action:"configure_provider",reasonCode:"provider_save_failed"},"onboarding.blocked:system:provider_save_failed")}finally{Jn(!1)}}},Go=async()=>{if(!pe||da){Lo(da??"Complete setup before launching the first sweep.");const F=Mn??(pe?Li===0?"no_queries":"run_rejected":"unknown");B({flowVersion:Xe,onboardingSessionId:j,event:"run.requested",origin:"dashboard_setup",result:"rejected",providerCountBucket:ya(Cn.length),queryCountBucket:ya(Li),reasonCode:F});return}ws(!0),Lo(null);try{const F=await vl.mutateAsync({projectName:pe,projectLabel:ge||V||pe,sourceAction:"setup-launch"});bl(F.id),Fu(!0),aw(pe,F.id),Pi.current=F.id,B({flowVersion:Xe,onboardingSessionId:j,event:"run.requested",origin:"dashboard_setup",result:"queued",providerCountBucket:ya(Cn.length),queryCountBucket:ya(Li)}),await r()}catch(F){Lo(F instanceof Error?F.message:"Failed to queue the visibility sweep. Retry when the instance is ready."),B({flowVersion:Xe,onboardingSessionId:j,event:"run.requested",origin:"dashboard_setup",result:"rejected",providerCountBucket:ya(Cn.length),queryCountBucket:ya(Li),reasonCode:Qr(F,"run_rejected")})}finally{ws(!1)}},en=()=>Ce(F=>Math.max(0,F-1)),ma=(F,Oe,ta)=>{B({flowVersion:Xe,onboardingSessionId:j,event:"onboarding.step_completed",step:F,method:"existing",...ta===void 0?{}:{countBucket:ya(ta)}},`onboarding.step_completed:${F}`),Ce(Oe)},Yu=()=>{B({flowVersion:Xe,onboardingSessionId:j,event:"onboarding.step_completed",step:"queries",method:"skipped",countBucket:"0"},"onboarding.step_completed:queries"),Ce(3)},kl=()=>{B({flowVersion:Xe,onboardingSessionId:j,event:"onboarding.step_completed",step:"competitors",method:"skipped",countBucket:"0"},"onboarding.step_completed:competitors"),Ce(4)},wl=(()=>{switch(Be){case 0:return c.jsxs(On,{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:Vi,onChange:Oe=>Uo(Oe.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:Ss}),c.jsx(we,{type:"button",size:"sm",disabled:Ss||!Vi.trim(),onClick:$t(xl),children:Ss?"Saving...":"Save"})]}),Et&&c.jsxs("div",{role:"alert",className:"space-y-1 text-xs text-negative",children:[c.jsx("p",{children:Et}),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(nt,{to:"/settings",className:"text-link hover:underline",children:"Settings"}),"."]})]})]}),c.jsx(wn,{tone:F.state==="ready"?"positive":"caution",title:F.id==="api"?Ao(k.apiStatus):F.id==="worker"?Ao(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(we,{type:"button",disabled:!S.launchState.enabled,title:S.launchState.blockedReason,onClick:()=>{B({flowVersion:Xe,onboardingSessionId:j,event:"onboarding.step_completed",step:"system",method:"automatic"},"onboarding.step_completed:system"),Ce(je)},children:"Continue"})]})]});case 1:return c.jsxs(On,{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"})]}),pe?c.jsx(wn,{tone:"positive",children:"Created"}):null]}),pe?c.jsxs("div",{className:"compact-stack",children:[c.jsxs("p",{className:"text-neutral",children:["Project ",c.jsx("span",{className:"text-heading font-medium",children:pe})," created successfully."]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(we,{type:"button",variant:"outline",onClick:en,children:"Back"}),c.jsx(we,{type:"button",onClick:()=>ma("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)}),dn&&dn!==V?c.jsxs("p",{className:"supporting-copy",children:["Slug: ",dn]}):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:ge,onChange:F=>Ee(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:re,onChange:F=>We(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:K,onChange:F=>me(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=>ue(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:oe,onChange:F=>H(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(nt,{to:"/backlinks",className:"text-positive-400 hover:text-positive underline underline-offset-2",children:"Manage backlinks"})]})]})]}),it?c.jsx("p",{className:"text-negative-400 text-sm",children:it}):null,c.jsxs("div",{className:"setup-nav",children:[c.jsx(we,{type:"button",variant:"outline",onClick:en,children:"Back"}),c.jsx(we,{type:"button",disabled:!dn||!re||Pt,onClick:$t(Fa),children:Pt?"Creating...":"Create project"})]})]})]});case 2:return c.jsxs(On,{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(wn,{tone:"negative",children:"Load failed"}):Mo?c.jsxs(wn,{tone:"positive",children:[mn.length," saved"]}):c.jsxs(wn,{tone:"neutral",children:[mn.length," quer",mn.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(we,{type:"button",variant:"outline",onClick:en,children:"Back"}),c.jsx(we,{type:"button",onClick:()=>{X.refetch()},children:"Retry loading queries"})]})]}):Mo?c.jsxs("div",{className:"compact-stack",children:[c.jsx("ul",{className:"detail-list",children:mn.map(F=>c.jsx("li",{children:F},F))}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(we,{type:"button",variant:"outline",onClick:en,children:"Back"}),c.jsx(we,{type:"button",onClick:()=>ma("queries",3,mn.length),children:"Continue"})]})]}):c.jsxs("div",{className:"compact-stack",children:[Cn.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:va,onChange:F=>Oi(F.target.value),children:Cn.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=>Qu(Number(F.target.value)),children:[3,5,10,15,20].map(F=>c.jsx("option",{value:F,children:F},F))})]}),c.jsx(we,{type:"button",variant:"outline",disabled:Io||!va,onClick:$t(Ya),children:Io?"Analyzing site...":"Generate"})]}),fl?c.jsx("p",{className:"text-negative-400 text-sm",children:fl}):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:Ha,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(we,{type:"button",variant:"outline",onClick:en,children:"Back"}),c.jsx(we,{type:"button",variant:"ghost",onClick:Yu,children:"Skip for now"}),c.jsx(we,{type:"button",disabled:mn.length===0||ks,onClick:$t(Ui),children:ks?"Saving...":`Save ${mn.length} quer${mn.length!==1?"ies":"y"}`})]})]})]});case 3:return c.jsxs(On,{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"})]}),Wt?c.jsx(wn,{tone:"positive",children:"Saved"}):null]}),c.jsx("p",{className:"supporting-copy",children:"Domains that compete for the same queries. One per line."}),Wt?c.jsxs("div",{className:"compact-stack",children:[c.jsx("ul",{className:"detail-list",children:Za.map(F=>c.jsx("li",{children:F},F))}),c.jsxs("div",{className:"setup-nav",children:[c.jsx(we,{type:"button",variant:"outline",onClick:en,children:"Back"}),c.jsx(we,{type:"button",onClick:()=>ma("competitors",4,Za.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:Jt,onChange:F=>ua(F.target.value)})]}),gl?c.jsx("p",{className:"text-negative-400 text-sm",children:gl}):null,c.jsxs("div",{className:"setup-nav",children:[c.jsx(we,{type:"button",variant:"outline",onClick:en,children:"Back"}),c.jsxs("div",{className:"flex gap-2",children:[c.jsx(we,{type:"button",variant:"outline",onClick:kl,children:"Skip"}),c.jsx(we,{type:"button",disabled:Za.length===0||qi,onClick:$t(Dt),children:qi?"Saving...":`Save ${Za.length} competitor${Za.length!==1?"s":""}`})]})]})]})]});case 4:{const F=Xn.data,Oe=F?.status??(Qa===M?.id?M.status:void 0),ta=Oe==="completed"||Oe==="partial"||Oe==="failed"||Oe==="cancelled",tn=F?.snapshots??[],pn=tn.filter(Tt=>Tt.citationState==="cited").length,Sl=tn.filter(Tt=>Tt.answerMentioned===!0).length,jl=new Set(tn.map(Tt=>Tt.query).filter(Tt=>!!Tt)).size,js=Oe?Bv(Oe,tn.length):!1,$o=J&&!qn,As=Yn??(F?.error?xM(F.error):Oe==="cancelled"?"The sweep was cancelled before it produced a baseline.":(Oe==="completed"||Oe==="partial")&&tn.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 Gi=null;return $o||js?Gi=c.jsx(wn,{tone:"positive",children:"Complete"}):Yn&&!qn?Gi=c.jsx(wn,{tone:"negative",children:"Failed"}):ta?Gi=c.jsx(wn,{tone:"negative",children:Oe==="cancelled"?"Cancelled":"Failed"}):qn&&(Gi=c.jsx(wn,{tone:"caution",children:"Running"})),c.jsxs(On,{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"})]}),Gi]}),$o?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:pe})," already has a successful answer-visibility baseline."]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(we,{type:"button",onClick:At,children:g?"Finish and open project":"Open project dashboard →"})]})]}):qn?ta?js?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:pe}),":"]}),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:[Sl,c.jsxs("span",{className:"text-faint text-lg",children:[" / ",jl]})]}),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:[pn,c.jsxs("span",{className:"text-faint text-lg",children:[" / ",jl]})]}),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:tn.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(we,{type:"button",onClick:At,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:As}),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(we,{type:"button",variant:"outline",asChild:!0,children:c.jsx(nt,{to:"/settings",children:"Configure providers"})}),c.jsx(we,{type:"button",disabled:Ii||!!da,onClick:$t(Go),children:Ii?"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:Oe??"queued"})]})}),Xn.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:Xn.error instanceof Error?Xn.error.message:"Could not refresh the sweep status."}),c.jsx(we,{type:"button",variant:"outline",size:"sm",className:"mt-2",onClick:()=>{Xn.refetch()},children:"Retry status check"})]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(we,{type:"button",variant:"outline",onClick:At,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:pe}),", or finish and run it later from the project. A sweep calls the answer engines, so it costs provider usage."]}),(da||Yn)&&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:Yn??da}),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(we,{type:"button",variant:"outline",onClick:en,children:"Back"}),c.jsx(we,{type:"button",variant:"ghost",onClick:At,children:"Finish without running"}),c.jsx(we,{type:"button",disabled:Ii||!!da,title:da,onClick:$t(Go),children:Ii?"Launching...":Yn?"Retry visibility sweep":"Launch visibility sweep"})]})]})]})}default:return null}})();return c.jsxs("div",{className:"page-container",children:[g?c.jsx(Co,{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(we,{type:"button",variant:"outline",onClick:At,children:"Skip AI Visibility"})}):null]}),c.jsx(oU,{current:Be,labels:iU}),c.jsx("section",{className:"setup-wizard",children:wl})]})}const uU=E.lazy(async()=>({default:(await Ga(()=>import("./SiteHealthSection-xlUYOOe2.js").then(a=>a.d),__vite__mapDeps([0,1,2,3,4]),import.meta.url)).SiteHealthSection})),dU=1800,mU="https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent",pU="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 hU(e,a){return e==="legacy"?"legacy":e==="platform"?"platform":a.state==="success"?a.projectCount===0?"platform":"legacy":a.state==="error"?"retry":"loading"}function fU(e,a){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=a?r.of(a.toLowerCase()):void 0;return`${u??(e||"Country")} · ${f??(a||"Language")}`}catch{return`${e||"Country"} · ${a||"Language"}`}}function gU(e){const a=e.replace(/^\[|\]$/g,"");return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(a)||a.includes(":")}function yU(e){const a=e.trim();if(!a)return null;const s=/^[a-z][a-z\d+.-]*:\/\//i.test(a)?a:`https://${a}`;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"||gU(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 bU(e,a=dU){let s;const r=new Promise(f=>{s=setTimeout(()=>f({state:"timed-out"}),a)}),u=await Promise.race([e.then(f=>({state:"queued",run:f})),r]);return s&&clearTimeout(s),u}function vU(e,a){e.catch(()=>{Xt({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:${a}`})})}function lw(e){const a=E.useRef(ew()).current,s=E.useRef(new Set),r=E.useCallback((u,f)=>{if(f){if(s.current.has(f))return;s.current.add(f)}bx({...u,surface:e,eventId:tw()})},[e]);return{onboardingSessionId:a,emit:r}}function Mv(e,a){return e instanceof ln&&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:a}function xU(){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(go,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading projects…"]})]})}function kU({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(we,{type:"button",className:"mt-4",variant:"secondary",onClick:e,children:"Retry project check"})]})]})}function wU({projectName:e,initialRunId:a}){return c.jsx(Ih,{title:"Site Health setup",children:c.jsx(SU,{projectName:e,initialRunId:a})})}function SU({projectName:e,initialRunId:a}){const s=ms(),r=Ht({...gs({client:ae}),enabled:!!e,retry:!1,refetchOnMount:"always"}),{onboardingSessionId:u,emit:f}=lw("site_health");E.useEffect(()=>{e&&f({flowVersion:Xe,onboardingSessionId:u,event:"onboarding.started",step:"run",resumed:!!a},"onboarding.started")},[f,a,u,e]),E.useEffect(()=>{!e||!a||iw(e)?.runId!==a&&aw(e,a)},[a,e]);const b=Ht({..._h({client:ae,path:{id:a??""}}),enabled:!!a,refetchInterval:({state:j})=>{const D=j.data?.status;return D==="completed"||D==="partial"||D==="failed"||D==="cancelled"?!1:2e3},refetchIntervalInBackground:!0}).data?.status;if(E.useEffect(()=>{if(!e||!a||!b)return;if(b==="completed"||b==="partial"){f({flowVersion:Xe,onboardingSessionId:u,event:"onboarding.step_completed",step:"run",method:"automatic"},"onboarding.step_completed:run"),hu(a);return}if(b!=="failed"&&b!=="cancelled")return;const j=b==="cancelled"?"run_cancelled":"run_failed";f({flowVersion:Xe,onboardingSessionId:u,event:"onboarding.blocked",step:"run",action:"retry_run",reasonCode:j},`onboarding.blocked:run:${j}`),hu(a)},[f,a,u,e,b]),!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(we,{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(Co,{current:"site"}),c.jsxs("div",{className:"mt-8 flex items-center gap-3 text-sm text-secondary",role:"status",children:[c.jsx(go,{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(we,{type:"button",className:"mt-4",variant:"secondary",onClick:()=>{r.refetch()},children:"Retry project check"})]})]});const x=r.data.find(j=>j.name===e);if(!x)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(we,{type:"button",variant:"secondary",onClick:()=>{s({to:"/projects"})},children:"View projects"})]});const k=()=>{s({to:"/setup",search:{onboarding:"site-health",setupProject:x.name},replace:!0})},S=()=>{s({to:"/setup",search:{experience:"legacy",onboarding:"site-health",setupProject:x.name},replace:!0})},C=()=>{f({flowVersion:Xe,onboardingSessionId:u,event:"onboarding.step_completed",step:"run",method:"skipped"},"onboarding.step_completed:run"),s({to:"/projects/$projectName",params:{projectName:x.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(E.Suspense,{fallback:c.jsxs("div",{className:"space-y-5",children:[c.jsx(Co,{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(go,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health…"]})]}),children:c.jsx(uU,{projectName:x.name,projectId:x.id,initialRunId:a,onReleaseInitialRun:k,showOnboardingActions:!0,onContinueOnboarding:S,onSkipOnboarding:C})})]})}function jU(){const e=Iv({from:"/setup"}),a=e.onboarding==="site-health"&&!e.setupProject,s=e.onboarding==="site-health"&&e.experience!=="legacy",r=m6(),u=e.experience==="legacy"?"legacy":r,[f,g]=E.useState(!1),b=Ht({...gs({client:ae}),enabled:u==="auto",retry:!1,refetchOnMount:"always"}),x=u==="auto"&&b.isSuccess&&b.isFetchedAfterMount&&b.data.length===0;E.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":hU(u,k);return a||s?c.jsx(wU,{projectName:e.setupProject,initialRunId:e.siteHealthRunId}):S==="legacy"?c.jsx(rU,{visibilityProjectName:e.setupProject,siteHealthOnboarding:e.onboarding==="site-health"}):S==="loading"?c.jsx(xU,{}):S==="retry"?c.jsx(kU,{onRetry:()=>{b.refetch()}}):c.jsx(AU,{onActivationStarted:()=>g(!0)})}function AU({onActivationStarted:e}){return c.jsx(Ih,{title:"Site Health setup",children:c.jsx(CU,{onActivationStarted:e})})}function CU({onActivationStarted:e}){const a=ms(),s=Ua(),r=aU(),[u,f]=E.useState(""),[g,b]=E.useState(""),[x,k]=E.useState(""),[S,C]=E.useState("US"),[j,D]=E.useState("en"),[B,q]=E.useState(!1),[U,G]=E.useState("idle"),[ee,X]=E.useState(null),[te,se]=E.useState(null),[ve,M]=E.useState(!1),[J,_e]=E.useState(null),[ye,je]=E.useState(!1),Be=E.useRef(null),{onboardingSessionId:Ce,emit:Pe}=lw("platform");E.useEffect(()=>{Pe({flowVersion:Xe,onboardingSessionId:Ce,event:"onboarding.started",step:"project",resumed:!1},"onboarding.started")},[Pe,Ce]);const fe=yU(u),V=g||fe?.projectName||"",ne=x||fe?.displayName||"",ge=U==="creating"||U==="dispatching",Ee=te??J,re=fU(S,j);E.useEffect(()=>{Ee&&Be.current?.focus()},[Ee]);const We=(H,pe)=>a({to:"/setup",search:{...pe?{siteHealthRunId:pe}:{},onboarding:"site-health",setupProject:H.name},replace:!0}),K=async H=>{G("dispatching"),_e(null);try{const pe=r.mutateAsync({projectName:H.name,projectId:H.id,projectLabel:H.displayName||H.name,suppressErrorToast:!0,body:{checkDeadLinks:!0}}),be=await bU(pe);if(be.state==="queued"){Pe({flowVersion:Xe,onboardingSessionId:Ce,event:"run.requested",origin:"dashboard_setup",result:"queued",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0"}),await We(H,be.run.runId);return}pe.then(()=>{Pe({flowVersion:Xe,onboardingSessionId:Ce,event:"run.requested",origin:"dashboard_setup",result:"queued",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0"})},it=>{Pe({flowVersion:Xe,onboardingSessionId:Ce,event:"run.requested",origin:"dashboard_setup",result:"rejected",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0",reasonCode:Qr(it,"run_rejected")})}),vU(pe,H.id),await We(H)}catch(pe){G("recovery"),_e(Mv(pe,"The project was created, but the Site Health scan could not be started."));const be=Qr(pe,"run_rejected");Pe({flowVersion:Xe,onboardingSessionId:Ce,event:"run.requested",origin:"dashboard_setup",result:"rejected",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0",reasonCode:be}),Pe({flowVersion:Xe,onboardingSessionId:Ce,event:"onboarding.blocked",step:"run",action:"retry_run",reasonCode:be},`onboarding.blocked:run:${be}`)}},me=async H=>{if(H.preventDefault(),!(!fe||!B||ge)){G("creating"),se(null),M(!1),_e(null);try{const pe=await yx({name:V,displayName:ne,canonicalDomain:fe.canonicalDomain,country:S,language:j});e(),X(pe),Pe({flowVersion:Xe,onboardingSessionId:Ce,event:"onboarding.step_completed",step:"project",method:"manual"},"onboarding.step_completed:project"),await s.invalidateQueries({queryKey:Ai({client:ae})}),await K(pe)}catch(pe){G("idle");const be=pe instanceof ln&&pe.statusCode===409;M(be),se(Mv(pe,"Could not create the project. Try again.")),Pe({flowVersion:Xe,onboardingSessionId:Ce,event:"onboarding.blocked",step:"project",action:"save",reasonCode:Qr(pe,"project_create_failed")},"onboarding.blocked:project"),be&&(e(),s.invalidateQueries({queryKey:Ai({client:ae})}))}}},ie=()=>{ee&&!ge&&K(ee)},ue=()=>{ge||a({to:"/projects"})},oe=async()=>{try{await navigator.clipboard.writeText(pU),je(!0)}catch{Xt({tone:"negative",title:"Could not copy setup request",detail:"Open the agent quickstart to continue with the CLI instead."})}};return ee&&U==="recovery"?c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx(Co,{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:[ee.displayName||ee.name," is ready. The Site Health scan needs another try."]})]})}),c.jsxs("div",{ref:Be,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(we,{type:"button",onClick:ie,children:"Retry Site Health scan"}),c.jsx(we,{type:"button",variant:"secondary",onClick:()=>{We(ee)},children:"Continue setup"})]})]})]}):c.jsxs("div",{className:"page-container max-w-xl py-8 md:py-12",children:[c.jsx(Co,{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(me),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&&!fe),"aria-describedby":u&&!fe?"launchpad-domain-hint launchpad-domain-error":"launchpad-domain-hint",placeholder:"https://example.com",value:u,onChange:H=>{f(H.target.value),se(null),M(!1)}}),c.jsxs("p",{id:"launchpad-domain-hint",className:"text-sm text-secondary",children:["Only public pages are scanned."," ",c.jsx(nt,{to:"/setup",search:{experience:"legacy"},className:"font-medium text-link underline-offset-4 hover:underline",children:"Set up without a site scan"})]}),u&&!fe?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:[re,c.jsx(h0,{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:[fe?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:V,onChange:H=>b(H.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:ne,onChange:H=>k(H.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:H=>C(H.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:H=>D(H.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:H=>q(H.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."})]})]}),Ee?c.jsxs("div",{ref:Be,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:Ee}),ve?c.jsx(we,{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(we,{className:"h-11 w-full",type:"submit",disabled:!fe||!B||ge,children:U==="creating"||U==="dispatching"?c.jsxs(c.Fragment,{children:[c.jsx(go,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"})," Mapping site…"]}):"Map site"}),c.jsx(we,{className:"w-full",type:"button",variant:"ghost",disabled:ge,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(we,{type:"button",variant:"ghost",size:"sm",className:"-ml-3",onClick:$t(oe),children:[ye?c.jsx(f0,{className:"size-3.5","aria-hidden":"true"}):c.jsx(Fv,{className:"size-3.5","aria-hidden":"true"}),c.jsx("span",{"aria-live":"polite",children:ye?"Copied setup request":"Copy setup request"})]}),c.jsx(we,{asChild:!0,variant:"ghost",size:"sm",children:c.jsxs("a",{href:mU,target:"_blank",rel:"noopener noreferrer",children:["Agent quickstart",c.jsx(Qj,{className:"size-3.5","aria-hidden":"true"}),c.jsx("span",{className:"sr-only",children:" (opens in a new tab)"})]})})]})]})]})}function NU(){return c.jsx("div",{className:"page-container",children:c.jsx("section",{className:"page-section",children:c.jsxs(On,{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(we,{asChild:!0,children:c.jsx(nt,{to:"/",children:"Return to overview"})})]})})})}const Zn=Ci(()=>Ga(()=>import("./ProjectPage-DsC2NUCt.js"),__vite__mapDeps([5,1,6,0,2,3,4,7,8,9,10,11,12]),import.meta.url),"ProjectPage"),_U=Ci(()=>Ga(()=>import("./RunsPage-BXMLPcIB.js"),__vite__mapDeps([13,1,6,10,4,2,11,12]),import.meta.url),"RunsPage"),zU=Ci(()=>Ga(()=>import("./HistoryPage-OlX3tvxL.js"),__vite__mapDeps([14,1,8,10,4,2,11,12]),import.meta.url),"HistoryPage"),EU=Ci(()=>Ga(()=>import("./SettingsPage-Bm_T8JMf.js"),__vite__mapDeps([15,1,10,4,2,11,12]),import.meta.url),"SettingsPage"),DU=Ci(()=>Ga(()=>import("./BacklinksPage-BmlsStTz.js"),__vite__mapDeps([16,1,2,10,4,11,12]),import.meta.url),"BacklinksPage"),TU=Ci(()=>Ga(()=>import("./TrafficPage-DmyGEdhw.js"),__vite__mapDeps([17,1,7,2,10,4,11,12]),import.meta.url),"TrafficPage"),RU=Ci(()=>Ga(()=>import("./TrafficSourceDetailPage-sbu3kXCD.js"),__vite__mapDeps([18,1,7,3,4,2,10,11,12]),import.meta.url),"TrafficSourceDetailPage"),OU=Ci(()=>Ga(()=>import("./MeasurementPropertyPage-B_usHzN3.js"),__vite__mapDeps([19,1,3,4,9,2,10,11,12]),import.meta.url),"MeasurementPropertyPage");function BU(){return c.jsx(ML,{children:c.jsx(qL,{})})}const cn=wj()({component:BU,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})}),qU=vt({getParentRoute:()=>cn,path:"/",component:UL,beforeLoad:async({context:e})=>{let a=e.queryClient.getQueryData(Ai({client:ae}));if(a===void 0)try{a=await e.queryClient.ensureQueryData(gs({client:ae}))}catch{return}if(a.length===0)throw Lv({to:"/setup"})}}),MU=vt({getParentRoute:()=>cn,path:"/projects",component:$L}),PU=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,An=vt({getParentRoute:()=>cn,path:"/projects/$projectName",component:()=>c.jsx(Op,{}),beforeLoad:async({context:e,params:a,location:s})=>{const r=a.projectName;if(!PU.test(r))return;let u=e.queryClient.getQueryData(Ai({client:ae}));if(!u)try{u=await e.queryClient.ensureQueryData(gs({client:ae}))}catch{return}const f=u.find(g=>g.id===r);if(f)throw Lv({to:s.pathname.replace(`/projects/${r}`,`/projects/${encodeURIComponent(f.name)}`),replace:!0})}}),IU=vt({getParentRoute:()=>An,path:"/",component:()=>c.jsx(Zn,{tab:"overview"})}),VU=vt({getParentRoute:()=>An,path:"/portfolio",component:()=>c.jsx(Zn,{tab:"portfolio"})}),LU=vt({getParentRoute:()=>An,path:"/search-console",component:()=>c.jsx(Zn,{tab:"search-console"})}),UU=vt({getParentRoute:()=>An,path:"/conversions",component:()=>c.jsx(Zn,{tab:"conversions"})}),GU=vt({getParentRoute:()=>An,path:"/local",component:()=>c.jsx(Zn,{tab:"local"})}),$U=vt({getParentRoute:()=>An,path:"/discovery",component:()=>c.jsx(Zn,{tab:"discovery"})}),HU=vt({getParentRoute:()=>An,path:"/properties/$targetKey",component:()=>c.jsx(OU,{})}),KU=vt({getParentRoute:()=>An,path:"/report",component:()=>c.jsx(Zn,{tab:"report"})}),QU=vt({getParentRoute:()=>An,path:"/activity",component:()=>c.jsx(Zn,{tab:"activity"})}),ZU=vt({getParentRoute:()=>An,path:"/backlinks",component:()=>c.jsx(Zn,{tab:"backlinks"})}),FU=vt({getParentRoute:()=>An,path:"/technical-aeo",component:()=>c.jsx(Zn,{tab:"technical-aeo"})}),YU=vt({getParentRoute:()=>An,path:"/history",component:()=>c.jsx(Zn,{tab:"history"})}),XU=vt({getParentRoute:()=>An,path:"/settings",component:()=>c.jsx(Zn,{tab:"settings"})}),JU=vt({getParentRoute:()=>cn,path:"/runs",component:_U}),WU=vt({getParentRoute:()=>cn,path:"/history",component:zU}),eG=vt({getParentRoute:()=>cn,path:"/settings",component:EU,beforeLoad:({context:e})=>{}}),tG=vt({getParentRoute:()=>cn,path:"/setup",component:jU}),nG=vt({getParentRoute:()=>cn,path:"/backlinks",component:DU}),aG=vt({getParentRoute:()=>cn,path:"/traffic",component:TU}),iG=vt({getParentRoute:()=>cn,path:"/traffic/$projectName/$sourceId",component:RU}),sG=vt({getParentRoute:()=>cn,path:"*",component:NU}),oG=cn.addChildren([qU,MU,An.addChildren([IU,VU,LU,UU,GU,$U,HU,KU,QU,ZU,FU,YU,XU]),JU,WU,eG,tG,nG,aG,iG,sG]);function rG(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const Pv=rG(),lG=Pv==="/"?"":Pv.replace(/\/$/,"");function cG(e,a){return Sj({routeTree:oG,basepath:lG||"/",context:{queryClient:e},...a?.initialEntries})}const uG=6e4;function dG(){const[e,a]=E.useState(rp()?"ready":"checking"),[s,r]=E.useState(null),[u,f]=E.useState(!1),[g,b]=E.useState(""),[x,k]=E.useState(""),[S,C]=E.useState(""),[j,D]=E.useState(null),[B,q]=E.useState(!1),[U,G]=E.useState(!1),ee=E.useRef(null),X=E.useRef(null),te=E.useRef(null),se=()=>{const ye=s?`${s.name}:${s.role}`:"no-accounts";if(!ee.current||te.current!==ye){X.current?.clear();const je=oC();X.current=je,ee.current=cG(je),te.current=ye}return{queryClient:X.current,router:ee.current}},ve=ye=>ye.authRequired?(f(!0),r(ye.user),a(ye.user?"ready":"account-login"),!0):!1;E.useEffect(()=>{if(rp())return;let ye=!1;return Promise.allSettled([Oy(),Ry()]).then(([je,Be])=>{if(ye||je.status==="fulfilled"&&ve(je.value))return;if(Be.status==="rejected"){const Pe=Be.reason;D(Pe instanceof Error?Pe.message:"Failed to reach the Canonry API"),a("login");return}const Ce=Be.value;Ce.authenticated?a("ready"):a(Ce.setupRequired?"setup":"login")}),()=>{ye=!0}},[]),E.useEffect(()=>{if(e!=="ready"||rp())return;const ye=setInterval(()=>{if(u){Oy().then(je=>{je.authRequired&&!je.user&&(G(!0),r(null),a("account-login"))}).catch(()=>{});return}Ry().then(je=>{je.authenticated||(G(!0),a(je.setupRequired?"setup":"login"))}).catch(()=>{})},uG);return Ty(()=>{G(!0),r(null),a(u?"account-login":"login")}),()=>{clearInterval(ye),Ty(null)}},[e,u]);const M=async ye=>{if(ye.preventDefault(),!x.trim()||x.trim().length<8){D("Password must be at least 8 characters");return}if(x!==S){D("Passwords do not match");return}q(!0),D(null);try{if(!(await B6(x.trim())).authenticated){D("Setup failed");return}k(""),C(""),G(!1),a("ready")}catch(je){D(je instanceof ln||je instanceof Error?je.message:"Setup failed")}finally{q(!1)}},J=async ye=>{if(ye.preventDefault(),!!x.trim()){q(!0),D(null);try{if(!(await q6(x.trim())).authenticated){D("Incorrect password");return}k(""),G(!1),a("ready")}catch(je){D(je instanceof ln||je instanceof Error?je.message:"Authentication failed")}finally{q(!1)}}},_e=async ye=>{if(ye.preventDefault(),!(!g.trim()||!x)){q(!0),D(null);try{const je=await M6(g.trim(),x);if(!je.user){D("Incorrect name or password.");return}k(""),G(!1),r(je.user),a("ready")}catch(je){D(je instanceof ln?je.message:"Incorrect name or password.")}finally{q(!1)}}};if(e==="ready"){const{queryClient:ye,router:je}=se();return c.jsx(Y6,{account:s,children:c.jsx(jj,{client:ye,children:c.jsx(Aj,{router:je})})})}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(On,{className:"surface-card w-full",children:e==="checking"?c.jsx(mo,{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(Hr,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),c.jsx(Kr,{children:"Sign in to Canonry"})]}),c.jsxs(mo,{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:ye=>b(ye.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:ye=>k(ye.target.value)})]}),j?c.jsx("p",{className:"text-sm text-negative-400",children:j}):null,c.jsx(we,{type:"submit",disabled:B||!g.trim()||!x,children:B?"Signing in…":"Sign in"})]})]})]}):e==="setup"?c.jsxs(c.Fragment,{children:[c.jsxs(Hr,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),c.jsx(Kr,{children:"Create a dashboard password"}),c.jsx(mu,{children:"Choose a password to protect the Canonry dashboard."})]}),c.jsx(mo,{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:ye=>k(ye.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:ye=>C(ye.target.value),placeholder:"Re-enter password"})]}),j?c.jsx("p",{className:"text-sm text-negative-400",children:j}):null,c.jsx(we,{type:"submit",disabled:B||!x.trim()||!S.trim(),children:B?"Setting up…":"Create password & open dashboard"})]})})]}):c.jsxs(c.Fragment,{children:[c.jsxs(Hr,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),c.jsx(Kr,{children:"Sign in to Canonry"}),c.jsx(mu,{children:"Enter your dashboard password to continue."})]}),c.jsxs(mo,{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:ye=>k(ye.target.value),placeholder:"Dashboard password"})]}),j?c.jsx("p",{className:"text-sm text-negative-400",children:j}):null,c.jsx(we,{type:"submit",disabled:B||!x.trim(),children:B?"Signing in…":"Open dashboard"})]})]})]})})]})})}const cw=document.getElementById("root");if(!cw)throw new Error("Expected #root element for web app bootstrap.");e4.createRoot(cw).render(c.jsx(E.StrictMode,{children:c.jsx(dG,{})}));export{vK as $,YG as A,we as B,lu as C,uK as D,pK as E,mK as F,Z$ as G,o$ as H,Pr as I,s$ as J,y$ as K,Xt as L,cQ as M,gK as N,yK as O,mV as P,d$ as Q,bK as R,vM as S,wn as T,m$ as U,l$ as V,u$ as W,hK as X,fK as Y,dK as Z,r$ as _,rQ as a,KH as a$,CK as a0,wK as a1,jK as a2,SK as a3,AK as a4,Q6 as a5,zh as a6,Te as a7,kK as a8,A3 as a9,qH as aA,fH as aB,gH as aC,$K as aD,HK as aE,KK as aF,p$ as aG,Ai as aH,h$ as aI,Ch as aJ,PK as aK,$M as aL,LH as aM,tl as aN,GH as aO,XH as aP,rK as aQ,oK as aR,FH as aS,iK as aT,cK as aU,HH as aV,WH as aW,eK as aX,tK as aY,$H as aZ,JH as a_,La as aa,xK as ab,fQ as ac,BT as ad,qT as ae,X$ as af,Y$ as ag,M$ as ah,G$ as ai,$$ as aj,ln as ak,H$ as al,LG as am,xM as an,gI as ao,Xc as ap,K$ as aq,Ip as ar,IK as as,Z_ as at,c$ as au,F$ as av,DM as aw,YM as ax,BH as ay,MH as az,qz as b,pQ as b$,nK as b0,QH as b1,aK as b2,YH as b3,sK as b4,lK as b5,JL as b6,ZH as b7,de as b8,PG as b9,uH as bA,lH as bB,dH as bC,mH as bD,sH as bE,cH as bF,ZG as bG,QG as bH,KG as bI,C$ as bJ,JG as bK,SH as bL,ov as bM,wH as bN,WG as bO,e$ as bP,kH as bQ,t$ as bR,n$ as bS,i$ as bT,a$ as bU,ml as bV,gs as bW,nL as bX,mx as bY,AH as bZ,CH as b_,MG as ba,qG as bb,BG as bc,TG as bd,DG as be,OG as bf,RG as bg,EG as bh,zG as bi,wG as bj,SG as bk,_G as bl,NG as bm,CG as bn,jG as bo,AG as bp,kG as bq,xG as br,vG as bs,bG as bt,A4 as bu,rH as bv,MK as bw,oH as bx,A$ as by,hQ as bz,lQ as c,UK as c$,nU as c0,PH as c1,UH as c2,NH as c3,zH as c4,DH as c5,_H as c6,rn as c7,z6 as c8,AM as c9,VH as cA,P6 as cB,w6 as cC,IG as cD,VG as cE,XG as cF,f$ as cG,g$ as cH,Ih as cI,$u as cJ,Rh as cK,j$ as cL,Ao as cM,lv as cN,B$ as cO,P$ as cP,V$ as cQ,L$ as cR,q$ as cS,I$ as cT,U$ as cU,pV as cV,G3 as cW,bV as cX,$3 as cY,H3 as cZ,O$ as c_,GG as ca,$G as cb,UG as cc,D6 as cd,HG as ce,EM as cf,FG as cg,NK as ch,U6 as ci,w$ as cj,zK as ck,EK as cl,DK as cm,_K as cn,bH as co,b$ as cp,v$ as cq,x$ as cr,S$ as cs,k$ as ct,yo as cu,Nh as cv,uQ as cw,Gu as cx,Th as cy,IH as cz,Q$ as d,hH as d0,kh as d1,jH as d2,VK as d3,GK as d4,R$ as d5,pH as d6,D$ as d7,T$ as d8,E$ as d9,JK as dA,Co as dB,nH as dC,tQ as dD,vR as dE,iH as dF,aH as dG,LK as da,C9 as db,TH as dc,EH as dd,OH as de,RH as df,eH as dg,Ga as dh,Qn as di,W$ as dj,QK as dk,FK as dl,ZK as dm,aU as dn,tH as dp,iQ as dq,sQ as dr,oQ as ds,YK as dt,XK as du,J$ as dv,eQ as dw,aQ as dx,WK as dy,nQ as dz,OK as e,On as f,TK as g,vv as h,ae as i,b6 as j,xn as k,$t as l,RK as m,qK as n,BK as o,N$ as p,z$ as q,_$ as r,dQ as s,wM as t,Oh as u,mQ as v,c0 as w,vH as x,yH as y,xH as z};
83
+ competitor2.com`,value:Jt,onChange:F=>ua(F.target.value)})]}),gl?c.jsx("p",{className:"text-negative-400 text-sm",children:gl}):null,c.jsxs("div",{className:"setup-nav",children:[c.jsx(we,{type:"button",variant:"outline",onClick:en,children:"Back"}),c.jsxs("div",{className:"flex gap-2",children:[c.jsx(we,{type:"button",variant:"outline",onClick:kl,children:"Skip"}),c.jsx(we,{type:"button",disabled:Za.length===0||qi,onClick:$t(Dt),children:qi?"Saving...":`Save ${Za.length} competitor${Za.length!==1?"s":""}`})]})]})]})]});case 4:{const F=Xn.data,Oe=F?.status??(Qa===M?.id?M.status:void 0),ta=Oe==="completed"||Oe==="partial"||Oe==="failed"||Oe==="cancelled",tn=F?.snapshots??[],pn=tn.filter(Tt=>Tt.citationState==="cited").length,Sl=tn.filter(Tt=>Tt.answerMentioned===!0).length,jl=new Set(tn.map(Tt=>Tt.query).filter(Tt=>!!Tt)).size,js=Oe?Bv(Oe,tn.length):!1,$o=J&&!qn,As=Yn??(F?.error?xM(F.error):Oe==="cancelled"?"The sweep was cancelled before it produced a baseline.":(Oe==="completed"||Oe==="partial")&&tn.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 Gi=null;return $o||js?Gi=c.jsx(wn,{tone:"positive",children:"Complete"}):Yn&&!qn?Gi=c.jsx(wn,{tone:"negative",children:"Failed"}):ta?Gi=c.jsx(wn,{tone:"negative",children:Oe==="cancelled"?"Cancelled":"Failed"}):qn&&(Gi=c.jsx(wn,{tone:"caution",children:"Running"})),c.jsxs(On,{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"})]}),Gi]}),$o?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:pe})," already has a successful answer-visibility baseline."]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(we,{type:"button",onClick:At,children:g?"Finish and open project":"Open project dashboard →"})]})]}):qn?ta?js?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:pe}),":"]}),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:[Sl,c.jsxs("span",{className:"text-faint text-lg",children:[" / ",jl]})]}),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:[pn,c.jsxs("span",{className:"text-faint text-lg",children:[" / ",jl]})]}),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:tn.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(we,{type:"button",onClick:At,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:As}),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(we,{type:"button",variant:"outline",asChild:!0,children:c.jsx(nt,{to:"/settings",children:"Configure providers"})}),c.jsx(we,{type:"button",disabled:Ii||!!da,onClick:$t(Go),children:Ii?"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:Oe??"queued"})]})}),Xn.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:Xn.error instanceof Error?Xn.error.message:"Could not refresh the sweep status."}),c.jsx(we,{type:"button",variant:"outline",size:"sm",className:"mt-2",onClick:()=>{Xn.refetch()},children:"Retry status check"})]}),c.jsxs("div",{className:"setup-nav",children:[c.jsx("span",{}),c.jsx(we,{type:"button",variant:"outline",onClick:At,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:pe}),", or finish and run it later from the project. A sweep calls the answer engines, so it costs provider usage."]}),(da||Yn)&&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:Yn??da}),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(we,{type:"button",variant:"outline",onClick:en,children:"Back"}),c.jsx(we,{type:"button",variant:"ghost",onClick:At,children:"Finish without running"}),c.jsx(we,{type:"button",disabled:Ii||!!da,title:da,onClick:$t(Go),children:Ii?"Launching...":Yn?"Retry visibility sweep":"Launch visibility sweep"})]})]})]})}default:return null}})();return c.jsxs("div",{className:"page-container",children:[g?c.jsx(Co,{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(we,{type:"button",variant:"outline",onClick:At,children:"Skip AI Visibility"})}):null]}),c.jsx(oU,{current:Be,labels:iU}),c.jsx("section",{className:"setup-wizard",children:wl})]})}const uU=E.lazy(async()=>({default:(await Ga(()=>import("./SiteHealthSection-CATUc26x.js").then(a=>a.d),__vite__mapDeps([0,1,2,3,4]),import.meta.url)).SiteHealthSection})),dU=1800,mU="https://github.com/Canonry/canonry#or-use-any-shell-capable-coding-agent",pU="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 hU(e,a){return e==="legacy"?"legacy":e==="platform"?"platform":a.state==="success"?a.projectCount===0?"platform":"legacy":a.state==="error"?"retry":"loading"}function fU(e,a){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=a?r.of(a.toLowerCase()):void 0;return`${u??(e||"Country")} · ${f??(a||"Language")}`}catch{return`${e||"Country"} · ${a||"Language"}`}}function gU(e){const a=e.replace(/^\[|\]$/g,"");return/^(?:\d{1,3}\.){3}\d{1,3}$/.test(a)||a.includes(":")}function yU(e){const a=e.trim();if(!a)return null;const s=/^[a-z][a-z\d+.-]*:\/\//i.test(a)?a:`https://${a}`;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"||gU(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 bU(e,a=dU){let s;const r=new Promise(f=>{s=setTimeout(()=>f({state:"timed-out"}),a)}),u=await Promise.race([e.then(f=>({state:"queued",run:f})),r]);return s&&clearTimeout(s),u}function vU(e,a){e.catch(()=>{Xt({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:${a}`})})}function lw(e){const a=E.useRef(ew()).current,s=E.useRef(new Set),r=E.useCallback((u,f)=>{if(f){if(s.current.has(f))return;s.current.add(f)}bx({...u,surface:e,eventId:tw()})},[e]);return{onboardingSessionId:a,emit:r}}function Mv(e,a){return e instanceof ln&&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:a}function xU(){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(go,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading projects…"]})]})}function kU({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(we,{type:"button",className:"mt-4",variant:"secondary",onClick:e,children:"Retry project check"})]})]})}function wU({projectName:e,initialRunId:a}){return c.jsx(Ih,{title:"Site Health setup",children:c.jsx(SU,{projectName:e,initialRunId:a})})}function SU({projectName:e,initialRunId:a}){const s=ms(),r=Ht({...gs({client:ae}),enabled:!!e,retry:!1,refetchOnMount:"always"}),{onboardingSessionId:u,emit:f}=lw("site_health");E.useEffect(()=>{e&&f({flowVersion:Xe,onboardingSessionId:u,event:"onboarding.started",step:"run",resumed:!!a},"onboarding.started")},[f,a,u,e]),E.useEffect(()=>{!e||!a||iw(e)?.runId!==a&&aw(e,a)},[a,e]);const b=Ht({..._h({client:ae,path:{id:a??""}}),enabled:!!a,refetchInterval:({state:j})=>{const D=j.data?.status;return D==="completed"||D==="partial"||D==="failed"||D==="cancelled"?!1:2e3},refetchIntervalInBackground:!0}).data?.status;if(E.useEffect(()=>{if(!e||!a||!b)return;if(b==="completed"||b==="partial"){f({flowVersion:Xe,onboardingSessionId:u,event:"onboarding.step_completed",step:"run",method:"automatic"},"onboarding.step_completed:run"),hu(a);return}if(b!=="failed"&&b!=="cancelled")return;const j=b==="cancelled"?"run_cancelled":"run_failed";f({flowVersion:Xe,onboardingSessionId:u,event:"onboarding.blocked",step:"run",action:"retry_run",reasonCode:j},`onboarding.blocked:run:${j}`),hu(a)},[f,a,u,e,b]),!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(we,{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(Co,{current:"site"}),c.jsxs("div",{className:"mt-8 flex items-center gap-3 text-sm text-secondary",role:"status",children:[c.jsx(go,{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(we,{type:"button",className:"mt-4",variant:"secondary",onClick:()=>{r.refetch()},children:"Retry project check"})]})]});const x=r.data.find(j=>j.name===e);if(!x)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(we,{type:"button",variant:"secondary",onClick:()=>{s({to:"/projects"})},children:"View projects"})]});const k=()=>{s({to:"/setup",search:{onboarding:"site-health",setupProject:x.name},replace:!0})},S=()=>{s({to:"/setup",search:{experience:"legacy",onboarding:"site-health",setupProject:x.name},replace:!0})},C=()=>{f({flowVersion:Xe,onboardingSessionId:u,event:"onboarding.step_completed",step:"run",method:"skipped"},"onboarding.step_completed:run"),s({to:"/projects/$projectName",params:{projectName:x.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(E.Suspense,{fallback:c.jsxs("div",{className:"space-y-5",children:[c.jsx(Co,{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(go,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"}),"Loading Site Health…"]})]}),children:c.jsx(uU,{projectName:x.name,projectId:x.id,initialRunId:a,onReleaseInitialRun:k,showOnboardingActions:!0,onContinueOnboarding:S,onSkipOnboarding:C})})]})}function jU(){const e=Iv({from:"/setup"}),a=e.onboarding==="site-health"&&!e.setupProject,s=e.onboarding==="site-health"&&e.experience!=="legacy",r=m6(),u=e.experience==="legacy"?"legacy":r,[f,g]=E.useState(!1),b=Ht({...gs({client:ae}),enabled:u==="auto",retry:!1,refetchOnMount:"always"}),x=u==="auto"&&b.isSuccess&&b.isFetchedAfterMount&&b.data.length===0;E.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":hU(u,k);return a||s?c.jsx(wU,{projectName:e.setupProject,initialRunId:e.siteHealthRunId}):S==="legacy"?c.jsx(rU,{visibilityProjectName:e.setupProject,siteHealthOnboarding:e.onboarding==="site-health"}):S==="loading"?c.jsx(xU,{}):S==="retry"?c.jsx(kU,{onRetry:()=>{b.refetch()}}):c.jsx(AU,{onActivationStarted:()=>g(!0)})}function AU({onActivationStarted:e}){return c.jsx(Ih,{title:"Site Health setup",children:c.jsx(CU,{onActivationStarted:e})})}function CU({onActivationStarted:e}){const a=ms(),s=Ua(),r=aU(),[u,f]=E.useState(""),[g,b]=E.useState(""),[x,k]=E.useState(""),[S,C]=E.useState("US"),[j,D]=E.useState("en"),[B,q]=E.useState(!1),[U,G]=E.useState("idle"),[ee,X]=E.useState(null),[te,se]=E.useState(null),[ve,M]=E.useState(!1),[J,_e]=E.useState(null),[ye,je]=E.useState(!1),Be=E.useRef(null),{onboardingSessionId:Ce,emit:Pe}=lw("platform");E.useEffect(()=>{Pe({flowVersion:Xe,onboardingSessionId:Ce,event:"onboarding.started",step:"project",resumed:!1},"onboarding.started")},[Pe,Ce]);const fe=yU(u),V=g||fe?.projectName||"",ne=x||fe?.displayName||"",ge=U==="creating"||U==="dispatching",Ee=te??J,re=fU(S,j);E.useEffect(()=>{Ee&&Be.current?.focus()},[Ee]);const We=(H,pe)=>a({to:"/setup",search:{...pe?{siteHealthRunId:pe}:{},onboarding:"site-health",setupProject:H.name},replace:!0}),K=async H=>{G("dispatching"),_e(null);try{const pe=r.mutateAsync({projectName:H.name,projectId:H.id,projectLabel:H.displayName||H.name,suppressErrorToast:!0,body:{checkDeadLinks:!0}}),be=await bU(pe);if(be.state==="queued"){Pe({flowVersion:Xe,onboardingSessionId:Ce,event:"run.requested",origin:"dashboard_setup",result:"queued",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0"}),await We(H,be.run.runId);return}pe.then(()=>{Pe({flowVersion:Xe,onboardingSessionId:Ce,event:"run.requested",origin:"dashboard_setup",result:"queued",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0"})},it=>{Pe({flowVersion:Xe,onboardingSessionId:Ce,event:"run.requested",origin:"dashboard_setup",result:"rejected",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0",reasonCode:Qr(it,"run_rejected")})}),vU(pe,H.id),await We(H)}catch(pe){G("recovery"),_e(Mv(pe,"The project was created, but the Site Health scan could not be started."));const be=Qr(pe,"run_rejected");Pe({flowVersion:Xe,onboardingSessionId:Ce,event:"run.requested",origin:"dashboard_setup",result:"rejected",kind:"site_health",providerCountBucket:"0",queryCountBucket:"0",reasonCode:be}),Pe({flowVersion:Xe,onboardingSessionId:Ce,event:"onboarding.blocked",step:"run",action:"retry_run",reasonCode:be},`onboarding.blocked:run:${be}`)}},me=async H=>{if(H.preventDefault(),!(!fe||!B||ge)){G("creating"),se(null),M(!1),_e(null);try{const pe=await yx({name:V,displayName:ne,canonicalDomain:fe.canonicalDomain,country:S,language:j});e(),X(pe),Pe({flowVersion:Xe,onboardingSessionId:Ce,event:"onboarding.step_completed",step:"project",method:"manual"},"onboarding.step_completed:project"),await s.invalidateQueries({queryKey:Ai({client:ae})}),await K(pe)}catch(pe){G("idle");const be=pe instanceof ln&&pe.statusCode===409;M(be),se(Mv(pe,"Could not create the project. Try again.")),Pe({flowVersion:Xe,onboardingSessionId:Ce,event:"onboarding.blocked",step:"project",action:"save",reasonCode:Qr(pe,"project_create_failed")},"onboarding.blocked:project"),be&&(e(),s.invalidateQueries({queryKey:Ai({client:ae})}))}}},ie=()=>{ee&&!ge&&K(ee)},ue=()=>{ge||a({to:"/projects"})},oe=async()=>{try{await navigator.clipboard.writeText(pU),je(!0)}catch{Xt({tone:"negative",title:"Could not copy setup request",detail:"Open the agent quickstart to continue with the CLI instead."})}};return ee&&U==="recovery"?c.jsxs("div",{className:"page-container max-w-3xl",children:[c.jsx(Co,{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:[ee.displayName||ee.name," is ready. The Site Health scan needs another try."]})]})}),c.jsxs("div",{ref:Be,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(we,{type:"button",onClick:ie,children:"Retry Site Health scan"}),c.jsx(we,{type:"button",variant:"secondary",onClick:()=>{We(ee)},children:"Continue setup"})]})]})]}):c.jsxs("div",{className:"page-container max-w-xl py-8 md:py-12",children:[c.jsx(Co,{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(me),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&&!fe),"aria-describedby":u&&!fe?"launchpad-domain-hint launchpad-domain-error":"launchpad-domain-hint",placeholder:"https://example.com",value:u,onChange:H=>{f(H.target.value),se(null),M(!1)}}),c.jsxs("p",{id:"launchpad-domain-hint",className:"text-sm text-secondary",children:["Only public pages are scanned."," ",c.jsx(nt,{to:"/setup",search:{experience:"legacy"},className:"font-medium text-link underline-offset-4 hover:underline",children:"Set up without a site scan"})]}),u&&!fe?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:[re,c.jsx(h0,{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:[fe?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:V,onChange:H=>b(H.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:ne,onChange:H=>k(H.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:H=>C(H.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:H=>D(H.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:H=>q(H.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."})]})]}),Ee?c.jsxs("div",{ref:Be,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:Ee}),ve?c.jsx(we,{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(we,{className:"h-11 w-full",type:"submit",disabled:!fe||!B||ge,children:U==="creating"||U==="dispatching"?c.jsxs(c.Fragment,{children:[c.jsx(go,{className:"size-4 motion-safe:animate-spin","aria-hidden":"true"})," Mapping site…"]}):"Map site"}),c.jsx(we,{className:"w-full",type:"button",variant:"ghost",disabled:ge,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(we,{type:"button",variant:"ghost",size:"sm",className:"-ml-3",onClick:$t(oe),children:[ye?c.jsx(f0,{className:"size-3.5","aria-hidden":"true"}):c.jsx(Fv,{className:"size-3.5","aria-hidden":"true"}),c.jsx("span",{"aria-live":"polite",children:ye?"Copied setup request":"Copy setup request"})]}),c.jsx(we,{asChild:!0,variant:"ghost",size:"sm",children:c.jsxs("a",{href:mU,target:"_blank",rel:"noopener noreferrer",children:["Agent quickstart",c.jsx(Qj,{className:"size-3.5","aria-hidden":"true"}),c.jsx("span",{className:"sr-only",children:" (opens in a new tab)"})]})})]})]})]})}function NU(){return c.jsx("div",{className:"page-container",children:c.jsx("section",{className:"page-section",children:c.jsxs(On,{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(we,{asChild:!0,children:c.jsx(nt,{to:"/",children:"Return to overview"})})]})})})}const Zn=Ci(()=>Ga(()=>import("./ProjectPage-C-fk0Jja.js"),__vite__mapDeps([5,1,6,0,2,3,4,7,8,9,10,11,12]),import.meta.url),"ProjectPage"),_U=Ci(()=>Ga(()=>import("./RunsPage-HZwwLQDE.js"),__vite__mapDeps([13,1,6,10,4,2,11,12]),import.meta.url),"RunsPage"),zU=Ci(()=>Ga(()=>import("./HistoryPage-BWODoEok.js"),__vite__mapDeps([14,1,8,10,4,2,11,12]),import.meta.url),"HistoryPage"),EU=Ci(()=>Ga(()=>import("./SettingsPage-3eoRO4ze.js"),__vite__mapDeps([15,1,10,4,2,11,12]),import.meta.url),"SettingsPage"),DU=Ci(()=>Ga(()=>import("./BacklinksPage-DiwTMJTp.js"),__vite__mapDeps([16,1,2,10,4,11,12]),import.meta.url),"BacklinksPage"),TU=Ci(()=>Ga(()=>import("./TrafficPage-Cw8AM5VR.js"),__vite__mapDeps([17,1,7,2,10,4,11,12]),import.meta.url),"TrafficPage"),RU=Ci(()=>Ga(()=>import("./TrafficSourceDetailPage-ChFDAstr.js"),__vite__mapDeps([18,1,7,3,4,2,10,11,12]),import.meta.url),"TrafficSourceDetailPage"),OU=Ci(()=>Ga(()=>import("./MeasurementPropertyPage-C1uZ9LEl.js"),__vite__mapDeps([19,1,3,4,9,2,10,11,12]),import.meta.url),"MeasurementPropertyPage");function BU(){return c.jsx(ML,{children:c.jsx(qL,{})})}const cn=wj()({component:BU,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})}),qU=vt({getParentRoute:()=>cn,path:"/",component:UL,beforeLoad:async({context:e})=>{let a=e.queryClient.getQueryData(Ai({client:ae}));if(a===void 0)try{a=await e.queryClient.ensureQueryData(gs({client:ae}))}catch{return}if(a.length===0)throw Lv({to:"/setup"})}}),MU=vt({getParentRoute:()=>cn,path:"/projects",component:$L}),PU=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,An=vt({getParentRoute:()=>cn,path:"/projects/$projectName",component:()=>c.jsx(Op,{}),beforeLoad:async({context:e,params:a,location:s})=>{const r=a.projectName;if(!PU.test(r))return;let u=e.queryClient.getQueryData(Ai({client:ae}));if(!u)try{u=await e.queryClient.ensureQueryData(gs({client:ae}))}catch{return}const f=u.find(g=>g.id===r);if(f)throw Lv({to:s.pathname.replace(`/projects/${r}`,`/projects/${encodeURIComponent(f.name)}`),replace:!0})}}),IU=vt({getParentRoute:()=>An,path:"/",component:()=>c.jsx(Zn,{tab:"overview"})}),VU=vt({getParentRoute:()=>An,path:"/portfolio",component:()=>c.jsx(Zn,{tab:"portfolio"})}),LU=vt({getParentRoute:()=>An,path:"/search-console",component:()=>c.jsx(Zn,{tab:"search-console"})}),UU=vt({getParentRoute:()=>An,path:"/conversions",component:()=>c.jsx(Zn,{tab:"conversions"})}),GU=vt({getParentRoute:()=>An,path:"/local",component:()=>c.jsx(Zn,{tab:"local"})}),$U=vt({getParentRoute:()=>An,path:"/discovery",component:()=>c.jsx(Zn,{tab:"discovery"})}),HU=vt({getParentRoute:()=>An,path:"/properties/$targetKey",component:()=>c.jsx(OU,{})}),KU=vt({getParentRoute:()=>An,path:"/report",component:()=>c.jsx(Zn,{tab:"report"})}),QU=vt({getParentRoute:()=>An,path:"/activity",component:()=>c.jsx(Zn,{tab:"activity"})}),ZU=vt({getParentRoute:()=>An,path:"/backlinks",component:()=>c.jsx(Zn,{tab:"backlinks"})}),FU=vt({getParentRoute:()=>An,path:"/technical-aeo",component:()=>c.jsx(Zn,{tab:"technical-aeo"})}),YU=vt({getParentRoute:()=>An,path:"/history",component:()=>c.jsx(Zn,{tab:"history"})}),XU=vt({getParentRoute:()=>An,path:"/settings",component:()=>c.jsx(Zn,{tab:"settings"})}),JU=vt({getParentRoute:()=>cn,path:"/runs",component:_U}),WU=vt({getParentRoute:()=>cn,path:"/history",component:zU}),eG=vt({getParentRoute:()=>cn,path:"/settings",component:EU,beforeLoad:({context:e})=>{}}),tG=vt({getParentRoute:()=>cn,path:"/setup",component:jU}),nG=vt({getParentRoute:()=>cn,path:"/backlinks",component:DU}),aG=vt({getParentRoute:()=>cn,path:"/traffic",component:TU}),iG=vt({getParentRoute:()=>cn,path:"/traffic/$projectName/$sourceId",component:RU}),sG=vt({getParentRoute:()=>cn,path:"*",component:NU}),oG=cn.addChildren([qU,MU,An.addChildren([IU,VU,LU,UU,GU,$U,HU,KU,QU,ZU,FU,YU,XU]),JU,WU,eG,tG,nG,aG,iG,sG]);function rG(){return typeof window<"u"&&window.__CANONRY_CONFIG__?.basePath?window.__CANONRY_CONFIG__.basePath:"/"}const Pv=rG(),lG=Pv==="/"?"":Pv.replace(/\/$/,"");function cG(e,a){return Sj({routeTree:oG,basepath:lG||"/",context:{queryClient:e},...a?.initialEntries})}const uG=6e4;function dG(){const[e,a]=E.useState(rp()?"ready":"checking"),[s,r]=E.useState(null),[u,f]=E.useState(!1),[g,b]=E.useState(""),[x,k]=E.useState(""),[S,C]=E.useState(""),[j,D]=E.useState(null),[B,q]=E.useState(!1),[U,G]=E.useState(!1),ee=E.useRef(null),X=E.useRef(null),te=E.useRef(null),se=()=>{const ye=s?`${s.name}:${s.role}`:"no-accounts";if(!ee.current||te.current!==ye){X.current?.clear();const je=oC();X.current=je,ee.current=cG(je),te.current=ye}return{queryClient:X.current,router:ee.current}},ve=ye=>ye.authRequired?(f(!0),r(ye.user),a(ye.user?"ready":"account-login"),!0):!1;E.useEffect(()=>{if(rp())return;let ye=!1;return Promise.allSettled([Oy(),Ry()]).then(([je,Be])=>{if(ye||je.status==="fulfilled"&&ve(je.value))return;if(Be.status==="rejected"){const Pe=Be.reason;D(Pe instanceof Error?Pe.message:"Failed to reach the Canonry API"),a("login");return}const Ce=Be.value;Ce.authenticated?a("ready"):a(Ce.setupRequired?"setup":"login")}),()=>{ye=!0}},[]),E.useEffect(()=>{if(e!=="ready"||rp())return;const ye=setInterval(()=>{if(u){Oy().then(je=>{je.authRequired&&!je.user&&(G(!0),r(null),a("account-login"))}).catch(()=>{});return}Ry().then(je=>{je.authenticated||(G(!0),a(je.setupRequired?"setup":"login"))}).catch(()=>{})},uG);return Ty(()=>{G(!0),r(null),a(u?"account-login":"login")}),()=>{clearInterval(ye),Ty(null)}},[e,u]);const M=async ye=>{if(ye.preventDefault(),!x.trim()||x.trim().length<8){D("Password must be at least 8 characters");return}if(x!==S){D("Passwords do not match");return}q(!0),D(null);try{if(!(await B6(x.trim())).authenticated){D("Setup failed");return}k(""),C(""),G(!1),a("ready")}catch(je){D(je instanceof ln||je instanceof Error?je.message:"Setup failed")}finally{q(!1)}},J=async ye=>{if(ye.preventDefault(),!!x.trim()){q(!0),D(null);try{if(!(await q6(x.trim())).authenticated){D("Incorrect password");return}k(""),G(!1),a("ready")}catch(je){D(je instanceof ln||je instanceof Error?je.message:"Authentication failed")}finally{q(!1)}}},_e=async ye=>{if(ye.preventDefault(),!(!g.trim()||!x)){q(!0),D(null);try{const je=await M6(g.trim(),x);if(!je.user){D("Incorrect name or password.");return}k(""),G(!1),r(je.user),a("ready")}catch(je){D(je instanceof ln?je.message:"Incorrect name or password.")}finally{q(!1)}}};if(e==="ready"){const{queryClient:ye,router:je}=se();return c.jsx(Y6,{account:s,children:c.jsx(jj,{client:ye,children:c.jsx(Aj,{router:je})})})}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(On,{className:"surface-card w-full",children:e==="checking"?c.jsx(mo,{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(Hr,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),c.jsx(Kr,{children:"Sign in to Canonry"})]}),c.jsxs(mo,{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:ye=>b(ye.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:ye=>k(ye.target.value)})]}),j?c.jsx("p",{className:"text-sm text-negative-400",children:j}):null,c.jsx(we,{type:"submit",disabled:B||!g.trim()||!x,children:B?"Signing in…":"Sign in"})]})]})]}):e==="setup"?c.jsxs(c.Fragment,{children:[c.jsxs(Hr,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"First-time setup"}),c.jsx(Kr,{children:"Create a dashboard password"}),c.jsx(mu,{children:"Choose a password to protect the Canonry dashboard."})]}),c.jsx(mo,{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:ye=>k(ye.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:ye=>C(ye.target.value),placeholder:"Re-enter password"})]}),j?c.jsx("p",{className:"text-sm text-negative-400",children:j}):null,c.jsx(we,{type:"submit",disabled:B||!x.trim()||!S.trim(),children:B?"Setting up…":"Create password & open dashboard"})]})})]}):c.jsxs(c.Fragment,{children:[c.jsxs(Hr,{children:[c.jsx("p",{className:"eyebrow eyebrow-soft",children:"Dashboard access"}),c.jsx(Kr,{children:"Sign in to Canonry"}),c.jsx(mu,{children:"Enter your dashboard password to continue."})]}),c.jsxs(mo,{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:ye=>k(ye.target.value),placeholder:"Dashboard password"})]}),j?c.jsx("p",{className:"text-sm text-negative-400",children:j}):null,c.jsx(we,{type:"submit",disabled:B||!x.trim(),children:B?"Signing in…":"Open dashboard"})]})]})]})})]})})}const cw=document.getElementById("root");if(!cw)throw new Error("Expected #root element for web app bootstrap.");e4.createRoot(cw).render(c.jsx(E.StrictMode,{children:c.jsx(dG,{})}));export{vK as $,YG as A,we as B,lu as C,uK as D,pK as E,mK as F,Z$ as G,o$ as H,Pr as I,s$ as J,y$ as K,Xt as L,cQ as M,gK as N,yK as O,mV as P,d$ as Q,bK as R,vM as S,wn as T,m$ as U,l$ as V,u$ as W,hK as X,fK as Y,dK as Z,r$ as _,rQ as a,KH as a$,CK as a0,wK as a1,jK as a2,SK as a3,AK as a4,Q6 as a5,zh as a6,Te as a7,kK as a8,A3 as a9,qH as aA,fH as aB,gH as aC,$K as aD,HK as aE,KK as aF,p$ as aG,Ai as aH,h$ as aI,Ch as aJ,PK as aK,$M as aL,LH as aM,tl as aN,GH as aO,XH as aP,rK as aQ,oK as aR,FH as aS,iK as aT,cK as aU,HH as aV,WH as aW,eK as aX,tK as aY,$H as aZ,JH as a_,La as aa,xK as ab,fQ as ac,BT as ad,qT as ae,X$ as af,Y$ as ag,M$ as ah,G$ as ai,$$ as aj,ln as ak,H$ as al,LG as am,xM as an,gI as ao,Xc as ap,K$ as aq,Ip as ar,IK as as,Z_ as at,c$ as au,F$ as av,DM as aw,YM as ax,BH as ay,MH as az,qz as b,pQ as b$,nK as b0,QH as b1,aK as b2,YH as b3,sK as b4,lK as b5,JL as b6,ZH as b7,de as b8,PG as b9,uH as bA,lH as bB,dH as bC,mH as bD,sH as bE,cH as bF,ZG as bG,QG as bH,KG as bI,C$ as bJ,JG as bK,SH as bL,ov as bM,wH as bN,WG as bO,e$ as bP,kH as bQ,t$ as bR,n$ as bS,i$ as bT,a$ as bU,ml as bV,gs as bW,nL as bX,mx as bY,AH as bZ,CH as b_,MG as ba,qG as bb,BG as bc,TG as bd,DG as be,OG as bf,RG as bg,EG as bh,zG as bi,wG as bj,SG as bk,_G as bl,NG as bm,CG as bn,jG as bo,AG as bp,kG as bq,xG as br,vG as bs,bG as bt,A4 as bu,rH as bv,MK as bw,oH as bx,A$ as by,hQ as bz,lQ as c,UK as c$,nU as c0,PH as c1,UH as c2,NH as c3,zH as c4,DH as c5,_H as c6,rn as c7,z6 as c8,AM as c9,VH as cA,P6 as cB,w6 as cC,IG as cD,VG as cE,XG as cF,f$ as cG,g$ as cH,Ih as cI,$u as cJ,Rh as cK,j$ as cL,Ao as cM,lv as cN,B$ as cO,P$ as cP,V$ as cQ,L$ as cR,q$ as cS,I$ as cT,U$ as cU,pV as cV,G3 as cW,bV as cX,$3 as cY,H3 as cZ,O$ as c_,GG as ca,$G as cb,UG as cc,D6 as cd,HG as ce,EM as cf,FG as cg,NK as ch,U6 as ci,w$ as cj,zK as ck,EK as cl,DK as cm,_K as cn,bH as co,b$ as cp,v$ as cq,x$ as cr,S$ as cs,k$ as ct,yo as cu,Nh as cv,uQ as cw,Gu as cx,Th as cy,IH as cz,Q$ as d,hH as d0,kh as d1,jH as d2,VK as d3,GK as d4,R$ as d5,pH as d6,D$ as d7,T$ as d8,E$ as d9,JK as dA,Co as dB,nH as dC,tQ as dD,vR as dE,iH as dF,aH as dG,LK as da,C9 as db,TH as dc,EH as dd,OH as de,RH as df,eH as dg,Ga as dh,Qn as di,W$ as dj,QK as dk,FK as dl,ZK as dm,aU as dn,tH as dp,iQ as dq,sQ as dr,oQ as ds,YK as dt,XK as du,J$ as dv,eQ as dw,aQ as dx,WK as dy,nQ as dz,OK as e,On as f,TK as g,vv as h,ae as i,b6 as j,xn as k,$t as l,RK as m,qK as n,BK as o,N$ as p,z$ as q,_$ as r,dQ as s,wM as t,Oh as u,mQ as v,c0 as w,vH as x,yH as y,xH as z};