@webability/core 1.9.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dom.cjs +1 -1
- package/dist/dom.d.cts +1 -1
- package/dist/dom.d.ts +1 -1
- package/dist/dom.js +1 -1
- package/dist/engine.cjs +12 -12
- package/dist/engine.d.cts +24 -1
- package/dist/engine.d.ts +24 -1
- package/dist/engine.js +12 -12
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/playwright.cjs +1 -1
- package/dist/playwright.d.cts +1 -1
- package/dist/playwright.d.ts +1 -1
- package/dist/playwright.js +1 -1
- package/dist/{types-g-bI_MhR.d.cts → types-fjs6XhzQ.d.cts} +2 -0
- package/dist/{types-g-bI_MhR.d.ts → types-fjs6XhzQ.d.ts} +2 -0
- package/package.json +1 -1
package/dist/dom.cjs
CHANGED
|
@@ -397,7 +397,7 @@ Omit "fix" for passes.`;function FL(p){let d=p.items.map(({screenshot:v,...m})=>
|
|
|
397
397
|
Conformance level: ${p.level}
|
|
398
398
|
|
|
399
399
|
Findings:
|
|
400
|
-
${JSON.stringify(d,null,1)}`}function IL(p,d={}){let v=p.vision&&p.items.some(A=>A.screenshot),m=v?d.visionModel||yL:d.textModel||xg,h=[{type:"text",text:FL(p)}];if(v)for(let A of p.items)A.screenshot&&(h.push({type:"text",text:`Crop for ${A.id}:`}),h.push({type:"image_url",image_url:{url:`data:image/png;base64,${A.screenshot}`}}));return {model:m,temperature:0,max_tokens:4096,...m===xg&&d.disableTextModelReasoning?{reasoning:{enabled:false}}:{},messages:[{role:"system",content:RL},{role:"user",content:h}]}}function LL(p){let d=(p.baseUrl||bL).replace(/\/+$/,""),v=false;try{let m=new URL(d).hostname;v=m==="openrouter.ai"||m.endsWith(".openrouter.ai");}catch{}return async(m,h)=>{let A=await fetch(`${d}/chat/completions`,{method:"POST",signal:h,headers:{"Content-Type":"application/json",Authorization:`Bearer ${p.apiKey}`,"HTTP-Referer":"https://webability.io","X-Title":"WebAbility scanner judge"},body:JSON.stringify(IL(m,{visionModel:p.visionModel,textModel:p.textModel,disableTextModelReasoning:v}))});if(!A.ok)throw new Xn(`judge model HTTP ${A.status}`);let w=(await A.json()).choices?.[0]?.message?.content;if(typeof w=="string")return w;if(Array.isArray(w))return w.map(T=>typeof T?.text=="string"?T.text:"").join("");throw new Error("judge model returned no content")}}function ML(p){let d=p.apiUrl.replace(/\/+$/,"");return async(v,m)=>{let h=await fetch(`${d}/api/judge-incomplete`,{method:"POST",signal:m,redirect:"manual",headers:{"Content-Type":"application/json",...p.token?{Authorization:`Bearer ${p.token}`}:{},...p.internalSecret?{"x-mcp-internal":p.internalSecret}:{}},body:JSON.stringify(v)});if(h.status>=300&&h.status<400)throw new Xn(`judge endpoint redirected (HTTP ${h.status}); not followed`);if(!h.ok)throw new Xn(`judge endpoint HTTP ${h.status}`);return h.json()}}function PL(p){return p.transport?p.transport:p.apiKey?LL({apiKey:p.apiKey,baseUrl:p.baseUrl,visionModel:p.visionModel,textModel:p.textModel}):p.apiUrl?ML({apiUrl:p.apiUrl,token:p.apiToken,internalSecret:p.internalSecret}):null}function OL(p){return p.maxCropChars??(!p.transport&&!p.apiKey&&p.apiUrl?vL:void 0)}async function kg(p,d,v){let m={promoted:[],judged:[]},h=PL(v);if(d.length===0)return m;let A=v.level??"AA",b=v.timeoutMs??hL,w=Date.now()+b,T=Xa([...d],A);if(T.length===0)return m;let R=new Map;for(let N of T){let B=`${N.selector}|${ku(N)}`,F=R.get(B);F?F.members.push(N):R.set(B,{key:B,members:[N],rep:N,ctx:void 0,kind:"generic"});}let E={elements:{}};if(p)try{await p.evaluate("if(typeof globalThis.__name==='undefined'){globalThis.__name=function(t){return t}}"),E=await p.evaluate(DL,{selectors:[...R.keys()].map(N=>R.get(N).rep.selector),maxHtml:Dg});}catch{}for(let N of R.values())N.ctx=E.elements[N.rep.selector],N.ctx&&!N.ctx.found&&(N.ctx=void 0),N.kind=AL(N.rep,N.ctx);let k=new Map;for(let[N,B]of [...R]){if(!B.ctx)continue;let F=`${B.ctx.elementKey}|${ku(B.rep)}`,P=k.get(F);if(!P){k.set(F,B);continue}P.members.push(...B.members),R.delete(N);}let L={promoted:[],judged:[]},D=(N,B)=>{for(let F of N.members){if(B.verdict==="violation"){let P=qL(F,N,B);if(!P)continue;L.promoted.push(P);}L.judged.push({id:F.id.replace("axe-incomplete-","axe-"),type:F.type,verdict:B.verdict,reason:B.reason});}},y=[...R.values()].filter(N=>N.kind==="contrast");if(y.length&&p){for(let B of y)B.pixels=v.measured?.get(B.rep.selector);let N=y.filter(B=>!B.pixels).map(B=>B.rep.selector);if(N.length)try{for(let B of await bg(p,N))for(let F of y)F.rep.selector===B.selector&&(F.pixels=B);}catch{}}let _=[];for(let N of R.values()){let B=h?Po.get(_g(v.url,N.rep,N.ctx?.html??N.rep.html??"")):void 0;if(B){D(N,B);continue}let F=NL(N);if(F!=="drop"){if(F){D(N,F);continue}_.push(N);}}if(_.length===0||!h)return L;let C=v.vision!==false&&!!p&&typeof p.screenshot=="function",I=new Map,O=new Set,j=0,W=OL(v),K=N=>({id:N.rep.id,type:N.rep.type,wcag:N.rep.wcag,message:N.rep.message,selector:N.rep.selector,html:(N.ctx?.html??N.rep.html??"").slice(0,Dg),context:O.has(N.key)?{...Eg(N),cropNote:"no image attached: the crop was too large to send"}:Eg(N),...I.has(N.key)?{screenshot:I.get(N.key)}:{}}),G=C?mL:pL;for(let N=0;N<_.length;N+=G){let B=w-Date.now();if(B<=0)break;let F=_.slice(N,N+G);if(C){for(let ne of F){if(j>=gL||Date.now()>w)break;let se=await VL(p,ne.ctx,W);se&&(j++,se.data?I.set(ne.key,se.data):O.add(ne.key));}if(Date.now()>w)break}let P=new Map(F.map(ne=>[ne.rep.id,ne])),V=new AbortController,z=setTimeout(()=>V.abort(),B),J=null,Q=false,ie=Date.now();try{let ne=await Promise.race([h({url:v.url,level:A,vision:C,items:F.map(K)},V.signal),new Promise((se,we)=>V.signal.addEventListener("abort",()=>we(new Error("judge deadline"))))]);J=TL(ne),Tu()&&console.error(`ai judge: batch ${F.length} items, ${F.filter(se=>I.has(se.key)).length} crops, ${Date.now()-ie}ms, ${J?J.length+" verdicts":"MALFORMED: "+String(ne).slice(0,200)}`);}catch(ne){Tu()&&console.error(`ai judge: batch ${F.length} items failed after ${Date.now()-ie}ms: ${ne.message}`),J=null,Q=ne instanceof Xn;}finally{clearTimeout(z);}if(!J){if(V.signal.aborted||Q)break;continue}for(let ne of J){let se=P.get(ne.id);if(!se)continue;P.delete(ne.id);let we={verdict:ne.verdict,reason:EL(ne.reason),fix:ne.fix};Po.size>=wL&&Po.clear(),Po.set(_g(v.url,se.rep,se.ctx?.html??se.rep.html??""),we),D(se,we);}}return L}function NL(p){let d=p.ctx;if(p.kind==="alt"){if(d?.role==="presentation"||d?.role==="none")return {verdict:"pass",reason:"declared decorative (role=presentation)"};if(d?.ariaHidden)return {verdict:"pass",reason:"hidden from assistive technology (aria-hidden)"};if(d?.img){let{attrW:v,attrH:m,naturalW:h,naturalH:A}=d.img;if(v>0&&v<=1&&m>0&&m<=1||h>0&&h<=1&&A>0&&A<=1)return {verdict:"pass",reason:"1x1 tracking/spacer pixel"}}return d&&Ru(d)?d.control?d.control.name?{verdict:"pass",reason:`${d.control.tag} is named ("${d.control.name.slice(0,40)}"); the background image needs no text`}:null:{verdict:"pass",reason:"CSS background image on a non-interactive element; decorative"}:d?.parentInteractive?.text?{verdict:"pass",reason:`${d.parentInteractive.tag} is named by its visible link text ("${d.parentInteractive.text.slice(0,40)}"); alt may be empty`}:null}if(p.kind==="motion")return d?.reducedMotionHandled?{verdict:"pass",reason:"a prefers-reduced-motion: reduce rule stops this element's animation"}:null;if(p.kind==="contrast"){if(!p.pixels)return "drop";let v=Fu(p.rep,p.pixels.threshold);return p.pixels.worstRatio>=v?{verdict:"pass",reason:`measured ${p.pixels.worstRatio.toFixed(2)}:1 at worst behind the text, meets ${v}:1`}:p.pixels.bestRatio<v*.97?{verdict:"violation",reason:`measured ${p.pixels.bestRatio.toFixed(2)}:1 at best behind the text, below ${v}:1 everywhere`}:null}return p.rep.type==="duplicate_id"&&/first occurrence/i.test(p.rep.reviewReason||"")?{verdict:"pass",reason:"first occurrence of the id; the duplicate is reported on the later copies"}:null}function Eg(p){let d=p.ctx,v={};return p.rep.reviewReason&&(v.engineNote=p.rep.reviewReason),d&&(v.tag=d.tag,d.nearText&&(v.nearbyText=d.nearText),d.parentInteractive&&(v.parentControl=d.parentInteractive),p.kind==="alt"&&Ru(d)&&d.control&&(v.control={tag:d.control.tag,accessibleName:d.control.name}),p.kind==="alt"&&d.img&&(v.image={src:d.img.src,alt:d.img.alt,width:d.img.naturalW||d.img.attrW||d.rect.w,height:d.img.naturalH||d.img.attrH||d.rect.h}),p.kind==="contrast"&&p.pixels&&(v.fg=Un(p.pixels.fg),v.threshold=Fu(p.rep,p.pixels.threshold),v.bestRatio=Cg(p.pixels.bestRatio),v.worstRatio=Cg(p.pixels.worstRatio),v.fontSize=d.fontSize,v.fontWeight=d.fontWeight),p.kind==="generic"&&(v.fg=Un(d.fg),v.bg=Un(d.bg),v.size={w:Math.round(d.rect.w),h:Math.round(d.rect.h)})),v}function Fu(p,d){return p.wcag==="1.4.6"||p.type==="contrast_enhanced"?d===3?4.5:7:d}var Cg=p=>Math.round(p*100)/100;function qL(p,d,v){let m=kL(p);if(d.kind==="alt"){let A=CL(v.fix?.value);return A?Ru(d.ctx)?{...m,fix:{attribute:"aria-label",currentValue:"",suggestedValue:A,needsManualReview:false}}:{...m,fix:{attribute:"alt",currentValue:d.ctx?.img?.alt??p.fix?.currentValue??"",suggestedValue:A,needsManualReview:false}}:null}if(d.kind==="contrast"){let A=d.pixels;if(!A)return null;let b=Un(A.fg),w=Fu(p,A.threshold),T=A.worstBg?Un(A.worstBg):null,R=A.bestBg?Un(A.bestBg):null,E=y=>!!y&&!!T&&An(y,T)>=w&&(!R||An(y,R)>=w),k,L=SL(v.fix?.value),D=T?BL(b,T,w):null;return L&&L!==b.toLowerCase()&&E(L)?k=`color:${L} !important;`:E(D)?k=`color:${D} !important;`:R&&An(b,R)>=w&&(k=`background-color:${R} !important;`),{...m,impact:"serious",message:`contrast: ${b} text on its rendered background measures ${A.worstRatio.toFixed(2)}:1 at worst (${A.bestRatio.toFixed(2)}:1 at best, from pixels; judge: ${v.reason||"not readable"}), needs ${w}:1`,fix:{attribute:"style",currentValue:b,...k?{suggestedValue:k}:{},needsManualReview:true}}}let h=p.fix;return h?{...m,fix:h}:v.fix?.attribute&&v.fix.value?{...m,fix:{attribute:v.fix.attribute,currentValue:"",suggestedValue:v.fix.value,needsManualReview:true}}:m}function BL(p,d,v){let m=p.match(Sg);if(!m)return null;let h=parseInt(m[1],16),A=[h>>16&255,h>>8&255,h&255],b=R=>"#"+R.map(E=>Math.round(Math.min(255,Math.max(0,E))).toString(16).padStart(2,"0")).join(""),w=(R,E)=>b(A.map(k=>E?k*(1-R):k+(255-k)*R)),T=null;for(let R of [true,false]){if(An(w(1,R),d)<v)continue;let E=0,k=1;for(let D=0;D<24;D++){let y=(E+k)/2;An(w(y,R),d)>=v?k=y:E=y;}let L=w(k,R);An(L,d)>=v&&(!T||k<T.t)&&(T={t:k,hex:L});}return T?.hex??null}var HL=[1,.6,.35];async function VL(p,d,v){let m=p.screenshot;if(typeof m!="function"||!d||d.rect.w<2||d.rect.h<2||d.hidden)return null;try{let A=Math.min(1200,d.rect.w+16),b=Math.min(600,d.rect.h+16),w=d.rect.x+d.rect.w/2,T=d.rect.y+d.rect.h/2,R=globalThis.Buffer;if(!R)return null;let E=0;for(let k of v===void 0?[1]:HL){let L=Math.max(2,Math.round(A*k)),D=Math.max(2,Math.round(b*k)),y=k===1?Math.max(0,d.rect.x-8):Math.max(0,w-L/2),_=k===1?Math.max(0,d.rect.y-8):Math.max(0,T-D/2),C=await m.call(p,{clip:{x:y,y:_,width:L,height:D},fullPage:!0,type:"png",animations:"disabled"}),I=R.from(C).toString("base64");if(E=I.length,v===void 0||I.length<=v)return {data:I}}return Tu()&&console.error(`ai judge: crop for ${d.tag} left out (${E} base64 chars > ${v} at the smallest clip)`),{}}catch{return null}}function Tg(p=globalThis){if(p.__waDomKernelInstalled)return;function m(F){try{return document.querySelectorAll(F).length===1}catch{return false}}function h(F){if(!F||/^_?[Rr]_[a-z0-9]+_/.test(F)||/^:[Rr][0-9a-z]+:/.test(F)||/^«[Rr][0-9a-z]+»/.test(F)||/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(F)||/^[\w-]*(react|gatsby|root|__next|hash|uuid)[\w-]*$/i.test(F)||/^(radix|headlessui|mui|mantine|cdk|ng|ember|downshift|react-select|react-aria|floating-ui)[-_:]/i.test(F)||/[0-9a-f]{16,}/i.test(F))return true;for(var P=F.split(/[-_:.]/).filter(Boolean),V=P.some(function(ne){var se=(ne.match(/[a-z]/gi)||[]).length,we=(ne.match(/[aeiou]/gi)||[]).length;return se>=4&&we>=1&&!/\d/.test(ne)}),z=0;z<P.length;z++){var J=P[z];if(!V&&/^\d{7,}$/.test(J)||/^[0-9a-f]{13}$/i.test(J)&&/[a-f]/i.test(J)&&/\d/.test(J))return true;if(J.length>=7&&/\d/.test(J)&&/[a-z]/i.test(J)){var Q=(J.match(/[aeiou]/gi)||[]).length,ie=(J.match(/[a-z]/gi)||[]).length;if(ie>=4&&Q/ie<.2||(J.match(/\d[a-z]|[a-z]\d/gi)||[]).length>=4)return true}}return false}function A(F){if(!F.classList||!F.classList.length)return [];for(var P=[],V=0;V<F.classList.length&&P.length<3;V++){var z=F.classList[V];z&&(/^(active|open|focus|hover|disabled|selected|hidden|sr-only|css-[a-z0-9]{4,}|jss[0-9]+|sc-[a-z0-9]+|[a-z]+-[a-f0-9]{6,}|_\d|chakra-|MuiBox-|MuiButton-)$/i.test(z)||/^[a-z][a-z0-9_-]{1,40}$/i.test(z)&&P.push(z));}return P}function b(F){var P=F.tagName.toLowerCase(),V=A(F);return V.length?P+"."+V.map(function(z){return CSS.escape(z)}).join("."):P}function w(F){var P=F.tagName.toLowerCase();if(!F.parentElement)return P;var V=Array.from(F.parentElement.children).filter(function(z){return z.tagName===F.tagName});return V.length===1?P:P+":nth-of-type("+(V.indexOf(F)+1)+")"}function T(F){for(var P=[],V=F;V&&V!==document.body&&V!==document.documentElement;)P.unshift(w(V)),V=V.parentElement;return P.join(" > ")}function R(F){if(!F||F===document.body||F===document.documentElement)return "body";if(F.id&&!h(F.id)){var P="#"+CSS.escape(F.id);if(m(P))return P}for(var V=["data-testid","data-cy","data-qa","data-test","data-component","data-id","data-key"],z=0;z<V.length;z++){var J=F.getAttribute(V[z]);if(J&&J.length<60){var Q=F.tagName.toLowerCase()+"["+V[z]+'="'+CSS.escape(J)+'"]';if(m(Q))return Q}}var ie=b(F);if(ie.indexOf(".")!==-1&&m(ie))return ie;for(var ne=[],se=null,we=F;we&&we!==document.body&&we!==document.documentElement;){if(we.id&&!h(we.id)){var Te="#"+CSS.escape(we.id);if(m(Te)){se=Te;break}}var Ee=b(we);if(Ee.indexOf(".")!==-1&&m(Ee)){se=Ee;break}if(ne.unshift(we),we=we.parentElement,ne.length>6)break}var De=ne.map(function(Ce){var kt=b(Ce);if(kt.indexOf(".")!==-1&&Ce.parentElement){var Tr=Ce.parentElement.querySelectorAll(":scope > "+kt);if(Tr.length===1)return "> "+kt}return "> "+w(Ce)}).join(" "),Ne="";if(se&&De?Ne=(se+" "+De).slice(0,200):se&&(Ne=se),Ne&&m(Ne))return Ne;var Re=T(F);return Re&&m(Re)?Re:Ne||Re||b(F)}function E(F){if(!F)return false;let P=getComputedStyle(F);if(P.display==="none"||P.visibility==="hidden")return false;let V=parseFloat(P.opacity);if(!isNaN(V)&&V<.1)return false;if(!isNaN(V)&&V<.5){var z=P.transform||"";if(z&&z!=="none"&&z!=="matrix(1, 0, 0, 1, 0, 0)")return false}let J=F.getBoundingClientRect();if(J.width<=1||J.height<=1)return false;var Q=P.clipPath||"";return !(Q!=="none"&&/inset\(\s*(?:50|100)%/.test(Q)||/rect\(\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*\)/.test(P.clip||""))}function k(F){if(!F)return "";for(var P=[],V=String(F).trim().split(/\s+/),z=0;z<V.length;z++){var J=document.getElementById(V[z]);if(J){var Q=(J.textContent||"").trim();Q&&P.push(Q);}}return P.join(" ").replace(/\s+/g," ").trim()}function L(F){var P=k(F.getAttribute("aria-labelledby"));if(P)return P;var V=F.getAttribute("aria-label")||"";if(V.trim())return V.trim();var z=F.tagName?F.tagName.toLowerCase():"";if(z==="input"||z==="select"||z==="textarea"){if(F.id)try{var J=document.querySelector('label[for="'+CSS.escape(F.id)+'"]');if(J&&(J.textContent||"").trim())return (J.textContent||"").trim().replace(/\s+/g," ")}catch{}var Q=F.closest?F.closest("label"):null;if(Q&&(Q.textContent||"").trim())return (Q.textContent||"").trim().replace(/\s+/g," ")}var ie=(F.textContent||"").trim().replace(/\s+/g," ");if(!ie&&F.querySelector){var ne=F.querySelector('img[alt]:not([alt=""])');if(ne&&(ie=(ne.getAttribute("alt")||"").trim()),!ie){var se=F.querySelector("svg > title");se&&(ie=(se.textContent||"").trim());}}if(ie)return ie;var we=F.getAttribute("title")||"";return we.trim()}let D="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=EquallyAI],[id*=ae_],[class*=ae-exclude],[id*=goog-gt],[class*=goog-te],[id*=recaptcha],[class*=intercom],[class*=drift-],[class*=crisp-],[class*=tawk-],[class*=hubspot-],[class*=fb-],[class*=wistia],#wpadminbar,[class*=cmplz-btn],[class*=cmplz-link],[id*=cmplz-],[class*=onetrust],[class*=cookiebot],[class*=borlabs],[class*=brlbs-],[id*=wp-ada-compliance],[class*=wp-ada-compliance],[id*=webability-widget],[class*=webability-a11y]";function y(F){return F?F.closest(D)!==null:false}function _(F){if(!F)return false;if(F.getAttribute("aria-hidden")==="true"||F.getAttribute("role")==="presentation"||F.getAttribute("role")==="none")return true;let P=F.parentElement,V=0;for(;P&&P!==document.body&&V<6;){if(P.getAttribute("aria-hidden")==="true")return true;P=P.parentElement,V++;}return false}function C(F){let P=F.naturalWidth||F.width||0,V=F.naturalHeight||F.height||0;if(P<=2&&V<=2)return true;let z=F.getBoundingClientRect();if(z.width<=2&&z.height<=2)return true;let J=(F.src||"").toLowerCase();return !!(J.includes("pixel")||J.includes("beacon")||J.includes("tracker")||J.includes("analytics")||J.includes("adsrvr")||J.includes("doubleclick")||J.includes("facebook.com/tr"))}function I(F){var P=F.closest("article,section,li,.card,[class*=card],[class*=post],[class*=item],[class*=product],[class*=entry]");P||(P=F.closest("div,nav,main,aside,header,footer"));var V=P?P.querySelector("h1,h2,h3,h4,h5,h6"):null,z=V?(V.textContent||"").trim().slice(0,80):"",J=F.parentElement,Q=J?J.tagName.toLowerCase():"",ie=J&&J.getAttribute("role")||"",ne="";if(P){var se=P.querySelector("p,.description,.excerpt,[class*=desc],[class*=summary]");se&&(ne=(se.textContent||"").trim().slice(0,120));}var we="";if(P){var Te=P.querySelector('img[alt]:not([alt=""])');Te&&(we=(Te.getAttribute("alt")||"").trim().slice(0,60));}return {nearbyHeading:z,parentTag:Q,parentRole:ie,cardText:ne,imgAlt:we}}var O={times:"Close",x:"Close","x-lg":"Close","x-circle":"Close","x-mark":"Close",close:"Close","close-circle":"Close",clear:"Clear",cancel:"Cancel",dismiss:"Dismiss","chevron-right":"Next","arrow-right":"Next","caret-right":"Next","angle-right":"Next","chevron-left":"Previous","arrow-left":"Previous","caret-left":"Previous","angle-left":"Previous","chevron-up":"Collapse","arrow-up":"Up","caret-up":"Collapse","angle-up":"Collapse","chevron-down":"Expand","arrow-down":"Down","caret-down":"Expand","angle-down":"Expand",menu:"Menu",bars:"Menu",hamburger:"Menu",list:"Menu",grid:"Grid view",th:"Grid view",search:"Search","magnifying-glass":"Search",magnify:"Search",zoom:"Zoom",user:"User profile",person:"User profile",profile:"User profile","account-circle":"User profile",cart:"Shopping cart","shopping-cart":"Shopping cart",basket:"Shopping cart",bag:"Shopping bag",heart:"Favorite",bookmark:"Bookmark",star:"Rate",home:"Home",house:"Home",gear:"Settings",cog:"Settings",settings:"Settings",tool:"Tools",trash:"Delete","trash-can":"Delete",delete:"Delete",edit:"Edit",pencil:"Edit",pen:"Edit",plus:"Add",add:"Add","plus-circle":"Add",minus:"Remove","minus-circle":"Remove",check:"Confirm","check-circle":"Confirm",checkmark:"Confirm",info:"Information","info-circle":"Information",question:"Help","question-circle":"Help",help:"Help",warning:"Warning",exclamation:"Warning","exclamation-triangle":"Warning",alert:"Alert","external-link":"Open in new tab","external-link-alt":"Open in new tab","box-arrow-up-right":"Open in new tab",download:"Download",upload:"Upload",share:"Share","share-alt":"Share",copy:"Copy",clipboard:"Copy to clipboard",print:"Print",save:"Save",envelope:"Email",email:"Email",mail:"Email",at:"Email",phone:"Phone",telephone:"Phone",mobile:"Mobile phone",location:"Location","map-marker":"Location","map-pin":"Location","geo-alt":"Location",calendar:"Calendar","calendar-alt":"Calendar",clock:"Time",stopwatch:"Timer",eye:"Show","eye-slash":"Hide","eye-off":"Hide",lock:"Lock",unlock:"Unlock",padlock:"Lock",filter:"Filter",sliders:"Adjust",sort:"Sort","sort-alpha-down":"Sort ascending","sort-alpha-up":"Sort descending",refresh:"Refresh",reload:"Refresh",sync:"Refresh","arrows-rotate":"Refresh",play:"Play","play-circle":"Play",pause:"Pause",stop:"Stop","volume-up":"Volume up","volume-down":"Volume down","volume-mute":"Mute",mute:"Mute",speaker:"Audio",twitter:"Twitter","x-twitter":"X (Twitter)","square-x-twitter":"X (Twitter)",facebook:"Facebook","facebook-f":"Facebook","facebook-square":"Facebook","square-facebook":"Facebook","facebook-messenger":"Facebook Messenger",instagram:"Instagram","square-instagram":"Instagram",linkedin:"LinkedIn","linkedin-in":"LinkedIn","square-linkedin":"LinkedIn",youtube:"YouTube","youtube-square":"YouTube","square-youtube":"YouTube",github:"GitHub","github-alt":"GitHub",gitlab:"GitLab",bitbucket:"Bitbucket",tiktok:"TikTok",pinterest:"Pinterest","pinterest-p":"Pinterest","square-pinterest":"Pinterest",rss:"RSS feed","rss-square":"RSS feed",snapchat:"Snapchat","snapchat-ghost":"Snapchat",reddit:"Reddit","reddit-alien":"Reddit",discord:"Discord",slack:"Slack",whatsapp:"WhatsApp",telegram:"Telegram","telegram-plane":"Telegram",vimeo:"Vimeo","vimeo-v":"Vimeo",twitch:"Twitch",tumblr:"Tumblr",medium:"Medium",dribbble:"Dribbble",behance:"Behance",flickr:"Flickr",threads:"Threads",mastodon:"Mastodon",bluesky:"Bluesky",meetup:"Meetup",weibo:"Weibo",wechat:"WeChat",line:"Line",viber:"Viber",skype:"Skype",microsoft:"Microsoft",apple:"Apple",google:"Google","google-plus":"Google+",yelp:"Yelp",tripadvisor:"TripAdvisor",spotify:"Spotify",soundcloud:"SoundCloud",amazon:"Amazon",etsy:"Etsy",ebay:"eBay","arrow-up-right-from-square":"Open in new tab","square-arrow-up-right":"Open in new tab","up-right-from-square":"Open in new tab",back:"Back",forward:"Forward",return:"Return",reply:"Reply","reply-all":"Reply all","forward-arrow":"Forward",redo:"Redo",undo:"Undo","undo-alt":"Undo","rotate-left":"Undo","rotate-right":"Redo",expand:"Expand","expand-arrows-alt":"Expand",compress:"Collapse",minimize:"Minimize",maximize:"Maximize",fullscreen:"Enter fullscreen","fullscreen-exit":"Exit fullscreen",move:"Move",arrows:"Move","arrows-alt":"Move",drag:"Drag",grip:"Drag handle","grip-vertical":"Drag handle","grip-lines":"Drag handle",ellipsis:"More actions","ellipsis-v":"More actions","ellipsis-vertical":"More actions","ellipsis-h":"More actions","ellipsis-horizontal":"More actions","more-vert":"More actions","more-horiz":"More actions","more-vertical":"More actions","more-horizontal":"More actions","dots-vertical":"More actions","three-dots":"More actions","three-dots-vertical":"More actions","play-fill":"Play","pause-fill":"Pause","stop-fill":"Stop","play-pause":"Play/pause",backward:"Rewind","forward-step":"Next track","backward-step":"Previous track","fast-forward":"Fast forward",rewind:"Rewind","skip-forward":"Skip forward","skip-backward":"Skip backward","skip-next":"Next track","skip-previous":"Previous track",volume:"Volume","volume-off":"Mute","volume-x":"Mute","speaker-mute":"Mute",headphones:"Audio",microphone:"Microphone",mic:"Microphone","mic-off":"Mute microphone","microphone-slash":"Mute microphone",video:"Video","video-camera":"Video",camera:"Camera","camera-retro":"Camera",picture:"Picture",image:"Image",images:"Images",photo:"Photo",film:"Video",record:"Record",broadcast:"Broadcast","chevron-right-circle":"Next","chevron-left-circle":"Previous","double-arrow-right":"Next","double-arrow-left":"Previous","angles-right":"Next","angles-left":"Previous","angles-up":"Collapse","angles-down":"Expand",send:"Send","paper-plane":"Send",submit:"Submit",paperclip:"Attach file",attach:"Attach","file-attachment":"Attach file",signature:"Signature","pen-to-square":"Edit","pencil-square":"Edit","pencil-alt":"Edit","square-pen":"Edit",file:"File","file-alt":"Text file","file-text":"Text file","file-lines":"Text file","file-pdf":"PDF document","file-word":"Word document","file-excel":"Excel spreadsheet","file-powerpoint":"PowerPoint presentation","file-zip":"ZIP archive","file-archive":"Archive","file-image":"Image file","file-video":"Video file","file-audio":"Audio file","file-code":"Code file","file-csv":"CSV file",folder:"Folder","folder-open":"Open folder",book:"Book","book-open":"Book",newspaper:"News","bookmark-fill":"Bookmark","cart-plus":"Add to cart","cart-check":"Added to cart","cart-arrow-down":"Add to cart",truck:"Shipping",box:"Package",gift:"Gift",tag:"Tag",tags:"Tags",percent:"Discount","credit-card":"Credit card",wallet:"Wallet",money:"Money","money-bill":"Money","dollar-sign":"Price","euro-sign":"Price","pound-sign":"Price",receipt:"Receipt",store:"Store",shop:"Shop","basket-plus":"Add to basket","heart-fill":"Favorited","star-fill":"Rated","thumbs-up":"Like","thumbs-down":"Dislike",like:"Like",dislike:"Dislike",comment:"Comment",comments:"Comments",chat:"Chat","chat-bubble":"Chat",message:"Message","message-circle":"Message","message-square":"Message",bell:"Notifications","bell-fill":"Notifications",notifications:"Notifications",inbox:"Inbox",archive:"Archive",flag:"Flag",pin:"Pin","pin-fill":"Pinned",thumbtack:"Pin","sign-in":"Sign in","sign-in-alt":"Sign in","sign-out":"Sign out","sign-out-alt":"Sign out","log-in":"Log in","log-out":"Log out",logout:"Log out",login:"Log in","user-plus":"Add user","user-minus":"Remove user","user-circle":"User profile","user-avatar":"User avatar",users:"Users",key:"Password",shield:"Security","shield-check":"Security verified","id-card":"ID card","id-badge":"ID badge","universal-access":"Accessibility","accessible-icon":"Accessibility",wheelchair:"Wheelchair access",braille:"Braille","sign-language":"Sign language","closed-captioning":"Captions",cc:"Captions",sun:"Light mode",moon:"Dark mode",contrast:"Contrast",palette:"Theme",brush:"Theme",globe:"Global",earth:"Global",map:"Map",compass:"Compass",directions:"Directions",route:"Route",navigation:"Navigation",crosshairs:"Locate",spinner:"Loading",loader:"Loading",loading:"Loading","circle-notch":"Loading",hourglass:"Waiting","clock-fill":"Time","check-square":"Confirm","square-check":"Confirm","circle-check":"Confirm","circle-x":"Close",ban:"Blocked",block:"Block","times-circle":"Close",xmark:"Close","xmark-circle":"Close",columns:"Columns view",rows:"Rows view",layout:"Layout",sidebar:"Sidebar","sidebar-toggle":"Toggle sidebar","panel-left":"Left panel","panel-right":"Right panel","list-view":"List view","grid-view":"Grid view",wifi:"Wi-Fi","wifi-off":"Wi-Fi off",bluetooth:"Bluetooth",signal:"Signal",battery:"Battery","battery-full":"Battery full",plug:"Plug",power:"Power","power-off":"Power off","chart-bar":"Bar chart","chart-line":"Line chart","chart-pie":"Pie chart","chart-area":"Area chart","bar-chart":"Bar chart","line-chart":"Line chart","pie-chart":"Pie chart",analytics:"Analytics",statistics:"Statistics","trending-up":"Trending up","trending-down":"Trending down"},j=/^(fa|fas|far|fab|fal|fad|fass|bi|bi-icon|material-icons|material-symbols|ion|ionicon|feather|lucide|dashicons|glyphicon|icofont|heroicon)-/;function W(F,P,V){var z=[];if(F)for(var J=F.split(/\s+/),Q=0;Q<J.length;Q++){var ie=J[Q];if(ie){var ne=ie.toLowerCase().replace(j,"").replace(/^icon-/,"");ne&&ne!==ie.toLowerCase()&&z.push(ne);}}if(P&&z.push(P.toLowerCase().trim()),V){var se=V.trim().toLowerCase();se.length<30&&/^[a-z_-]+$/.test(se)&&z.push(se.replace(/_/g,"-"));}for(var we=0;we<z.length;we++)if(O[z[we]])return O[z[we]];for(var Te=0;Te<z.length;Te++)for(var Ee=z[Te].split("-"),De=0;De<Ee.length;De++)if(O[Ee[De]])return O[Ee[De]];return null}var K;function G(F){if(!F)return null;var P=F.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+))?\s*\)/);if(P)return [parseInt(P[1],10),parseInt(P[2],10),parseInt(P[3],10),P[4]?parseFloat(P[4]):1];if(F==="transparent"||F==="none")return [0,0,0,0];try{if(K===void 0){var V=document.createElement("canvas");V.width=1,V.height=1,K=V.getContext("2d",{willReadFrequently:!0});}if(!K)return null;K.clearRect(0,0,1,1),K.fillStyle="#000000",K.fillStyle=F,K.fillRect(0,0,1,1);var z=K.getImageData(0,0,1,1).data;return [z[0],z[1],z[2],z[3]/255]}catch{return null}}function N(F,P,V){var z=function(J){var Q=J/255;return Q<=.03928?Q/12.92:Math.pow((Q+.055)/1.055,2.4)};return .2126*z(F)+.7152*z(P)+.0722*z(V)}function B(F,P){var V=N(F[0],F[1],F[2]),z=N(P[0],P[1],P[2]),J=Math.max(V,z),Q=Math.min(V,z);return (J+.05)/(Q+.05)}Object.assign(p,{__isUnique:m,__isGeneratedId:h,__cleanClasses:A,__tagWithClass:b,__nthSelector:w,__fullPath:T,uniqueSel:R,isVisible:E,__resolveIdRefs:k,getAccessibleName:L,isWidget:y,isHiddenFromAT:_,isTrackingPixel:C,getNearbyContext:I,__ICON_LABELS:O,__ICON_PREFIX_STRIP:j,lookupIconLabel:W,__colorCtx:K,parseCssColor:G,relLuminance:N,contrastRatio:B}),p.__waDomKernelInstalled=true;}var Rg="1.9.0";function jL(p){return {async evaluate(d,...v){if(typeof d!="function")throw new Error("string evaluate not supported in DOM mode");return await d(...v)},async addScriptTag(){},url:()=>p.location.href}}async function cO(p={}){let d=p.window??globalThis;if(typeof d.document>"u")throw new Error("scanDocument requires a DOM (window.document)");Tg(d);let v=jL(d),m=[],h=[],A=[],b=[];await pu(v);let w=await ug(v,h,A,{skipFocusMutating:p.interactiveChecks!==true,internalBugs:b});if(m.push(...w.map(gg)),p.includeAxe!==false)try{let L=await Promise.resolve().then(()=>E3(Ig(),1)),y=await(L.default??L).run(d.document,{runOnly:{type:"tag",values:Du(p.wcagTags??xu,p.level)},rules:hg(Du(p.wcagTags??xu,p.level)),resultTypes:["violations","incomplete"]});for(let _ of y.violations??[])for(let C of _.nodes??[])m.push({id:`axe-${_.id}-${Lo(Ya(C.target))}`,source:"axe-core",type:_.id,wcag:_u(_.tags),level:Eu(_.tags),impact:Au(_.impact),message:_.help,selector:Ya(C.target),html:C.html?.slice(0,300)});for(let _ of y.incomplete??[])for(let C of _.nodes??[])m.push({id:`axe-incomplete-${_.id}-${Lo(Ya(C.target))}`,source:"axe-core",type:_.id,wcag:_u(_.tags),level:Eu(_.tags),impact:Au(_.impact),message:_.help,selector:Ya(C.target),html:C.html?.slice(0,300),confidence:"needs_review",reviewReason:"axe-core flagged this as needing human review"});}catch{A.push("axe:failed \u2014 axe-core did not complete; results are detector-only");}let T=yu(Io(m).verdicts);try{T=await fg(v,T);}catch{}try{T=await pg(v,T);}catch{}try{T=await cg(v,T);}catch{}T=Xa(T,p.level??"AA");let R=Io(T),E=R.verdicts,k;if(p.judge)try{let L=Xa([...Io(m).undecided,...R.undecided],p.level??"AA"),D=await kg(v,L,{...p.judge,url:d.location.href,level:p.judge.level??p.level??"AA",vision:!1});D.judged.length&&(k=D.judged),D.promoted.length&&(E=yu([...E,...D.promoted]));}catch{}try{E=await gu(v,E,b);}catch{}return hu(b,await mu(v)),{url:d.location.href,timestamp:new Date().toISOString(),engine:Rg,issues:E,internal_bugs:b,incomplete:[],...k?{judged:k}:{},...h.length?{truncated:h}:{},...A.length?{engineWarnings:A}:{},summary:vg(E)}}/*! Bundled license information:
|
|
400
|
+
${JSON.stringify(d,null,1)}`}function IL(p,d={}){let v=p.vision&&p.items.some(A=>A.screenshot),m=v?d.visionModel||yL:d.textModel||xg,h=[{type:"text",text:FL(p)}];if(v)for(let A of p.items)A.screenshot&&(h.push({type:"text",text:`Crop for ${A.id}:`}),h.push({type:"image_url",image_url:{url:`data:image/png;base64,${A.screenshot}`}}));return {model:m,temperature:0,max_tokens:4096,...m===xg&&d.disableTextModelReasoning?{reasoning:{enabled:false}}:{},messages:[{role:"system",content:RL},{role:"user",content:h}]}}function LL(p){let d=(p.baseUrl||bL).replace(/\/+$/,""),v=false;try{let m=new URL(d).hostname;v=m==="openrouter.ai"||m.endsWith(".openrouter.ai");}catch{}return async(m,h)=>{let A=await fetch(`${d}/chat/completions`,{method:"POST",signal:h,headers:{"Content-Type":"application/json",Authorization:`Bearer ${p.apiKey}`,"HTTP-Referer":"https://webability.io","X-Title":"WebAbility scanner judge"},body:JSON.stringify(IL(m,{visionModel:p.visionModel,textModel:p.textModel,disableTextModelReasoning:v}))});if(!A.ok)throw new Xn(`judge model HTTP ${A.status}`);let w=(await A.json()).choices?.[0]?.message?.content;if(typeof w=="string")return w;if(Array.isArray(w))return w.map(T=>typeof T?.text=="string"?T.text:"").join("");throw new Error("judge model returned no content")}}function ML(p){let d=p.apiUrl.replace(/\/+$/,"");return async(v,m)=>{let h=await fetch(`${d}/api/judge-incomplete`,{method:"POST",signal:m,redirect:"manual",headers:{"Content-Type":"application/json",...p.token?{Authorization:`Bearer ${p.token}`}:{},...p.internalSecret?{"x-mcp-internal":p.internalSecret}:{}},body:JSON.stringify(v)});if(h.status>=300&&h.status<400)throw new Xn(`judge endpoint redirected (HTTP ${h.status}); not followed`);if(!h.ok)throw new Xn(`judge endpoint HTTP ${h.status}`);return h.json()}}function PL(p){return p.transport?p.transport:p.apiKey?LL({apiKey:p.apiKey,baseUrl:p.baseUrl,visionModel:p.visionModel,textModel:p.textModel}):p.apiUrl?ML({apiUrl:p.apiUrl,token:p.apiToken,internalSecret:p.internalSecret}):null}function OL(p){return p.maxCropChars??(!p.transport&&!p.apiKey&&p.apiUrl?vL:void 0)}async function kg(p,d,v){let m={promoted:[],judged:[]},h=PL(v);if(d.length===0)return m;let A=v.level??"AA",b=v.timeoutMs??hL,w=Date.now()+b,T=Xa([...d],A);if(T.length===0)return m;let R=new Map;for(let N of T){let B=`${N.selector}|${ku(N)}`,F=R.get(B);F?F.members.push(N):R.set(B,{key:B,members:[N],rep:N,ctx:void 0,kind:"generic"});}let E={elements:{}};if(p)try{await p.evaluate("if(typeof globalThis.__name==='undefined'){globalThis.__name=function(t){return t}}"),E=await p.evaluate(DL,{selectors:[...R.keys()].map(N=>R.get(N).rep.selector),maxHtml:Dg});}catch{}for(let N of R.values())N.ctx=E.elements[N.rep.selector],N.ctx&&!N.ctx.found&&(N.ctx=void 0),N.kind=AL(N.rep,N.ctx);let k=new Map;for(let[N,B]of [...R]){if(!B.ctx)continue;let F=`${B.ctx.elementKey}|${ku(B.rep)}`,P=k.get(F);if(!P){k.set(F,B);continue}P.members.push(...B.members),R.delete(N);}let L={promoted:[],judged:[]},D=(N,B)=>{for(let F of N.members){if(B.verdict==="violation"){let P=qL(F,N,B);if(!P)continue;L.promoted.push(P);}L.judged.push({id:F.id.replace("axe-incomplete-","axe-"),type:F.type,verdict:B.verdict,reason:B.reason});}},y=[...R.values()].filter(N=>N.kind==="contrast");if(y.length&&p){for(let B of y)B.pixels=v.measured?.get(B.rep.selector);let N=y.filter(B=>!B.pixels).map(B=>B.rep.selector);if(N.length)try{for(let B of await bg(p,N))for(let F of y)F.rep.selector===B.selector&&(F.pixels=B);}catch{}}let _=[];for(let N of R.values()){let B=h?Po.get(_g(v.url,N.rep,N.ctx?.html??N.rep.html??"")):void 0;if(B){D(N,B);continue}let F=NL(N);if(F!=="drop"){if(F){D(N,F);continue}_.push(N);}}if(_.length===0||!h)return L;let C=v.vision!==false&&!!p&&typeof p.screenshot=="function",I=new Map,O=new Set,j=0,W=OL(v),K=N=>({id:N.rep.id,type:N.rep.type,wcag:N.rep.wcag,message:N.rep.message,selector:N.rep.selector,html:(N.ctx?.html??N.rep.html??"").slice(0,Dg),context:O.has(N.key)?{...Eg(N),cropNote:"no image attached: the crop was too large to send"}:Eg(N),...I.has(N.key)?{screenshot:I.get(N.key)}:{}}),G=C?mL:pL;for(let N=0;N<_.length;N+=G){let B=w-Date.now();if(B<=0)break;let F=_.slice(N,N+G);if(C){for(let ne of F){if(j>=gL||Date.now()>w)break;let se=await VL(p,ne.ctx,W);se&&(j++,se.data?I.set(ne.key,se.data):O.add(ne.key));}if(Date.now()>w)break}let P=new Map(F.map(ne=>[ne.rep.id,ne])),V=new AbortController,z=setTimeout(()=>V.abort(),B),J=null,Q=false,ie=Date.now();try{let ne=await Promise.race([h({url:v.url,level:A,vision:C,items:F.map(K)},V.signal),new Promise((se,we)=>V.signal.addEventListener("abort",()=>we(new Error("judge deadline"))))]);J=TL(ne),Tu()&&console.error(`ai judge: batch ${F.length} items, ${F.filter(se=>I.has(se.key)).length} crops, ${Date.now()-ie}ms, ${J?J.length+" verdicts":"MALFORMED: "+String(ne).slice(0,200)}`);}catch(ne){Tu()&&console.error(`ai judge: batch ${F.length} items failed after ${Date.now()-ie}ms: ${ne.message}`),J=null,Q=ne instanceof Xn;}finally{clearTimeout(z);}if(!J){if(V.signal.aborted||Q)break;continue}for(let ne of J){let se=P.get(ne.id);if(!se)continue;P.delete(ne.id);let we={verdict:ne.verdict,reason:EL(ne.reason),fix:ne.fix};Po.size>=wL&&Po.clear(),Po.set(_g(v.url,se.rep,se.ctx?.html??se.rep.html??""),we),D(se,we);}}return L}function NL(p){let d=p.ctx;if(p.kind==="alt"){if(d?.role==="presentation"||d?.role==="none")return {verdict:"pass",reason:"declared decorative (role=presentation)"};if(d?.ariaHidden)return {verdict:"pass",reason:"hidden from assistive technology (aria-hidden)"};if(d?.img){let{attrW:v,attrH:m,naturalW:h,naturalH:A}=d.img;if(v>0&&v<=1&&m>0&&m<=1||h>0&&h<=1&&A>0&&A<=1)return {verdict:"pass",reason:"1x1 tracking/spacer pixel"}}return d&&Ru(d)?d.control?d.control.name?{verdict:"pass",reason:`${d.control.tag} is named ("${d.control.name.slice(0,40)}"); the background image needs no text`}:null:{verdict:"pass",reason:"CSS background image on a non-interactive element; decorative"}:d?.parentInteractive?.text?{verdict:"pass",reason:`${d.parentInteractive.tag} is named by its visible link text ("${d.parentInteractive.text.slice(0,40)}"); alt may be empty`}:null}if(p.kind==="motion")return d?.reducedMotionHandled?{verdict:"pass",reason:"a prefers-reduced-motion: reduce rule stops this element's animation"}:null;if(p.kind==="contrast"){if(!p.pixels)return "drop";let v=Fu(p.rep,p.pixels.threshold);return p.pixels.worstRatio>=v?{verdict:"pass",reason:`measured ${p.pixels.worstRatio.toFixed(2)}:1 at worst behind the text, meets ${v}:1`}:p.pixels.bestRatio<v*.97?{verdict:"violation",reason:`measured ${p.pixels.bestRatio.toFixed(2)}:1 at best behind the text, below ${v}:1 everywhere`}:null}return p.rep.type==="duplicate_id"&&/first occurrence/i.test(p.rep.reviewReason||"")?{verdict:"pass",reason:"first occurrence of the id; the duplicate is reported on the later copies"}:null}function Eg(p){let d=p.ctx,v={};return p.rep.reviewReason&&(v.engineNote=p.rep.reviewReason),d&&(v.tag=d.tag,d.nearText&&(v.nearbyText=d.nearText),d.parentInteractive&&(v.parentControl=d.parentInteractive),p.kind==="alt"&&Ru(d)&&d.control&&(v.control={tag:d.control.tag,accessibleName:d.control.name}),p.kind==="alt"&&d.img&&(v.image={src:d.img.src,alt:d.img.alt,width:d.img.naturalW||d.img.attrW||d.rect.w,height:d.img.naturalH||d.img.attrH||d.rect.h}),p.kind==="contrast"&&p.pixels&&(v.fg=Un(p.pixels.fg),v.threshold=Fu(p.rep,p.pixels.threshold),v.bestRatio=Cg(p.pixels.bestRatio),v.worstRatio=Cg(p.pixels.worstRatio),v.fontSize=d.fontSize,v.fontWeight=d.fontWeight),p.kind==="generic"&&(v.fg=Un(d.fg),v.bg=Un(d.bg),v.size={w:Math.round(d.rect.w),h:Math.round(d.rect.h)})),v}function Fu(p,d){return p.wcag==="1.4.6"||p.type==="contrast_enhanced"?d===3?4.5:7:d}var Cg=p=>Math.round(p*100)/100;function qL(p,d,v){let m=kL(p);if(d.kind==="alt"){let A=CL(v.fix?.value);return A?Ru(d.ctx)?{...m,fix:{attribute:"aria-label",currentValue:"",suggestedValue:A,needsManualReview:false}}:{...m,fix:{attribute:"alt",currentValue:d.ctx?.img?.alt??p.fix?.currentValue??"",suggestedValue:A,needsManualReview:false}}:null}if(d.kind==="contrast"){let A=d.pixels;if(!A)return null;let b=Un(A.fg),w=Fu(p,A.threshold),T=A.worstBg?Un(A.worstBg):null,R=A.bestBg?Un(A.bestBg):null,E=y=>!!y&&!!T&&An(y,T)>=w&&(!R||An(y,R)>=w),k,L=SL(v.fix?.value),D=T?BL(b,T,w):null;return L&&L!==b.toLowerCase()&&E(L)?k=`color:${L} !important;`:E(D)?k=`color:${D} !important;`:R&&An(b,R)>=w&&(k=`background-color:${R} !important;`),{...m,impact:"serious",message:`contrast: ${b} text on its rendered background measures ${A.worstRatio.toFixed(2)}:1 at worst (${A.bestRatio.toFixed(2)}:1 at best, from pixels; judge: ${v.reason||"not readable"}), needs ${w}:1`,fix:{attribute:"style",currentValue:b,...k?{suggestedValue:k}:{},needsManualReview:true}}}let h=p.fix;return h?{...m,fix:h}:v.fix?.attribute&&v.fix.value?{...m,fix:{attribute:v.fix.attribute,currentValue:"",suggestedValue:v.fix.value,needsManualReview:true}}:m}function BL(p,d,v){let m=p.match(Sg);if(!m)return null;let h=parseInt(m[1],16),A=[h>>16&255,h>>8&255,h&255],b=R=>"#"+R.map(E=>Math.round(Math.min(255,Math.max(0,E))).toString(16).padStart(2,"0")).join(""),w=(R,E)=>b(A.map(k=>E?k*(1-R):k+(255-k)*R)),T=null;for(let R of [true,false]){if(An(w(1,R),d)<v)continue;let E=0,k=1;for(let D=0;D<24;D++){let y=(E+k)/2;An(w(y,R),d)>=v?k=y:E=y;}let L=w(k,R);An(L,d)>=v&&(!T||k<T.t)&&(T={t:k,hex:L});}return T?.hex??null}var HL=[1,.6,.35];async function VL(p,d,v){let m=p.screenshot;if(typeof m!="function"||!d||d.rect.w<2||d.rect.h<2||d.hidden)return null;try{let A=Math.min(1200,d.rect.w+16),b=Math.min(600,d.rect.h+16),w=d.rect.x+d.rect.w/2,T=d.rect.y+d.rect.h/2,R=globalThis.Buffer;if(!R)return null;let E=0;for(let k of v===void 0?[1]:HL){let L=Math.max(2,Math.round(A*k)),D=Math.max(2,Math.round(b*k)),y=k===1?Math.max(0,d.rect.x-8):Math.max(0,w-L/2),_=k===1?Math.max(0,d.rect.y-8):Math.max(0,T-D/2),C=await m.call(p,{clip:{x:y,y:_,width:L,height:D},fullPage:!0,type:"png",animations:"disabled"}),I=R.from(C).toString("base64");if(E=I.length,v===void 0||I.length<=v)return {data:I}}return Tu()&&console.error(`ai judge: crop for ${d.tag} left out (${E} base64 chars > ${v} at the smallest clip)`),{}}catch{return null}}function Tg(p=globalThis){if(p.__waDomKernelInstalled)return;function m(F){try{return document.querySelectorAll(F).length===1}catch{return false}}function h(F){if(!F||/^_?[Rr]_[a-z0-9]+_/.test(F)||/^:[Rr][0-9a-z]+:/.test(F)||/^«[Rr][0-9a-z]+»/.test(F)||/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(F)||/^[\w-]*(react|gatsby|root|__next|hash|uuid)[\w-]*$/i.test(F)||/^(radix|headlessui|mui|mantine|cdk|ng|ember|downshift|react-select|react-aria|floating-ui)[-_:]/i.test(F)||/[0-9a-f]{16,}/i.test(F))return true;for(var P=F.split(/[-_:.]/).filter(Boolean),V=P.some(function(ne){var se=(ne.match(/[a-z]/gi)||[]).length,we=(ne.match(/[aeiou]/gi)||[]).length;return se>=4&&we>=1&&!/\d/.test(ne)}),z=0;z<P.length;z++){var J=P[z];if(!V&&/^\d{7,}$/.test(J)||/^[0-9a-f]{13}$/i.test(J)&&/[a-f]/i.test(J)&&/\d/.test(J))return true;if(J.length>=7&&/\d/.test(J)&&/[a-z]/i.test(J)){var Q=(J.match(/[aeiou]/gi)||[]).length,ie=(J.match(/[a-z]/gi)||[]).length;if(ie>=4&&Q/ie<.2||(J.match(/\d[a-z]|[a-z]\d/gi)||[]).length>=4)return true}}return false}function A(F){if(!F.classList||!F.classList.length)return [];for(var P=[],V=0;V<F.classList.length&&P.length<3;V++){var z=F.classList[V];z&&(/^(active|open|focus|hover|disabled|selected|hidden|sr-only|css-[a-z0-9]{4,}|jss[0-9]+|sc-[a-z0-9]+|[a-z]+-[a-f0-9]{6,}|_\d|chakra-|MuiBox-|MuiButton-)$/i.test(z)||/^[a-z][a-z0-9_-]{1,40}$/i.test(z)&&P.push(z));}return P}function b(F){var P=F.tagName.toLowerCase(),V=A(F);return V.length?P+"."+V.map(function(z){return CSS.escape(z)}).join("."):P}function w(F){var P=F.tagName.toLowerCase();if(!F.parentElement)return P;var V=Array.from(F.parentElement.children).filter(function(z){return z.tagName===F.tagName});return V.length===1?P:P+":nth-of-type("+(V.indexOf(F)+1)+")"}function T(F){for(var P=[],V=F;V&&V!==document.body&&V!==document.documentElement;)P.unshift(w(V)),V=V.parentElement;return P.join(" > ")}function R(F){if(!F||F===document.body||F===document.documentElement)return "body";if(F.id&&!h(F.id)){var P="#"+CSS.escape(F.id);if(m(P))return P}for(var V=["data-testid","data-cy","data-qa","data-test","data-component","data-id","data-key"],z=0;z<V.length;z++){var J=F.getAttribute(V[z]);if(J&&J.length<60){var Q=F.tagName.toLowerCase()+"["+V[z]+'="'+CSS.escape(J)+'"]';if(m(Q))return Q}}var ie=b(F);if(ie.indexOf(".")!==-1&&m(ie))return ie;for(var ne=[],se=null,we=F;we&&we!==document.body&&we!==document.documentElement;){if(we.id&&!h(we.id)){var Te="#"+CSS.escape(we.id);if(m(Te)){se=Te;break}}var Ee=b(we);if(Ee.indexOf(".")!==-1&&m(Ee)){se=Ee;break}if(ne.unshift(we),we=we.parentElement,ne.length>6)break}var De=ne.map(function(Ce){var kt=b(Ce);if(kt.indexOf(".")!==-1&&Ce.parentElement){var Tr=Ce.parentElement.querySelectorAll(":scope > "+kt);if(Tr.length===1)return "> "+kt}return "> "+w(Ce)}).join(" "),Ne="";if(se&&De?Ne=(se+" "+De).slice(0,200):se&&(Ne=se),Ne&&m(Ne))return Ne;var Re=T(F);return Re&&m(Re)?Re:Ne||Re||b(F)}function E(F){if(!F)return false;let P=getComputedStyle(F);if(P.display==="none"||P.visibility==="hidden")return false;let V=parseFloat(P.opacity);if(!isNaN(V)&&V<.1)return false;if(!isNaN(V)&&V<.5){var z=P.transform||"";if(z&&z!=="none"&&z!=="matrix(1, 0, 0, 1, 0, 0)")return false}let J=F.getBoundingClientRect();if(J.width<=1||J.height<=1)return false;var Q=P.clipPath||"";return !(Q!=="none"&&/inset\(\s*(?:50|100)%/.test(Q)||/rect\(\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*\)/.test(P.clip||""))}function k(F){if(!F)return "";for(var P=[],V=String(F).trim().split(/\s+/),z=0;z<V.length;z++){var J=document.getElementById(V[z]);if(J){var Q=(J.textContent||"").trim();Q&&P.push(Q);}}return P.join(" ").replace(/\s+/g," ").trim()}function L(F){var P=k(F.getAttribute("aria-labelledby"));if(P)return P;var V=F.getAttribute("aria-label")||"";if(V.trim())return V.trim();var z=F.tagName?F.tagName.toLowerCase():"";if(z==="input"||z==="select"||z==="textarea"){if(F.id)try{var J=document.querySelector('label[for="'+CSS.escape(F.id)+'"]');if(J&&(J.textContent||"").trim())return (J.textContent||"").trim().replace(/\s+/g," ")}catch{}var Q=F.closest?F.closest("label"):null;if(Q&&(Q.textContent||"").trim())return (Q.textContent||"").trim().replace(/\s+/g," ")}var ie=(F.textContent||"").trim().replace(/\s+/g," ");if(!ie&&F.querySelector){var ne=F.querySelector('img[alt]:not([alt=""])');if(ne&&(ie=(ne.getAttribute("alt")||"").trim()),!ie){var se=F.querySelector("svg > title");se&&(ie=(se.textContent||"").trim());}}if(ie)return ie;var we=F.getAttribute("title")||"";return we.trim()}let D="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=EquallyAI],[id*=ae_],[class*=ae-exclude],[id*=goog-gt],[class*=goog-te],[id*=recaptcha],[class*=intercom],[class*=drift-],[class*=crisp-],[class*=tawk-],[class*=hubspot-],[class*=fb-],[class*=wistia],#wpadminbar,[class*=cmplz-btn],[class*=cmplz-link],[id*=cmplz-],[class*=onetrust],[class*=cookiebot],[class*=borlabs],[class*=brlbs-],[id*=wp-ada-compliance],[class*=wp-ada-compliance],[id*=webability-widget],[class*=webability-a11y]";function y(F){return F?F.closest(D)!==null:false}function _(F){if(!F)return false;if(F.getAttribute("aria-hidden")==="true"||F.getAttribute("role")==="presentation"||F.getAttribute("role")==="none")return true;let P=F.parentElement,V=0;for(;P&&P!==document.body&&V<6;){if(P.getAttribute("aria-hidden")==="true")return true;P=P.parentElement,V++;}return false}function C(F){let P=F.naturalWidth||F.width||0,V=F.naturalHeight||F.height||0;if(P<=2&&V<=2)return true;let z=F.getBoundingClientRect();if(z.width<=2&&z.height<=2)return true;let J=(F.src||"").toLowerCase();return !!(J.includes("pixel")||J.includes("beacon")||J.includes("tracker")||J.includes("analytics")||J.includes("adsrvr")||J.includes("doubleclick")||J.includes("facebook.com/tr"))}function I(F){var P=F.closest("article,section,li,.card,[class*=card],[class*=post],[class*=item],[class*=product],[class*=entry]");P||(P=F.closest("div,nav,main,aside,header,footer"));var V=P?P.querySelector("h1,h2,h3,h4,h5,h6"):null,z=V?(V.textContent||"").trim().slice(0,80):"",J=F.parentElement,Q=J?J.tagName.toLowerCase():"",ie=J&&J.getAttribute("role")||"",ne="";if(P){var se=P.querySelector("p,.description,.excerpt,[class*=desc],[class*=summary]");se&&(ne=(se.textContent||"").trim().slice(0,120));}var we="";if(P){var Te=P.querySelector('img[alt]:not([alt=""])');Te&&(we=(Te.getAttribute("alt")||"").trim().slice(0,60));}return {nearbyHeading:z,parentTag:Q,parentRole:ie,cardText:ne,imgAlt:we}}var O={times:"Close",x:"Close","x-lg":"Close","x-circle":"Close","x-mark":"Close",close:"Close","close-circle":"Close",clear:"Clear",cancel:"Cancel",dismiss:"Dismiss","chevron-right":"Next","arrow-right":"Next","caret-right":"Next","angle-right":"Next","chevron-left":"Previous","arrow-left":"Previous","caret-left":"Previous","angle-left":"Previous","chevron-up":"Collapse","arrow-up":"Up","caret-up":"Collapse","angle-up":"Collapse","chevron-down":"Expand","arrow-down":"Down","caret-down":"Expand","angle-down":"Expand",menu:"Menu",bars:"Menu",hamburger:"Menu",list:"Menu",grid:"Grid view",th:"Grid view",search:"Search","magnifying-glass":"Search",magnify:"Search",zoom:"Zoom",user:"User profile",person:"User profile",profile:"User profile","account-circle":"User profile",cart:"Shopping cart","shopping-cart":"Shopping cart",basket:"Shopping cart",bag:"Shopping bag",heart:"Favorite",bookmark:"Bookmark",star:"Rate",home:"Home",house:"Home",gear:"Settings",cog:"Settings",settings:"Settings",tool:"Tools",trash:"Delete","trash-can":"Delete",delete:"Delete",edit:"Edit",pencil:"Edit",pen:"Edit",plus:"Add",add:"Add","plus-circle":"Add",minus:"Remove","minus-circle":"Remove",check:"Confirm","check-circle":"Confirm",checkmark:"Confirm",info:"Information","info-circle":"Information",question:"Help","question-circle":"Help",help:"Help",warning:"Warning",exclamation:"Warning","exclamation-triangle":"Warning",alert:"Alert","external-link":"Open in new tab","external-link-alt":"Open in new tab","box-arrow-up-right":"Open in new tab",download:"Download",upload:"Upload",share:"Share","share-alt":"Share",copy:"Copy",clipboard:"Copy to clipboard",print:"Print",save:"Save",envelope:"Email",email:"Email",mail:"Email",at:"Email",phone:"Phone",telephone:"Phone",mobile:"Mobile phone",location:"Location","map-marker":"Location","map-pin":"Location","geo-alt":"Location",calendar:"Calendar","calendar-alt":"Calendar",clock:"Time",stopwatch:"Timer",eye:"Show","eye-slash":"Hide","eye-off":"Hide",lock:"Lock",unlock:"Unlock",padlock:"Lock",filter:"Filter",sliders:"Adjust",sort:"Sort","sort-alpha-down":"Sort ascending","sort-alpha-up":"Sort descending",refresh:"Refresh",reload:"Refresh",sync:"Refresh","arrows-rotate":"Refresh",play:"Play","play-circle":"Play",pause:"Pause",stop:"Stop","volume-up":"Volume up","volume-down":"Volume down","volume-mute":"Mute",mute:"Mute",speaker:"Audio",twitter:"Twitter","x-twitter":"X (Twitter)","square-x-twitter":"X (Twitter)",facebook:"Facebook","facebook-f":"Facebook","facebook-square":"Facebook","square-facebook":"Facebook","facebook-messenger":"Facebook Messenger",instagram:"Instagram","square-instagram":"Instagram",linkedin:"LinkedIn","linkedin-in":"LinkedIn","square-linkedin":"LinkedIn",youtube:"YouTube","youtube-square":"YouTube","square-youtube":"YouTube",github:"GitHub","github-alt":"GitHub",gitlab:"GitLab",bitbucket:"Bitbucket",tiktok:"TikTok",pinterest:"Pinterest","pinterest-p":"Pinterest","square-pinterest":"Pinterest",rss:"RSS feed","rss-square":"RSS feed",snapchat:"Snapchat","snapchat-ghost":"Snapchat",reddit:"Reddit","reddit-alien":"Reddit",discord:"Discord",slack:"Slack",whatsapp:"WhatsApp",telegram:"Telegram","telegram-plane":"Telegram",vimeo:"Vimeo","vimeo-v":"Vimeo",twitch:"Twitch",tumblr:"Tumblr",medium:"Medium",dribbble:"Dribbble",behance:"Behance",flickr:"Flickr",threads:"Threads",mastodon:"Mastodon",bluesky:"Bluesky",meetup:"Meetup",weibo:"Weibo",wechat:"WeChat",line:"Line",viber:"Viber",skype:"Skype",microsoft:"Microsoft",apple:"Apple",google:"Google","google-plus":"Google+",yelp:"Yelp",tripadvisor:"TripAdvisor",spotify:"Spotify",soundcloud:"SoundCloud",amazon:"Amazon",etsy:"Etsy",ebay:"eBay","arrow-up-right-from-square":"Open in new tab","square-arrow-up-right":"Open in new tab","up-right-from-square":"Open in new tab",back:"Back",forward:"Forward",return:"Return",reply:"Reply","reply-all":"Reply all","forward-arrow":"Forward",redo:"Redo",undo:"Undo","undo-alt":"Undo","rotate-left":"Undo","rotate-right":"Redo",expand:"Expand","expand-arrows-alt":"Expand",compress:"Collapse",minimize:"Minimize",maximize:"Maximize",fullscreen:"Enter fullscreen","fullscreen-exit":"Exit fullscreen",move:"Move",arrows:"Move","arrows-alt":"Move",drag:"Drag",grip:"Drag handle","grip-vertical":"Drag handle","grip-lines":"Drag handle",ellipsis:"More actions","ellipsis-v":"More actions","ellipsis-vertical":"More actions","ellipsis-h":"More actions","ellipsis-horizontal":"More actions","more-vert":"More actions","more-horiz":"More actions","more-vertical":"More actions","more-horizontal":"More actions","dots-vertical":"More actions","three-dots":"More actions","three-dots-vertical":"More actions","play-fill":"Play","pause-fill":"Pause","stop-fill":"Stop","play-pause":"Play/pause",backward:"Rewind","forward-step":"Next track","backward-step":"Previous track","fast-forward":"Fast forward",rewind:"Rewind","skip-forward":"Skip forward","skip-backward":"Skip backward","skip-next":"Next track","skip-previous":"Previous track",volume:"Volume","volume-off":"Mute","volume-x":"Mute","speaker-mute":"Mute",headphones:"Audio",microphone:"Microphone",mic:"Microphone","mic-off":"Mute microphone","microphone-slash":"Mute microphone",video:"Video","video-camera":"Video",camera:"Camera","camera-retro":"Camera",picture:"Picture",image:"Image",images:"Images",photo:"Photo",film:"Video",record:"Record",broadcast:"Broadcast","chevron-right-circle":"Next","chevron-left-circle":"Previous","double-arrow-right":"Next","double-arrow-left":"Previous","angles-right":"Next","angles-left":"Previous","angles-up":"Collapse","angles-down":"Expand",send:"Send","paper-plane":"Send",submit:"Submit",paperclip:"Attach file",attach:"Attach","file-attachment":"Attach file",signature:"Signature","pen-to-square":"Edit","pencil-square":"Edit","pencil-alt":"Edit","square-pen":"Edit",file:"File","file-alt":"Text file","file-text":"Text file","file-lines":"Text file","file-pdf":"PDF document","file-word":"Word document","file-excel":"Excel spreadsheet","file-powerpoint":"PowerPoint presentation","file-zip":"ZIP archive","file-archive":"Archive","file-image":"Image file","file-video":"Video file","file-audio":"Audio file","file-code":"Code file","file-csv":"CSV file",folder:"Folder","folder-open":"Open folder",book:"Book","book-open":"Book",newspaper:"News","bookmark-fill":"Bookmark","cart-plus":"Add to cart","cart-check":"Added to cart","cart-arrow-down":"Add to cart",truck:"Shipping",box:"Package",gift:"Gift",tag:"Tag",tags:"Tags",percent:"Discount","credit-card":"Credit card",wallet:"Wallet",money:"Money","money-bill":"Money","dollar-sign":"Price","euro-sign":"Price","pound-sign":"Price",receipt:"Receipt",store:"Store",shop:"Shop","basket-plus":"Add to basket","heart-fill":"Favorited","star-fill":"Rated","thumbs-up":"Like","thumbs-down":"Dislike",like:"Like",dislike:"Dislike",comment:"Comment",comments:"Comments",chat:"Chat","chat-bubble":"Chat",message:"Message","message-circle":"Message","message-square":"Message",bell:"Notifications","bell-fill":"Notifications",notifications:"Notifications",inbox:"Inbox",archive:"Archive",flag:"Flag",pin:"Pin","pin-fill":"Pinned",thumbtack:"Pin","sign-in":"Sign in","sign-in-alt":"Sign in","sign-out":"Sign out","sign-out-alt":"Sign out","log-in":"Log in","log-out":"Log out",logout:"Log out",login:"Log in","user-plus":"Add user","user-minus":"Remove user","user-circle":"User profile","user-avatar":"User avatar",users:"Users",key:"Password",shield:"Security","shield-check":"Security verified","id-card":"ID card","id-badge":"ID badge","universal-access":"Accessibility","accessible-icon":"Accessibility",wheelchair:"Wheelchair access",braille:"Braille","sign-language":"Sign language","closed-captioning":"Captions",cc:"Captions",sun:"Light mode",moon:"Dark mode",contrast:"Contrast",palette:"Theme",brush:"Theme",globe:"Global",earth:"Global",map:"Map",compass:"Compass",directions:"Directions",route:"Route",navigation:"Navigation",crosshairs:"Locate",spinner:"Loading",loader:"Loading",loading:"Loading","circle-notch":"Loading",hourglass:"Waiting","clock-fill":"Time","check-square":"Confirm","square-check":"Confirm","circle-check":"Confirm","circle-x":"Close",ban:"Blocked",block:"Block","times-circle":"Close",xmark:"Close","xmark-circle":"Close",columns:"Columns view",rows:"Rows view",layout:"Layout",sidebar:"Sidebar","sidebar-toggle":"Toggle sidebar","panel-left":"Left panel","panel-right":"Right panel","list-view":"List view","grid-view":"Grid view",wifi:"Wi-Fi","wifi-off":"Wi-Fi off",bluetooth:"Bluetooth",signal:"Signal",battery:"Battery","battery-full":"Battery full",plug:"Plug",power:"Power","power-off":"Power off","chart-bar":"Bar chart","chart-line":"Line chart","chart-pie":"Pie chart","chart-area":"Area chart","bar-chart":"Bar chart","line-chart":"Line chart","pie-chart":"Pie chart",analytics:"Analytics",statistics:"Statistics","trending-up":"Trending up","trending-down":"Trending down"},j=/^(fa|fas|far|fab|fal|fad|fass|bi|bi-icon|material-icons|material-symbols|ion|ionicon|feather|lucide|dashicons|glyphicon|icofont|heroicon)-/;function W(F,P,V){var z=[];if(F)for(var J=F.split(/\s+/),Q=0;Q<J.length;Q++){var ie=J[Q];if(ie){var ne=ie.toLowerCase().replace(j,"").replace(/^icon-/,"");ne&&ne!==ie.toLowerCase()&&z.push(ne);}}if(P&&z.push(P.toLowerCase().trim()),V){var se=V.trim().toLowerCase();se.length<30&&/^[a-z_-]+$/.test(se)&&z.push(se.replace(/_/g,"-"));}for(var we=0;we<z.length;we++)if(O[z[we]])return O[z[we]];for(var Te=0;Te<z.length;Te++)for(var Ee=z[Te].split("-"),De=0;De<Ee.length;De++)if(O[Ee[De]])return O[Ee[De]];return null}var K;function G(F){if(!F)return null;var P=F.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+))?\s*\)/);if(P)return [parseInt(P[1],10),parseInt(P[2],10),parseInt(P[3],10),P[4]?parseFloat(P[4]):1];if(F==="transparent"||F==="none")return [0,0,0,0];try{if(K===void 0){var V=document.createElement("canvas");V.width=1,V.height=1,K=V.getContext("2d",{willReadFrequently:!0});}if(!K)return null;K.clearRect(0,0,1,1),K.fillStyle="#000000",K.fillStyle=F,K.fillRect(0,0,1,1);var z=K.getImageData(0,0,1,1).data;return [z[0],z[1],z[2],z[3]/255]}catch{return null}}function N(F,P,V){var z=function(J){var Q=J/255;return Q<=.03928?Q/12.92:Math.pow((Q+.055)/1.055,2.4)};return .2126*z(F)+.7152*z(P)+.0722*z(V)}function B(F,P){var V=N(F[0],F[1],F[2]),z=N(P[0],P[1],P[2]),J=Math.max(V,z),Q=Math.min(V,z);return (J+.05)/(Q+.05)}Object.assign(p,{__isUnique:m,__isGeneratedId:h,__cleanClasses:A,__tagWithClass:b,__nthSelector:w,__fullPath:T,uniqueSel:R,isVisible:E,__resolveIdRefs:k,getAccessibleName:L,isWidget:y,isHiddenFromAT:_,isTrackingPixel:C,getNearbyContext:I,__ICON_LABELS:O,__ICON_PREFIX_STRIP:j,lookupIconLabel:W,__colorCtx:K,parseCssColor:G,relLuminance:N,contrastRatio:B}),p.__waDomKernelInstalled=true;}var Rg="1.10.0";function jL(p){return {async evaluate(d,...v){if(typeof d!="function")throw new Error("string evaluate not supported in DOM mode");return await d(...v)},async addScriptTag(){},url:()=>p.location.href}}async function cO(p={}){let d=p.window??globalThis;if(typeof d.document>"u")throw new Error("scanDocument requires a DOM (window.document)");Tg(d);let v=jL(d),m=[],h=[],A=[],b=[];await pu(v);let w=await ug(v,h,A,{skipFocusMutating:p.interactiveChecks!==true,internalBugs:b});if(m.push(...w.map(gg)),p.includeAxe!==false)try{let L=await Promise.resolve().then(()=>E3(Ig(),1)),y=await(L.default??L).run(d.document,{runOnly:{type:"tag",values:Du(p.wcagTags??xu,p.level)},rules:hg(Du(p.wcagTags??xu,p.level)),resultTypes:["violations","incomplete"]});for(let _ of y.violations??[])for(let C of _.nodes??[])m.push({id:`axe-${_.id}-${Lo(Ya(C.target))}`,source:"axe-core",type:_.id,wcag:_u(_.tags),level:Eu(_.tags),impact:Au(_.impact),message:_.help,selector:Ya(C.target),html:C.html?.slice(0,300)});for(let _ of y.incomplete??[])for(let C of _.nodes??[])m.push({id:`axe-incomplete-${_.id}-${Lo(Ya(C.target))}`,source:"axe-core",type:_.id,wcag:_u(_.tags),level:Eu(_.tags),impact:Au(_.impact),message:_.help,selector:Ya(C.target),html:C.html?.slice(0,300),confidence:"needs_review",reviewReason:"axe-core flagged this as needing human review"});}catch{A.push("axe:failed \u2014 axe-core did not complete; results are detector-only");}let T=yu(Io(m).verdicts);try{T=await fg(v,T);}catch{}try{T=await pg(v,T);}catch{}try{T=await cg(v,T);}catch{}T=Xa(T,p.level??"AA");let R=Io(T),E=R.verdicts,k;if(p.judge)try{let L=Xa([...Io(m).undecided,...R.undecided],p.level??"AA"),D=await kg(v,L,{...p.judge,url:d.location.href,level:p.judge.level??p.level??"AA",vision:!1});D.judged.length&&(k=D.judged),D.promoted.length&&(E=yu([...E,...D.promoted]));}catch{}try{E=await gu(v,E,b);}catch{}return hu(b,await mu(v)),{url:d.location.href,timestamp:new Date().toISOString(),engine:Rg,issues:E,internal_bugs:b,incomplete:[],...k?{judged:k}:{},...h.length?{truncated:h}:{},...A.length?{engineWarnings:A}:{},summary:vg(E)}}/*! Bundled license information:
|
|
401
401
|
|
|
402
402
|
axe-core/axe.js:
|
|
403
403
|
(*! axe v4.11.3
|
package/dist/dom.d.cts
CHANGED
package/dist/dom.d.ts
CHANGED
package/dist/dom.js
CHANGED
|
@@ -397,7 +397,7 @@ Omit "fix" for passes.`;function FL(p){let d=p.items.map(({screenshot:v,...m})=>
|
|
|
397
397
|
Conformance level: ${p.level}
|
|
398
398
|
|
|
399
399
|
Findings:
|
|
400
|
-
${JSON.stringify(d,null,1)}`}function IL(p,d={}){let v=p.vision&&p.items.some(A=>A.screenshot),m=v?d.visionModel||yL:d.textModel||xg,h=[{type:"text",text:FL(p)}];if(v)for(let A of p.items)A.screenshot&&(h.push({type:"text",text:`Crop for ${A.id}:`}),h.push({type:"image_url",image_url:{url:`data:image/png;base64,${A.screenshot}`}}));return {model:m,temperature:0,max_tokens:4096,...m===xg&&d.disableTextModelReasoning?{reasoning:{enabled:false}}:{},messages:[{role:"system",content:RL},{role:"user",content:h}]}}function LL(p){let d=(p.baseUrl||bL).replace(/\/+$/,""),v=false;try{let m=new URL(d).hostname;v=m==="openrouter.ai"||m.endsWith(".openrouter.ai");}catch{}return async(m,h)=>{let A=await fetch(`${d}/chat/completions`,{method:"POST",signal:h,headers:{"Content-Type":"application/json",Authorization:`Bearer ${p.apiKey}`,"HTTP-Referer":"https://webability.io","X-Title":"WebAbility scanner judge"},body:JSON.stringify(IL(m,{visionModel:p.visionModel,textModel:p.textModel,disableTextModelReasoning:v}))});if(!A.ok)throw new Xn(`judge model HTTP ${A.status}`);let w=(await A.json()).choices?.[0]?.message?.content;if(typeof w=="string")return w;if(Array.isArray(w))return w.map(T=>typeof T?.text=="string"?T.text:"").join("");throw new Error("judge model returned no content")}}function ML(p){let d=p.apiUrl.replace(/\/+$/,"");return async(v,m)=>{let h=await fetch(`${d}/api/judge-incomplete`,{method:"POST",signal:m,redirect:"manual",headers:{"Content-Type":"application/json",...p.token?{Authorization:`Bearer ${p.token}`}:{},...p.internalSecret?{"x-mcp-internal":p.internalSecret}:{}},body:JSON.stringify(v)});if(h.status>=300&&h.status<400)throw new Xn(`judge endpoint redirected (HTTP ${h.status}); not followed`);if(!h.ok)throw new Xn(`judge endpoint HTTP ${h.status}`);return h.json()}}function PL(p){return p.transport?p.transport:p.apiKey?LL({apiKey:p.apiKey,baseUrl:p.baseUrl,visionModel:p.visionModel,textModel:p.textModel}):p.apiUrl?ML({apiUrl:p.apiUrl,token:p.apiToken,internalSecret:p.internalSecret}):null}function OL(p){return p.maxCropChars??(!p.transport&&!p.apiKey&&p.apiUrl?vL:void 0)}async function kg(p,d,v){let m={promoted:[],judged:[]},h=PL(v);if(d.length===0)return m;let A=v.level??"AA",b=v.timeoutMs??hL,w=Date.now()+b,T=Xa([...d],A);if(T.length===0)return m;let R=new Map;for(let N of T){let B=`${N.selector}|${ku(N)}`,F=R.get(B);F?F.members.push(N):R.set(B,{key:B,members:[N],rep:N,ctx:void 0,kind:"generic"});}let E={elements:{}};if(p)try{await p.evaluate("if(typeof globalThis.__name==='undefined'){globalThis.__name=function(t){return t}}"),E=await p.evaluate(DL,{selectors:[...R.keys()].map(N=>R.get(N).rep.selector),maxHtml:Dg});}catch{}for(let N of R.values())N.ctx=E.elements[N.rep.selector],N.ctx&&!N.ctx.found&&(N.ctx=void 0),N.kind=AL(N.rep,N.ctx);let k=new Map;for(let[N,B]of [...R]){if(!B.ctx)continue;let F=`${B.ctx.elementKey}|${ku(B.rep)}`,P=k.get(F);if(!P){k.set(F,B);continue}P.members.push(...B.members),R.delete(N);}let L={promoted:[],judged:[]},D=(N,B)=>{for(let F of N.members){if(B.verdict==="violation"){let P=qL(F,N,B);if(!P)continue;L.promoted.push(P);}L.judged.push({id:F.id.replace("axe-incomplete-","axe-"),type:F.type,verdict:B.verdict,reason:B.reason});}},y=[...R.values()].filter(N=>N.kind==="contrast");if(y.length&&p){for(let B of y)B.pixels=v.measured?.get(B.rep.selector);let N=y.filter(B=>!B.pixels).map(B=>B.rep.selector);if(N.length)try{for(let B of await bg(p,N))for(let F of y)F.rep.selector===B.selector&&(F.pixels=B);}catch{}}let _=[];for(let N of R.values()){let B=h?Po.get(_g(v.url,N.rep,N.ctx?.html??N.rep.html??"")):void 0;if(B){D(N,B);continue}let F=NL(N);if(F!=="drop"){if(F){D(N,F);continue}_.push(N);}}if(_.length===0||!h)return L;let C=v.vision!==false&&!!p&&typeof p.screenshot=="function",I=new Map,O=new Set,j=0,W=OL(v),K=N=>({id:N.rep.id,type:N.rep.type,wcag:N.rep.wcag,message:N.rep.message,selector:N.rep.selector,html:(N.ctx?.html??N.rep.html??"").slice(0,Dg),context:O.has(N.key)?{...Eg(N),cropNote:"no image attached: the crop was too large to send"}:Eg(N),...I.has(N.key)?{screenshot:I.get(N.key)}:{}}),G=C?mL:pL;for(let N=0;N<_.length;N+=G){let B=w-Date.now();if(B<=0)break;let F=_.slice(N,N+G);if(C){for(let ne of F){if(j>=gL||Date.now()>w)break;let se=await VL(p,ne.ctx,W);se&&(j++,se.data?I.set(ne.key,se.data):O.add(ne.key));}if(Date.now()>w)break}let P=new Map(F.map(ne=>[ne.rep.id,ne])),V=new AbortController,z=setTimeout(()=>V.abort(),B),J=null,Q=false,ie=Date.now();try{let ne=await Promise.race([h({url:v.url,level:A,vision:C,items:F.map(K)},V.signal),new Promise((se,we)=>V.signal.addEventListener("abort",()=>we(new Error("judge deadline"))))]);J=TL(ne),Tu()&&console.error(`ai judge: batch ${F.length} items, ${F.filter(se=>I.has(se.key)).length} crops, ${Date.now()-ie}ms, ${J?J.length+" verdicts":"MALFORMED: "+String(ne).slice(0,200)}`);}catch(ne){Tu()&&console.error(`ai judge: batch ${F.length} items failed after ${Date.now()-ie}ms: ${ne.message}`),J=null,Q=ne instanceof Xn;}finally{clearTimeout(z);}if(!J){if(V.signal.aborted||Q)break;continue}for(let ne of J){let se=P.get(ne.id);if(!se)continue;P.delete(ne.id);let we={verdict:ne.verdict,reason:EL(ne.reason),fix:ne.fix};Po.size>=wL&&Po.clear(),Po.set(_g(v.url,se.rep,se.ctx?.html??se.rep.html??""),we),D(se,we);}}return L}function NL(p){let d=p.ctx;if(p.kind==="alt"){if(d?.role==="presentation"||d?.role==="none")return {verdict:"pass",reason:"declared decorative (role=presentation)"};if(d?.ariaHidden)return {verdict:"pass",reason:"hidden from assistive technology (aria-hidden)"};if(d?.img){let{attrW:v,attrH:m,naturalW:h,naturalH:A}=d.img;if(v>0&&v<=1&&m>0&&m<=1||h>0&&h<=1&&A>0&&A<=1)return {verdict:"pass",reason:"1x1 tracking/spacer pixel"}}return d&&Ru(d)?d.control?d.control.name?{verdict:"pass",reason:`${d.control.tag} is named ("${d.control.name.slice(0,40)}"); the background image needs no text`}:null:{verdict:"pass",reason:"CSS background image on a non-interactive element; decorative"}:d?.parentInteractive?.text?{verdict:"pass",reason:`${d.parentInteractive.tag} is named by its visible link text ("${d.parentInteractive.text.slice(0,40)}"); alt may be empty`}:null}if(p.kind==="motion")return d?.reducedMotionHandled?{verdict:"pass",reason:"a prefers-reduced-motion: reduce rule stops this element's animation"}:null;if(p.kind==="contrast"){if(!p.pixels)return "drop";let v=Fu(p.rep,p.pixels.threshold);return p.pixels.worstRatio>=v?{verdict:"pass",reason:`measured ${p.pixels.worstRatio.toFixed(2)}:1 at worst behind the text, meets ${v}:1`}:p.pixels.bestRatio<v*.97?{verdict:"violation",reason:`measured ${p.pixels.bestRatio.toFixed(2)}:1 at best behind the text, below ${v}:1 everywhere`}:null}return p.rep.type==="duplicate_id"&&/first occurrence/i.test(p.rep.reviewReason||"")?{verdict:"pass",reason:"first occurrence of the id; the duplicate is reported on the later copies"}:null}function Eg(p){let d=p.ctx,v={};return p.rep.reviewReason&&(v.engineNote=p.rep.reviewReason),d&&(v.tag=d.tag,d.nearText&&(v.nearbyText=d.nearText),d.parentInteractive&&(v.parentControl=d.parentInteractive),p.kind==="alt"&&Ru(d)&&d.control&&(v.control={tag:d.control.tag,accessibleName:d.control.name}),p.kind==="alt"&&d.img&&(v.image={src:d.img.src,alt:d.img.alt,width:d.img.naturalW||d.img.attrW||d.rect.w,height:d.img.naturalH||d.img.attrH||d.rect.h}),p.kind==="contrast"&&p.pixels&&(v.fg=Un(p.pixels.fg),v.threshold=Fu(p.rep,p.pixels.threshold),v.bestRatio=Cg(p.pixels.bestRatio),v.worstRatio=Cg(p.pixels.worstRatio),v.fontSize=d.fontSize,v.fontWeight=d.fontWeight),p.kind==="generic"&&(v.fg=Un(d.fg),v.bg=Un(d.bg),v.size={w:Math.round(d.rect.w),h:Math.round(d.rect.h)})),v}function Fu(p,d){return p.wcag==="1.4.6"||p.type==="contrast_enhanced"?d===3?4.5:7:d}var Cg=p=>Math.round(p*100)/100;function qL(p,d,v){let m=kL(p);if(d.kind==="alt"){let A=CL(v.fix?.value);return A?Ru(d.ctx)?{...m,fix:{attribute:"aria-label",currentValue:"",suggestedValue:A,needsManualReview:false}}:{...m,fix:{attribute:"alt",currentValue:d.ctx?.img?.alt??p.fix?.currentValue??"",suggestedValue:A,needsManualReview:false}}:null}if(d.kind==="contrast"){let A=d.pixels;if(!A)return null;let b=Un(A.fg),w=Fu(p,A.threshold),T=A.worstBg?Un(A.worstBg):null,R=A.bestBg?Un(A.bestBg):null,E=y=>!!y&&!!T&&An(y,T)>=w&&(!R||An(y,R)>=w),k,L=SL(v.fix?.value),D=T?BL(b,T,w):null;return L&&L!==b.toLowerCase()&&E(L)?k=`color:${L} !important;`:E(D)?k=`color:${D} !important;`:R&&An(b,R)>=w&&(k=`background-color:${R} !important;`),{...m,impact:"serious",message:`contrast: ${b} text on its rendered background measures ${A.worstRatio.toFixed(2)}:1 at worst (${A.bestRatio.toFixed(2)}:1 at best, from pixels; judge: ${v.reason||"not readable"}), needs ${w}:1`,fix:{attribute:"style",currentValue:b,...k?{suggestedValue:k}:{},needsManualReview:true}}}let h=p.fix;return h?{...m,fix:h}:v.fix?.attribute&&v.fix.value?{...m,fix:{attribute:v.fix.attribute,currentValue:"",suggestedValue:v.fix.value,needsManualReview:true}}:m}function BL(p,d,v){let m=p.match(Sg);if(!m)return null;let h=parseInt(m[1],16),A=[h>>16&255,h>>8&255,h&255],b=R=>"#"+R.map(E=>Math.round(Math.min(255,Math.max(0,E))).toString(16).padStart(2,"0")).join(""),w=(R,E)=>b(A.map(k=>E?k*(1-R):k+(255-k)*R)),T=null;for(let R of [true,false]){if(An(w(1,R),d)<v)continue;let E=0,k=1;for(let D=0;D<24;D++){let y=(E+k)/2;An(w(y,R),d)>=v?k=y:E=y;}let L=w(k,R);An(L,d)>=v&&(!T||k<T.t)&&(T={t:k,hex:L});}return T?.hex??null}var HL=[1,.6,.35];async function VL(p,d,v){let m=p.screenshot;if(typeof m!="function"||!d||d.rect.w<2||d.rect.h<2||d.hidden)return null;try{let A=Math.min(1200,d.rect.w+16),b=Math.min(600,d.rect.h+16),w=d.rect.x+d.rect.w/2,T=d.rect.y+d.rect.h/2,R=globalThis.Buffer;if(!R)return null;let E=0;for(let k of v===void 0?[1]:HL){let L=Math.max(2,Math.round(A*k)),D=Math.max(2,Math.round(b*k)),y=k===1?Math.max(0,d.rect.x-8):Math.max(0,w-L/2),_=k===1?Math.max(0,d.rect.y-8):Math.max(0,T-D/2),C=await m.call(p,{clip:{x:y,y:_,width:L,height:D},fullPage:!0,type:"png",animations:"disabled"}),I=R.from(C).toString("base64");if(E=I.length,v===void 0||I.length<=v)return {data:I}}return Tu()&&console.error(`ai judge: crop for ${d.tag} left out (${E} base64 chars > ${v} at the smallest clip)`),{}}catch{return null}}function Tg(p=globalThis){if(p.__waDomKernelInstalled)return;function m(F){try{return document.querySelectorAll(F).length===1}catch{return false}}function h(F){if(!F||/^_?[Rr]_[a-z0-9]+_/.test(F)||/^:[Rr][0-9a-z]+:/.test(F)||/^«[Rr][0-9a-z]+»/.test(F)||/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(F)||/^[\w-]*(react|gatsby|root|__next|hash|uuid)[\w-]*$/i.test(F)||/^(radix|headlessui|mui|mantine|cdk|ng|ember|downshift|react-select|react-aria|floating-ui)[-_:]/i.test(F)||/[0-9a-f]{16,}/i.test(F))return true;for(var P=F.split(/[-_:.]/).filter(Boolean),V=P.some(function(ne){var se=(ne.match(/[a-z]/gi)||[]).length,we=(ne.match(/[aeiou]/gi)||[]).length;return se>=4&&we>=1&&!/\d/.test(ne)}),z=0;z<P.length;z++){var J=P[z];if(!V&&/^\d{7,}$/.test(J)||/^[0-9a-f]{13}$/i.test(J)&&/[a-f]/i.test(J)&&/\d/.test(J))return true;if(J.length>=7&&/\d/.test(J)&&/[a-z]/i.test(J)){var Q=(J.match(/[aeiou]/gi)||[]).length,ie=(J.match(/[a-z]/gi)||[]).length;if(ie>=4&&Q/ie<.2||(J.match(/\d[a-z]|[a-z]\d/gi)||[]).length>=4)return true}}return false}function A(F){if(!F.classList||!F.classList.length)return [];for(var P=[],V=0;V<F.classList.length&&P.length<3;V++){var z=F.classList[V];z&&(/^(active|open|focus|hover|disabled|selected|hidden|sr-only|css-[a-z0-9]{4,}|jss[0-9]+|sc-[a-z0-9]+|[a-z]+-[a-f0-9]{6,}|_\d|chakra-|MuiBox-|MuiButton-)$/i.test(z)||/^[a-z][a-z0-9_-]{1,40}$/i.test(z)&&P.push(z));}return P}function b(F){var P=F.tagName.toLowerCase(),V=A(F);return V.length?P+"."+V.map(function(z){return CSS.escape(z)}).join("."):P}function w(F){var P=F.tagName.toLowerCase();if(!F.parentElement)return P;var V=Array.from(F.parentElement.children).filter(function(z){return z.tagName===F.tagName});return V.length===1?P:P+":nth-of-type("+(V.indexOf(F)+1)+")"}function T(F){for(var P=[],V=F;V&&V!==document.body&&V!==document.documentElement;)P.unshift(w(V)),V=V.parentElement;return P.join(" > ")}function R(F){if(!F||F===document.body||F===document.documentElement)return "body";if(F.id&&!h(F.id)){var P="#"+CSS.escape(F.id);if(m(P))return P}for(var V=["data-testid","data-cy","data-qa","data-test","data-component","data-id","data-key"],z=0;z<V.length;z++){var J=F.getAttribute(V[z]);if(J&&J.length<60){var Q=F.tagName.toLowerCase()+"["+V[z]+'="'+CSS.escape(J)+'"]';if(m(Q))return Q}}var ie=b(F);if(ie.indexOf(".")!==-1&&m(ie))return ie;for(var ne=[],se=null,we=F;we&&we!==document.body&&we!==document.documentElement;){if(we.id&&!h(we.id)){var Te="#"+CSS.escape(we.id);if(m(Te)){se=Te;break}}var Ee=b(we);if(Ee.indexOf(".")!==-1&&m(Ee)){se=Ee;break}if(ne.unshift(we),we=we.parentElement,ne.length>6)break}var De=ne.map(function(Ce){var kt=b(Ce);if(kt.indexOf(".")!==-1&&Ce.parentElement){var Tr=Ce.parentElement.querySelectorAll(":scope > "+kt);if(Tr.length===1)return "> "+kt}return "> "+w(Ce)}).join(" "),Ne="";if(se&&De?Ne=(se+" "+De).slice(0,200):se&&(Ne=se),Ne&&m(Ne))return Ne;var Re=T(F);return Re&&m(Re)?Re:Ne||Re||b(F)}function E(F){if(!F)return false;let P=getComputedStyle(F);if(P.display==="none"||P.visibility==="hidden")return false;let V=parseFloat(P.opacity);if(!isNaN(V)&&V<.1)return false;if(!isNaN(V)&&V<.5){var z=P.transform||"";if(z&&z!=="none"&&z!=="matrix(1, 0, 0, 1, 0, 0)")return false}let J=F.getBoundingClientRect();if(J.width<=1||J.height<=1)return false;var Q=P.clipPath||"";return !(Q!=="none"&&/inset\(\s*(?:50|100)%/.test(Q)||/rect\(\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*\)/.test(P.clip||""))}function k(F){if(!F)return "";for(var P=[],V=String(F).trim().split(/\s+/),z=0;z<V.length;z++){var J=document.getElementById(V[z]);if(J){var Q=(J.textContent||"").trim();Q&&P.push(Q);}}return P.join(" ").replace(/\s+/g," ").trim()}function L(F){var P=k(F.getAttribute("aria-labelledby"));if(P)return P;var V=F.getAttribute("aria-label")||"";if(V.trim())return V.trim();var z=F.tagName?F.tagName.toLowerCase():"";if(z==="input"||z==="select"||z==="textarea"){if(F.id)try{var J=document.querySelector('label[for="'+CSS.escape(F.id)+'"]');if(J&&(J.textContent||"").trim())return (J.textContent||"").trim().replace(/\s+/g," ")}catch{}var Q=F.closest?F.closest("label"):null;if(Q&&(Q.textContent||"").trim())return (Q.textContent||"").trim().replace(/\s+/g," ")}var ie=(F.textContent||"").trim().replace(/\s+/g," ");if(!ie&&F.querySelector){var ne=F.querySelector('img[alt]:not([alt=""])');if(ne&&(ie=(ne.getAttribute("alt")||"").trim()),!ie){var se=F.querySelector("svg > title");se&&(ie=(se.textContent||"").trim());}}if(ie)return ie;var we=F.getAttribute("title")||"";return we.trim()}let D="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=EquallyAI],[id*=ae_],[class*=ae-exclude],[id*=goog-gt],[class*=goog-te],[id*=recaptcha],[class*=intercom],[class*=drift-],[class*=crisp-],[class*=tawk-],[class*=hubspot-],[class*=fb-],[class*=wistia],#wpadminbar,[class*=cmplz-btn],[class*=cmplz-link],[id*=cmplz-],[class*=onetrust],[class*=cookiebot],[class*=borlabs],[class*=brlbs-],[id*=wp-ada-compliance],[class*=wp-ada-compliance],[id*=webability-widget],[class*=webability-a11y]";function y(F){return F?F.closest(D)!==null:false}function _(F){if(!F)return false;if(F.getAttribute("aria-hidden")==="true"||F.getAttribute("role")==="presentation"||F.getAttribute("role")==="none")return true;let P=F.parentElement,V=0;for(;P&&P!==document.body&&V<6;){if(P.getAttribute("aria-hidden")==="true")return true;P=P.parentElement,V++;}return false}function C(F){let P=F.naturalWidth||F.width||0,V=F.naturalHeight||F.height||0;if(P<=2&&V<=2)return true;let z=F.getBoundingClientRect();if(z.width<=2&&z.height<=2)return true;let J=(F.src||"").toLowerCase();return !!(J.includes("pixel")||J.includes("beacon")||J.includes("tracker")||J.includes("analytics")||J.includes("adsrvr")||J.includes("doubleclick")||J.includes("facebook.com/tr"))}function I(F){var P=F.closest("article,section,li,.card,[class*=card],[class*=post],[class*=item],[class*=product],[class*=entry]");P||(P=F.closest("div,nav,main,aside,header,footer"));var V=P?P.querySelector("h1,h2,h3,h4,h5,h6"):null,z=V?(V.textContent||"").trim().slice(0,80):"",J=F.parentElement,Q=J?J.tagName.toLowerCase():"",ie=J&&J.getAttribute("role")||"",ne="";if(P){var se=P.querySelector("p,.description,.excerpt,[class*=desc],[class*=summary]");se&&(ne=(se.textContent||"").trim().slice(0,120));}var we="";if(P){var Te=P.querySelector('img[alt]:not([alt=""])');Te&&(we=(Te.getAttribute("alt")||"").trim().slice(0,60));}return {nearbyHeading:z,parentTag:Q,parentRole:ie,cardText:ne,imgAlt:we}}var O={times:"Close",x:"Close","x-lg":"Close","x-circle":"Close","x-mark":"Close",close:"Close","close-circle":"Close",clear:"Clear",cancel:"Cancel",dismiss:"Dismiss","chevron-right":"Next","arrow-right":"Next","caret-right":"Next","angle-right":"Next","chevron-left":"Previous","arrow-left":"Previous","caret-left":"Previous","angle-left":"Previous","chevron-up":"Collapse","arrow-up":"Up","caret-up":"Collapse","angle-up":"Collapse","chevron-down":"Expand","arrow-down":"Down","caret-down":"Expand","angle-down":"Expand",menu:"Menu",bars:"Menu",hamburger:"Menu",list:"Menu",grid:"Grid view",th:"Grid view",search:"Search","magnifying-glass":"Search",magnify:"Search",zoom:"Zoom",user:"User profile",person:"User profile",profile:"User profile","account-circle":"User profile",cart:"Shopping cart","shopping-cart":"Shopping cart",basket:"Shopping cart",bag:"Shopping bag",heart:"Favorite",bookmark:"Bookmark",star:"Rate",home:"Home",house:"Home",gear:"Settings",cog:"Settings",settings:"Settings",tool:"Tools",trash:"Delete","trash-can":"Delete",delete:"Delete",edit:"Edit",pencil:"Edit",pen:"Edit",plus:"Add",add:"Add","plus-circle":"Add",minus:"Remove","minus-circle":"Remove",check:"Confirm","check-circle":"Confirm",checkmark:"Confirm",info:"Information","info-circle":"Information",question:"Help","question-circle":"Help",help:"Help",warning:"Warning",exclamation:"Warning","exclamation-triangle":"Warning",alert:"Alert","external-link":"Open in new tab","external-link-alt":"Open in new tab","box-arrow-up-right":"Open in new tab",download:"Download",upload:"Upload",share:"Share","share-alt":"Share",copy:"Copy",clipboard:"Copy to clipboard",print:"Print",save:"Save",envelope:"Email",email:"Email",mail:"Email",at:"Email",phone:"Phone",telephone:"Phone",mobile:"Mobile phone",location:"Location","map-marker":"Location","map-pin":"Location","geo-alt":"Location",calendar:"Calendar","calendar-alt":"Calendar",clock:"Time",stopwatch:"Timer",eye:"Show","eye-slash":"Hide","eye-off":"Hide",lock:"Lock",unlock:"Unlock",padlock:"Lock",filter:"Filter",sliders:"Adjust",sort:"Sort","sort-alpha-down":"Sort ascending","sort-alpha-up":"Sort descending",refresh:"Refresh",reload:"Refresh",sync:"Refresh","arrows-rotate":"Refresh",play:"Play","play-circle":"Play",pause:"Pause",stop:"Stop","volume-up":"Volume up","volume-down":"Volume down","volume-mute":"Mute",mute:"Mute",speaker:"Audio",twitter:"Twitter","x-twitter":"X (Twitter)","square-x-twitter":"X (Twitter)",facebook:"Facebook","facebook-f":"Facebook","facebook-square":"Facebook","square-facebook":"Facebook","facebook-messenger":"Facebook Messenger",instagram:"Instagram","square-instagram":"Instagram",linkedin:"LinkedIn","linkedin-in":"LinkedIn","square-linkedin":"LinkedIn",youtube:"YouTube","youtube-square":"YouTube","square-youtube":"YouTube",github:"GitHub","github-alt":"GitHub",gitlab:"GitLab",bitbucket:"Bitbucket",tiktok:"TikTok",pinterest:"Pinterest","pinterest-p":"Pinterest","square-pinterest":"Pinterest",rss:"RSS feed","rss-square":"RSS feed",snapchat:"Snapchat","snapchat-ghost":"Snapchat",reddit:"Reddit","reddit-alien":"Reddit",discord:"Discord",slack:"Slack",whatsapp:"WhatsApp",telegram:"Telegram","telegram-plane":"Telegram",vimeo:"Vimeo","vimeo-v":"Vimeo",twitch:"Twitch",tumblr:"Tumblr",medium:"Medium",dribbble:"Dribbble",behance:"Behance",flickr:"Flickr",threads:"Threads",mastodon:"Mastodon",bluesky:"Bluesky",meetup:"Meetup",weibo:"Weibo",wechat:"WeChat",line:"Line",viber:"Viber",skype:"Skype",microsoft:"Microsoft",apple:"Apple",google:"Google","google-plus":"Google+",yelp:"Yelp",tripadvisor:"TripAdvisor",spotify:"Spotify",soundcloud:"SoundCloud",amazon:"Amazon",etsy:"Etsy",ebay:"eBay","arrow-up-right-from-square":"Open in new tab","square-arrow-up-right":"Open in new tab","up-right-from-square":"Open in new tab",back:"Back",forward:"Forward",return:"Return",reply:"Reply","reply-all":"Reply all","forward-arrow":"Forward",redo:"Redo",undo:"Undo","undo-alt":"Undo","rotate-left":"Undo","rotate-right":"Redo",expand:"Expand","expand-arrows-alt":"Expand",compress:"Collapse",minimize:"Minimize",maximize:"Maximize",fullscreen:"Enter fullscreen","fullscreen-exit":"Exit fullscreen",move:"Move",arrows:"Move","arrows-alt":"Move",drag:"Drag",grip:"Drag handle","grip-vertical":"Drag handle","grip-lines":"Drag handle",ellipsis:"More actions","ellipsis-v":"More actions","ellipsis-vertical":"More actions","ellipsis-h":"More actions","ellipsis-horizontal":"More actions","more-vert":"More actions","more-horiz":"More actions","more-vertical":"More actions","more-horizontal":"More actions","dots-vertical":"More actions","three-dots":"More actions","three-dots-vertical":"More actions","play-fill":"Play","pause-fill":"Pause","stop-fill":"Stop","play-pause":"Play/pause",backward:"Rewind","forward-step":"Next track","backward-step":"Previous track","fast-forward":"Fast forward",rewind:"Rewind","skip-forward":"Skip forward","skip-backward":"Skip backward","skip-next":"Next track","skip-previous":"Previous track",volume:"Volume","volume-off":"Mute","volume-x":"Mute","speaker-mute":"Mute",headphones:"Audio",microphone:"Microphone",mic:"Microphone","mic-off":"Mute microphone","microphone-slash":"Mute microphone",video:"Video","video-camera":"Video",camera:"Camera","camera-retro":"Camera",picture:"Picture",image:"Image",images:"Images",photo:"Photo",film:"Video",record:"Record",broadcast:"Broadcast","chevron-right-circle":"Next","chevron-left-circle":"Previous","double-arrow-right":"Next","double-arrow-left":"Previous","angles-right":"Next","angles-left":"Previous","angles-up":"Collapse","angles-down":"Expand",send:"Send","paper-plane":"Send",submit:"Submit",paperclip:"Attach file",attach:"Attach","file-attachment":"Attach file",signature:"Signature","pen-to-square":"Edit","pencil-square":"Edit","pencil-alt":"Edit","square-pen":"Edit",file:"File","file-alt":"Text file","file-text":"Text file","file-lines":"Text file","file-pdf":"PDF document","file-word":"Word document","file-excel":"Excel spreadsheet","file-powerpoint":"PowerPoint presentation","file-zip":"ZIP archive","file-archive":"Archive","file-image":"Image file","file-video":"Video file","file-audio":"Audio file","file-code":"Code file","file-csv":"CSV file",folder:"Folder","folder-open":"Open folder",book:"Book","book-open":"Book",newspaper:"News","bookmark-fill":"Bookmark","cart-plus":"Add to cart","cart-check":"Added to cart","cart-arrow-down":"Add to cart",truck:"Shipping",box:"Package",gift:"Gift",tag:"Tag",tags:"Tags",percent:"Discount","credit-card":"Credit card",wallet:"Wallet",money:"Money","money-bill":"Money","dollar-sign":"Price","euro-sign":"Price","pound-sign":"Price",receipt:"Receipt",store:"Store",shop:"Shop","basket-plus":"Add to basket","heart-fill":"Favorited","star-fill":"Rated","thumbs-up":"Like","thumbs-down":"Dislike",like:"Like",dislike:"Dislike",comment:"Comment",comments:"Comments",chat:"Chat","chat-bubble":"Chat",message:"Message","message-circle":"Message","message-square":"Message",bell:"Notifications","bell-fill":"Notifications",notifications:"Notifications",inbox:"Inbox",archive:"Archive",flag:"Flag",pin:"Pin","pin-fill":"Pinned",thumbtack:"Pin","sign-in":"Sign in","sign-in-alt":"Sign in","sign-out":"Sign out","sign-out-alt":"Sign out","log-in":"Log in","log-out":"Log out",logout:"Log out",login:"Log in","user-plus":"Add user","user-minus":"Remove user","user-circle":"User profile","user-avatar":"User avatar",users:"Users",key:"Password",shield:"Security","shield-check":"Security verified","id-card":"ID card","id-badge":"ID badge","universal-access":"Accessibility","accessible-icon":"Accessibility",wheelchair:"Wheelchair access",braille:"Braille","sign-language":"Sign language","closed-captioning":"Captions",cc:"Captions",sun:"Light mode",moon:"Dark mode",contrast:"Contrast",palette:"Theme",brush:"Theme",globe:"Global",earth:"Global",map:"Map",compass:"Compass",directions:"Directions",route:"Route",navigation:"Navigation",crosshairs:"Locate",spinner:"Loading",loader:"Loading",loading:"Loading","circle-notch":"Loading",hourglass:"Waiting","clock-fill":"Time","check-square":"Confirm","square-check":"Confirm","circle-check":"Confirm","circle-x":"Close",ban:"Blocked",block:"Block","times-circle":"Close",xmark:"Close","xmark-circle":"Close",columns:"Columns view",rows:"Rows view",layout:"Layout",sidebar:"Sidebar","sidebar-toggle":"Toggle sidebar","panel-left":"Left panel","panel-right":"Right panel","list-view":"List view","grid-view":"Grid view",wifi:"Wi-Fi","wifi-off":"Wi-Fi off",bluetooth:"Bluetooth",signal:"Signal",battery:"Battery","battery-full":"Battery full",plug:"Plug",power:"Power","power-off":"Power off","chart-bar":"Bar chart","chart-line":"Line chart","chart-pie":"Pie chart","chart-area":"Area chart","bar-chart":"Bar chart","line-chart":"Line chart","pie-chart":"Pie chart",analytics:"Analytics",statistics:"Statistics","trending-up":"Trending up","trending-down":"Trending down"},j=/^(fa|fas|far|fab|fal|fad|fass|bi|bi-icon|material-icons|material-symbols|ion|ionicon|feather|lucide|dashicons|glyphicon|icofont|heroicon)-/;function W(F,P,V){var z=[];if(F)for(var J=F.split(/\s+/),Q=0;Q<J.length;Q++){var ie=J[Q];if(ie){var ne=ie.toLowerCase().replace(j,"").replace(/^icon-/,"");ne&&ne!==ie.toLowerCase()&&z.push(ne);}}if(P&&z.push(P.toLowerCase().trim()),V){var se=V.trim().toLowerCase();se.length<30&&/^[a-z_-]+$/.test(se)&&z.push(se.replace(/_/g,"-"));}for(var we=0;we<z.length;we++)if(O[z[we]])return O[z[we]];for(var Te=0;Te<z.length;Te++)for(var Ee=z[Te].split("-"),De=0;De<Ee.length;De++)if(O[Ee[De]])return O[Ee[De]];return null}var K;function G(F){if(!F)return null;var P=F.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+))?\s*\)/);if(P)return [parseInt(P[1],10),parseInt(P[2],10),parseInt(P[3],10),P[4]?parseFloat(P[4]):1];if(F==="transparent"||F==="none")return [0,0,0,0];try{if(K===void 0){var V=document.createElement("canvas");V.width=1,V.height=1,K=V.getContext("2d",{willReadFrequently:!0});}if(!K)return null;K.clearRect(0,0,1,1),K.fillStyle="#000000",K.fillStyle=F,K.fillRect(0,0,1,1);var z=K.getImageData(0,0,1,1).data;return [z[0],z[1],z[2],z[3]/255]}catch{return null}}function N(F,P,V){var z=function(J){var Q=J/255;return Q<=.03928?Q/12.92:Math.pow((Q+.055)/1.055,2.4)};return .2126*z(F)+.7152*z(P)+.0722*z(V)}function B(F,P){var V=N(F[0],F[1],F[2]),z=N(P[0],P[1],P[2]),J=Math.max(V,z),Q=Math.min(V,z);return (J+.05)/(Q+.05)}Object.assign(p,{__isUnique:m,__isGeneratedId:h,__cleanClasses:A,__tagWithClass:b,__nthSelector:w,__fullPath:T,uniqueSel:R,isVisible:E,__resolveIdRefs:k,getAccessibleName:L,isWidget:y,isHiddenFromAT:_,isTrackingPixel:C,getNearbyContext:I,__ICON_LABELS:O,__ICON_PREFIX_STRIP:j,lookupIconLabel:W,__colorCtx:K,parseCssColor:G,relLuminance:N,contrastRatio:B}),p.__waDomKernelInstalled=true;}var Rg="1.9.0";function jL(p){return {async evaluate(d,...v){if(typeof d!="function")throw new Error("string evaluate not supported in DOM mode");return await d(...v)},async addScriptTag(){},url:()=>p.location.href}}async function cO(p={}){let d=p.window??globalThis;if(typeof d.document>"u")throw new Error("scanDocument requires a DOM (window.document)");Tg(d);let v=jL(d),m=[],h=[],A=[],b=[];await pu(v);let w=await ug(v,h,A,{skipFocusMutating:p.interactiveChecks!==true,internalBugs:b});if(m.push(...w.map(gg)),p.includeAxe!==false)try{let L=await Promise.resolve().then(()=>E3(Ig(),1)),y=await(L.default??L).run(d.document,{runOnly:{type:"tag",values:Du(p.wcagTags??xu,p.level)},rules:hg(Du(p.wcagTags??xu,p.level)),resultTypes:["violations","incomplete"]});for(let _ of y.violations??[])for(let C of _.nodes??[])m.push({id:`axe-${_.id}-${Lo(Ya(C.target))}`,source:"axe-core",type:_.id,wcag:_u(_.tags),level:Eu(_.tags),impact:Au(_.impact),message:_.help,selector:Ya(C.target),html:C.html?.slice(0,300)});for(let _ of y.incomplete??[])for(let C of _.nodes??[])m.push({id:`axe-incomplete-${_.id}-${Lo(Ya(C.target))}`,source:"axe-core",type:_.id,wcag:_u(_.tags),level:Eu(_.tags),impact:Au(_.impact),message:_.help,selector:Ya(C.target),html:C.html?.slice(0,300),confidence:"needs_review",reviewReason:"axe-core flagged this as needing human review"});}catch{A.push("axe:failed \u2014 axe-core did not complete; results are detector-only");}let T=yu(Io(m).verdicts);try{T=await fg(v,T);}catch{}try{T=await pg(v,T);}catch{}try{T=await cg(v,T);}catch{}T=Xa(T,p.level??"AA");let R=Io(T),E=R.verdicts,k;if(p.judge)try{let L=Xa([...Io(m).undecided,...R.undecided],p.level??"AA"),D=await kg(v,L,{...p.judge,url:d.location.href,level:p.judge.level??p.level??"AA",vision:!1});D.judged.length&&(k=D.judged),D.promoted.length&&(E=yu([...E,...D.promoted]));}catch{}try{E=await gu(v,E,b);}catch{}return hu(b,await mu(v)),{url:d.location.href,timestamp:new Date().toISOString(),engine:Rg,issues:E,internal_bugs:b,incomplete:[],...k?{judged:k}:{},...h.length?{truncated:h}:{},...A.length?{engineWarnings:A}:{},summary:vg(E)}}/*! Bundled license information:
|
|
400
|
+
${JSON.stringify(d,null,1)}`}function IL(p,d={}){let v=p.vision&&p.items.some(A=>A.screenshot),m=v?d.visionModel||yL:d.textModel||xg,h=[{type:"text",text:FL(p)}];if(v)for(let A of p.items)A.screenshot&&(h.push({type:"text",text:`Crop for ${A.id}:`}),h.push({type:"image_url",image_url:{url:`data:image/png;base64,${A.screenshot}`}}));return {model:m,temperature:0,max_tokens:4096,...m===xg&&d.disableTextModelReasoning?{reasoning:{enabled:false}}:{},messages:[{role:"system",content:RL},{role:"user",content:h}]}}function LL(p){let d=(p.baseUrl||bL).replace(/\/+$/,""),v=false;try{let m=new URL(d).hostname;v=m==="openrouter.ai"||m.endsWith(".openrouter.ai");}catch{}return async(m,h)=>{let A=await fetch(`${d}/chat/completions`,{method:"POST",signal:h,headers:{"Content-Type":"application/json",Authorization:`Bearer ${p.apiKey}`,"HTTP-Referer":"https://webability.io","X-Title":"WebAbility scanner judge"},body:JSON.stringify(IL(m,{visionModel:p.visionModel,textModel:p.textModel,disableTextModelReasoning:v}))});if(!A.ok)throw new Xn(`judge model HTTP ${A.status}`);let w=(await A.json()).choices?.[0]?.message?.content;if(typeof w=="string")return w;if(Array.isArray(w))return w.map(T=>typeof T?.text=="string"?T.text:"").join("");throw new Error("judge model returned no content")}}function ML(p){let d=p.apiUrl.replace(/\/+$/,"");return async(v,m)=>{let h=await fetch(`${d}/api/judge-incomplete`,{method:"POST",signal:m,redirect:"manual",headers:{"Content-Type":"application/json",...p.token?{Authorization:`Bearer ${p.token}`}:{},...p.internalSecret?{"x-mcp-internal":p.internalSecret}:{}},body:JSON.stringify(v)});if(h.status>=300&&h.status<400)throw new Xn(`judge endpoint redirected (HTTP ${h.status}); not followed`);if(!h.ok)throw new Xn(`judge endpoint HTTP ${h.status}`);return h.json()}}function PL(p){return p.transport?p.transport:p.apiKey?LL({apiKey:p.apiKey,baseUrl:p.baseUrl,visionModel:p.visionModel,textModel:p.textModel}):p.apiUrl?ML({apiUrl:p.apiUrl,token:p.apiToken,internalSecret:p.internalSecret}):null}function OL(p){return p.maxCropChars??(!p.transport&&!p.apiKey&&p.apiUrl?vL:void 0)}async function kg(p,d,v){let m={promoted:[],judged:[]},h=PL(v);if(d.length===0)return m;let A=v.level??"AA",b=v.timeoutMs??hL,w=Date.now()+b,T=Xa([...d],A);if(T.length===0)return m;let R=new Map;for(let N of T){let B=`${N.selector}|${ku(N)}`,F=R.get(B);F?F.members.push(N):R.set(B,{key:B,members:[N],rep:N,ctx:void 0,kind:"generic"});}let E={elements:{}};if(p)try{await p.evaluate("if(typeof globalThis.__name==='undefined'){globalThis.__name=function(t){return t}}"),E=await p.evaluate(DL,{selectors:[...R.keys()].map(N=>R.get(N).rep.selector),maxHtml:Dg});}catch{}for(let N of R.values())N.ctx=E.elements[N.rep.selector],N.ctx&&!N.ctx.found&&(N.ctx=void 0),N.kind=AL(N.rep,N.ctx);let k=new Map;for(let[N,B]of [...R]){if(!B.ctx)continue;let F=`${B.ctx.elementKey}|${ku(B.rep)}`,P=k.get(F);if(!P){k.set(F,B);continue}P.members.push(...B.members),R.delete(N);}let L={promoted:[],judged:[]},D=(N,B)=>{for(let F of N.members){if(B.verdict==="violation"){let P=qL(F,N,B);if(!P)continue;L.promoted.push(P);}L.judged.push({id:F.id.replace("axe-incomplete-","axe-"),type:F.type,verdict:B.verdict,reason:B.reason});}},y=[...R.values()].filter(N=>N.kind==="contrast");if(y.length&&p){for(let B of y)B.pixels=v.measured?.get(B.rep.selector);let N=y.filter(B=>!B.pixels).map(B=>B.rep.selector);if(N.length)try{for(let B of await bg(p,N))for(let F of y)F.rep.selector===B.selector&&(F.pixels=B);}catch{}}let _=[];for(let N of R.values()){let B=h?Po.get(_g(v.url,N.rep,N.ctx?.html??N.rep.html??"")):void 0;if(B){D(N,B);continue}let F=NL(N);if(F!=="drop"){if(F){D(N,F);continue}_.push(N);}}if(_.length===0||!h)return L;let C=v.vision!==false&&!!p&&typeof p.screenshot=="function",I=new Map,O=new Set,j=0,W=OL(v),K=N=>({id:N.rep.id,type:N.rep.type,wcag:N.rep.wcag,message:N.rep.message,selector:N.rep.selector,html:(N.ctx?.html??N.rep.html??"").slice(0,Dg),context:O.has(N.key)?{...Eg(N),cropNote:"no image attached: the crop was too large to send"}:Eg(N),...I.has(N.key)?{screenshot:I.get(N.key)}:{}}),G=C?mL:pL;for(let N=0;N<_.length;N+=G){let B=w-Date.now();if(B<=0)break;let F=_.slice(N,N+G);if(C){for(let ne of F){if(j>=gL||Date.now()>w)break;let se=await VL(p,ne.ctx,W);se&&(j++,se.data?I.set(ne.key,se.data):O.add(ne.key));}if(Date.now()>w)break}let P=new Map(F.map(ne=>[ne.rep.id,ne])),V=new AbortController,z=setTimeout(()=>V.abort(),B),J=null,Q=false,ie=Date.now();try{let ne=await Promise.race([h({url:v.url,level:A,vision:C,items:F.map(K)},V.signal),new Promise((se,we)=>V.signal.addEventListener("abort",()=>we(new Error("judge deadline"))))]);J=TL(ne),Tu()&&console.error(`ai judge: batch ${F.length} items, ${F.filter(se=>I.has(se.key)).length} crops, ${Date.now()-ie}ms, ${J?J.length+" verdicts":"MALFORMED: "+String(ne).slice(0,200)}`);}catch(ne){Tu()&&console.error(`ai judge: batch ${F.length} items failed after ${Date.now()-ie}ms: ${ne.message}`),J=null,Q=ne instanceof Xn;}finally{clearTimeout(z);}if(!J){if(V.signal.aborted||Q)break;continue}for(let ne of J){let se=P.get(ne.id);if(!se)continue;P.delete(ne.id);let we={verdict:ne.verdict,reason:EL(ne.reason),fix:ne.fix};Po.size>=wL&&Po.clear(),Po.set(_g(v.url,se.rep,se.ctx?.html??se.rep.html??""),we),D(se,we);}}return L}function NL(p){let d=p.ctx;if(p.kind==="alt"){if(d?.role==="presentation"||d?.role==="none")return {verdict:"pass",reason:"declared decorative (role=presentation)"};if(d?.ariaHidden)return {verdict:"pass",reason:"hidden from assistive technology (aria-hidden)"};if(d?.img){let{attrW:v,attrH:m,naturalW:h,naturalH:A}=d.img;if(v>0&&v<=1&&m>0&&m<=1||h>0&&h<=1&&A>0&&A<=1)return {verdict:"pass",reason:"1x1 tracking/spacer pixel"}}return d&&Ru(d)?d.control?d.control.name?{verdict:"pass",reason:`${d.control.tag} is named ("${d.control.name.slice(0,40)}"); the background image needs no text`}:null:{verdict:"pass",reason:"CSS background image on a non-interactive element; decorative"}:d?.parentInteractive?.text?{verdict:"pass",reason:`${d.parentInteractive.tag} is named by its visible link text ("${d.parentInteractive.text.slice(0,40)}"); alt may be empty`}:null}if(p.kind==="motion")return d?.reducedMotionHandled?{verdict:"pass",reason:"a prefers-reduced-motion: reduce rule stops this element's animation"}:null;if(p.kind==="contrast"){if(!p.pixels)return "drop";let v=Fu(p.rep,p.pixels.threshold);return p.pixels.worstRatio>=v?{verdict:"pass",reason:`measured ${p.pixels.worstRatio.toFixed(2)}:1 at worst behind the text, meets ${v}:1`}:p.pixels.bestRatio<v*.97?{verdict:"violation",reason:`measured ${p.pixels.bestRatio.toFixed(2)}:1 at best behind the text, below ${v}:1 everywhere`}:null}return p.rep.type==="duplicate_id"&&/first occurrence/i.test(p.rep.reviewReason||"")?{verdict:"pass",reason:"first occurrence of the id; the duplicate is reported on the later copies"}:null}function Eg(p){let d=p.ctx,v={};return p.rep.reviewReason&&(v.engineNote=p.rep.reviewReason),d&&(v.tag=d.tag,d.nearText&&(v.nearbyText=d.nearText),d.parentInteractive&&(v.parentControl=d.parentInteractive),p.kind==="alt"&&Ru(d)&&d.control&&(v.control={tag:d.control.tag,accessibleName:d.control.name}),p.kind==="alt"&&d.img&&(v.image={src:d.img.src,alt:d.img.alt,width:d.img.naturalW||d.img.attrW||d.rect.w,height:d.img.naturalH||d.img.attrH||d.rect.h}),p.kind==="contrast"&&p.pixels&&(v.fg=Un(p.pixels.fg),v.threshold=Fu(p.rep,p.pixels.threshold),v.bestRatio=Cg(p.pixels.bestRatio),v.worstRatio=Cg(p.pixels.worstRatio),v.fontSize=d.fontSize,v.fontWeight=d.fontWeight),p.kind==="generic"&&(v.fg=Un(d.fg),v.bg=Un(d.bg),v.size={w:Math.round(d.rect.w),h:Math.round(d.rect.h)})),v}function Fu(p,d){return p.wcag==="1.4.6"||p.type==="contrast_enhanced"?d===3?4.5:7:d}var Cg=p=>Math.round(p*100)/100;function qL(p,d,v){let m=kL(p);if(d.kind==="alt"){let A=CL(v.fix?.value);return A?Ru(d.ctx)?{...m,fix:{attribute:"aria-label",currentValue:"",suggestedValue:A,needsManualReview:false}}:{...m,fix:{attribute:"alt",currentValue:d.ctx?.img?.alt??p.fix?.currentValue??"",suggestedValue:A,needsManualReview:false}}:null}if(d.kind==="contrast"){let A=d.pixels;if(!A)return null;let b=Un(A.fg),w=Fu(p,A.threshold),T=A.worstBg?Un(A.worstBg):null,R=A.bestBg?Un(A.bestBg):null,E=y=>!!y&&!!T&&An(y,T)>=w&&(!R||An(y,R)>=w),k,L=SL(v.fix?.value),D=T?BL(b,T,w):null;return L&&L!==b.toLowerCase()&&E(L)?k=`color:${L} !important;`:E(D)?k=`color:${D} !important;`:R&&An(b,R)>=w&&(k=`background-color:${R} !important;`),{...m,impact:"serious",message:`contrast: ${b} text on its rendered background measures ${A.worstRatio.toFixed(2)}:1 at worst (${A.bestRatio.toFixed(2)}:1 at best, from pixels; judge: ${v.reason||"not readable"}), needs ${w}:1`,fix:{attribute:"style",currentValue:b,...k?{suggestedValue:k}:{},needsManualReview:true}}}let h=p.fix;return h?{...m,fix:h}:v.fix?.attribute&&v.fix.value?{...m,fix:{attribute:v.fix.attribute,currentValue:"",suggestedValue:v.fix.value,needsManualReview:true}}:m}function BL(p,d,v){let m=p.match(Sg);if(!m)return null;let h=parseInt(m[1],16),A=[h>>16&255,h>>8&255,h&255],b=R=>"#"+R.map(E=>Math.round(Math.min(255,Math.max(0,E))).toString(16).padStart(2,"0")).join(""),w=(R,E)=>b(A.map(k=>E?k*(1-R):k+(255-k)*R)),T=null;for(let R of [true,false]){if(An(w(1,R),d)<v)continue;let E=0,k=1;for(let D=0;D<24;D++){let y=(E+k)/2;An(w(y,R),d)>=v?k=y:E=y;}let L=w(k,R);An(L,d)>=v&&(!T||k<T.t)&&(T={t:k,hex:L});}return T?.hex??null}var HL=[1,.6,.35];async function VL(p,d,v){let m=p.screenshot;if(typeof m!="function"||!d||d.rect.w<2||d.rect.h<2||d.hidden)return null;try{let A=Math.min(1200,d.rect.w+16),b=Math.min(600,d.rect.h+16),w=d.rect.x+d.rect.w/2,T=d.rect.y+d.rect.h/2,R=globalThis.Buffer;if(!R)return null;let E=0;for(let k of v===void 0?[1]:HL){let L=Math.max(2,Math.round(A*k)),D=Math.max(2,Math.round(b*k)),y=k===1?Math.max(0,d.rect.x-8):Math.max(0,w-L/2),_=k===1?Math.max(0,d.rect.y-8):Math.max(0,T-D/2),C=await m.call(p,{clip:{x:y,y:_,width:L,height:D},fullPage:!0,type:"png",animations:"disabled"}),I=R.from(C).toString("base64");if(E=I.length,v===void 0||I.length<=v)return {data:I}}return Tu()&&console.error(`ai judge: crop for ${d.tag} left out (${E} base64 chars > ${v} at the smallest clip)`),{}}catch{return null}}function Tg(p=globalThis){if(p.__waDomKernelInstalled)return;function m(F){try{return document.querySelectorAll(F).length===1}catch{return false}}function h(F){if(!F||/^_?[Rr]_[a-z0-9]+_/.test(F)||/^:[Rr][0-9a-z]+:/.test(F)||/^«[Rr][0-9a-z]+»/.test(F)||/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(F)||/^[\w-]*(react|gatsby|root|__next|hash|uuid)[\w-]*$/i.test(F)||/^(radix|headlessui|mui|mantine|cdk|ng|ember|downshift|react-select|react-aria|floating-ui)[-_:]/i.test(F)||/[0-9a-f]{16,}/i.test(F))return true;for(var P=F.split(/[-_:.]/).filter(Boolean),V=P.some(function(ne){var se=(ne.match(/[a-z]/gi)||[]).length,we=(ne.match(/[aeiou]/gi)||[]).length;return se>=4&&we>=1&&!/\d/.test(ne)}),z=0;z<P.length;z++){var J=P[z];if(!V&&/^\d{7,}$/.test(J)||/^[0-9a-f]{13}$/i.test(J)&&/[a-f]/i.test(J)&&/\d/.test(J))return true;if(J.length>=7&&/\d/.test(J)&&/[a-z]/i.test(J)){var Q=(J.match(/[aeiou]/gi)||[]).length,ie=(J.match(/[a-z]/gi)||[]).length;if(ie>=4&&Q/ie<.2||(J.match(/\d[a-z]|[a-z]\d/gi)||[]).length>=4)return true}}return false}function A(F){if(!F.classList||!F.classList.length)return [];for(var P=[],V=0;V<F.classList.length&&P.length<3;V++){var z=F.classList[V];z&&(/^(active|open|focus|hover|disabled|selected|hidden|sr-only|css-[a-z0-9]{4,}|jss[0-9]+|sc-[a-z0-9]+|[a-z]+-[a-f0-9]{6,}|_\d|chakra-|MuiBox-|MuiButton-)$/i.test(z)||/^[a-z][a-z0-9_-]{1,40}$/i.test(z)&&P.push(z));}return P}function b(F){var P=F.tagName.toLowerCase(),V=A(F);return V.length?P+"."+V.map(function(z){return CSS.escape(z)}).join("."):P}function w(F){var P=F.tagName.toLowerCase();if(!F.parentElement)return P;var V=Array.from(F.parentElement.children).filter(function(z){return z.tagName===F.tagName});return V.length===1?P:P+":nth-of-type("+(V.indexOf(F)+1)+")"}function T(F){for(var P=[],V=F;V&&V!==document.body&&V!==document.documentElement;)P.unshift(w(V)),V=V.parentElement;return P.join(" > ")}function R(F){if(!F||F===document.body||F===document.documentElement)return "body";if(F.id&&!h(F.id)){var P="#"+CSS.escape(F.id);if(m(P))return P}for(var V=["data-testid","data-cy","data-qa","data-test","data-component","data-id","data-key"],z=0;z<V.length;z++){var J=F.getAttribute(V[z]);if(J&&J.length<60){var Q=F.tagName.toLowerCase()+"["+V[z]+'="'+CSS.escape(J)+'"]';if(m(Q))return Q}}var ie=b(F);if(ie.indexOf(".")!==-1&&m(ie))return ie;for(var ne=[],se=null,we=F;we&&we!==document.body&&we!==document.documentElement;){if(we.id&&!h(we.id)){var Te="#"+CSS.escape(we.id);if(m(Te)){se=Te;break}}var Ee=b(we);if(Ee.indexOf(".")!==-1&&m(Ee)){se=Ee;break}if(ne.unshift(we),we=we.parentElement,ne.length>6)break}var De=ne.map(function(Ce){var kt=b(Ce);if(kt.indexOf(".")!==-1&&Ce.parentElement){var Tr=Ce.parentElement.querySelectorAll(":scope > "+kt);if(Tr.length===1)return "> "+kt}return "> "+w(Ce)}).join(" "),Ne="";if(se&&De?Ne=(se+" "+De).slice(0,200):se&&(Ne=se),Ne&&m(Ne))return Ne;var Re=T(F);return Re&&m(Re)?Re:Ne||Re||b(F)}function E(F){if(!F)return false;let P=getComputedStyle(F);if(P.display==="none"||P.visibility==="hidden")return false;let V=parseFloat(P.opacity);if(!isNaN(V)&&V<.1)return false;if(!isNaN(V)&&V<.5){var z=P.transform||"";if(z&&z!=="none"&&z!=="matrix(1, 0, 0, 1, 0, 0)")return false}let J=F.getBoundingClientRect();if(J.width<=1||J.height<=1)return false;var Q=P.clipPath||"";return !(Q!=="none"&&/inset\(\s*(?:50|100)%/.test(Q)||/rect\(\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*\)/.test(P.clip||""))}function k(F){if(!F)return "";for(var P=[],V=String(F).trim().split(/\s+/),z=0;z<V.length;z++){var J=document.getElementById(V[z]);if(J){var Q=(J.textContent||"").trim();Q&&P.push(Q);}}return P.join(" ").replace(/\s+/g," ").trim()}function L(F){var P=k(F.getAttribute("aria-labelledby"));if(P)return P;var V=F.getAttribute("aria-label")||"";if(V.trim())return V.trim();var z=F.tagName?F.tagName.toLowerCase():"";if(z==="input"||z==="select"||z==="textarea"){if(F.id)try{var J=document.querySelector('label[for="'+CSS.escape(F.id)+'"]');if(J&&(J.textContent||"").trim())return (J.textContent||"").trim().replace(/\s+/g," ")}catch{}var Q=F.closest?F.closest("label"):null;if(Q&&(Q.textContent||"").trim())return (Q.textContent||"").trim().replace(/\s+/g," ")}var ie=(F.textContent||"").trim().replace(/\s+/g," ");if(!ie&&F.querySelector){var ne=F.querySelector('img[alt]:not([alt=""])');if(ne&&(ie=(ne.getAttribute("alt")||"").trim()),!ie){var se=F.querySelector("svg > title");se&&(ie=(se.textContent||"").trim());}}if(ie)return ie;var we=F.getAttribute("title")||"";return we.trim()}let D="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=EquallyAI],[id*=ae_],[class*=ae-exclude],[id*=goog-gt],[class*=goog-te],[id*=recaptcha],[class*=intercom],[class*=drift-],[class*=crisp-],[class*=tawk-],[class*=hubspot-],[class*=fb-],[class*=wistia],#wpadminbar,[class*=cmplz-btn],[class*=cmplz-link],[id*=cmplz-],[class*=onetrust],[class*=cookiebot],[class*=borlabs],[class*=brlbs-],[id*=wp-ada-compliance],[class*=wp-ada-compliance],[id*=webability-widget],[class*=webability-a11y]";function y(F){return F?F.closest(D)!==null:false}function _(F){if(!F)return false;if(F.getAttribute("aria-hidden")==="true"||F.getAttribute("role")==="presentation"||F.getAttribute("role")==="none")return true;let P=F.parentElement,V=0;for(;P&&P!==document.body&&V<6;){if(P.getAttribute("aria-hidden")==="true")return true;P=P.parentElement,V++;}return false}function C(F){let P=F.naturalWidth||F.width||0,V=F.naturalHeight||F.height||0;if(P<=2&&V<=2)return true;let z=F.getBoundingClientRect();if(z.width<=2&&z.height<=2)return true;let J=(F.src||"").toLowerCase();return !!(J.includes("pixel")||J.includes("beacon")||J.includes("tracker")||J.includes("analytics")||J.includes("adsrvr")||J.includes("doubleclick")||J.includes("facebook.com/tr"))}function I(F){var P=F.closest("article,section,li,.card,[class*=card],[class*=post],[class*=item],[class*=product],[class*=entry]");P||(P=F.closest("div,nav,main,aside,header,footer"));var V=P?P.querySelector("h1,h2,h3,h4,h5,h6"):null,z=V?(V.textContent||"").trim().slice(0,80):"",J=F.parentElement,Q=J?J.tagName.toLowerCase():"",ie=J&&J.getAttribute("role")||"",ne="";if(P){var se=P.querySelector("p,.description,.excerpt,[class*=desc],[class*=summary]");se&&(ne=(se.textContent||"").trim().slice(0,120));}var we="";if(P){var Te=P.querySelector('img[alt]:not([alt=""])');Te&&(we=(Te.getAttribute("alt")||"").trim().slice(0,60));}return {nearbyHeading:z,parentTag:Q,parentRole:ie,cardText:ne,imgAlt:we}}var O={times:"Close",x:"Close","x-lg":"Close","x-circle":"Close","x-mark":"Close",close:"Close","close-circle":"Close",clear:"Clear",cancel:"Cancel",dismiss:"Dismiss","chevron-right":"Next","arrow-right":"Next","caret-right":"Next","angle-right":"Next","chevron-left":"Previous","arrow-left":"Previous","caret-left":"Previous","angle-left":"Previous","chevron-up":"Collapse","arrow-up":"Up","caret-up":"Collapse","angle-up":"Collapse","chevron-down":"Expand","arrow-down":"Down","caret-down":"Expand","angle-down":"Expand",menu:"Menu",bars:"Menu",hamburger:"Menu",list:"Menu",grid:"Grid view",th:"Grid view",search:"Search","magnifying-glass":"Search",magnify:"Search",zoom:"Zoom",user:"User profile",person:"User profile",profile:"User profile","account-circle":"User profile",cart:"Shopping cart","shopping-cart":"Shopping cart",basket:"Shopping cart",bag:"Shopping bag",heart:"Favorite",bookmark:"Bookmark",star:"Rate",home:"Home",house:"Home",gear:"Settings",cog:"Settings",settings:"Settings",tool:"Tools",trash:"Delete","trash-can":"Delete",delete:"Delete",edit:"Edit",pencil:"Edit",pen:"Edit",plus:"Add",add:"Add","plus-circle":"Add",minus:"Remove","minus-circle":"Remove",check:"Confirm","check-circle":"Confirm",checkmark:"Confirm",info:"Information","info-circle":"Information",question:"Help","question-circle":"Help",help:"Help",warning:"Warning",exclamation:"Warning","exclamation-triangle":"Warning",alert:"Alert","external-link":"Open in new tab","external-link-alt":"Open in new tab","box-arrow-up-right":"Open in new tab",download:"Download",upload:"Upload",share:"Share","share-alt":"Share",copy:"Copy",clipboard:"Copy to clipboard",print:"Print",save:"Save",envelope:"Email",email:"Email",mail:"Email",at:"Email",phone:"Phone",telephone:"Phone",mobile:"Mobile phone",location:"Location","map-marker":"Location","map-pin":"Location","geo-alt":"Location",calendar:"Calendar","calendar-alt":"Calendar",clock:"Time",stopwatch:"Timer",eye:"Show","eye-slash":"Hide","eye-off":"Hide",lock:"Lock",unlock:"Unlock",padlock:"Lock",filter:"Filter",sliders:"Adjust",sort:"Sort","sort-alpha-down":"Sort ascending","sort-alpha-up":"Sort descending",refresh:"Refresh",reload:"Refresh",sync:"Refresh","arrows-rotate":"Refresh",play:"Play","play-circle":"Play",pause:"Pause",stop:"Stop","volume-up":"Volume up","volume-down":"Volume down","volume-mute":"Mute",mute:"Mute",speaker:"Audio",twitter:"Twitter","x-twitter":"X (Twitter)","square-x-twitter":"X (Twitter)",facebook:"Facebook","facebook-f":"Facebook","facebook-square":"Facebook","square-facebook":"Facebook","facebook-messenger":"Facebook Messenger",instagram:"Instagram","square-instagram":"Instagram",linkedin:"LinkedIn","linkedin-in":"LinkedIn","square-linkedin":"LinkedIn",youtube:"YouTube","youtube-square":"YouTube","square-youtube":"YouTube",github:"GitHub","github-alt":"GitHub",gitlab:"GitLab",bitbucket:"Bitbucket",tiktok:"TikTok",pinterest:"Pinterest","pinterest-p":"Pinterest","square-pinterest":"Pinterest",rss:"RSS feed","rss-square":"RSS feed",snapchat:"Snapchat","snapchat-ghost":"Snapchat",reddit:"Reddit","reddit-alien":"Reddit",discord:"Discord",slack:"Slack",whatsapp:"WhatsApp",telegram:"Telegram","telegram-plane":"Telegram",vimeo:"Vimeo","vimeo-v":"Vimeo",twitch:"Twitch",tumblr:"Tumblr",medium:"Medium",dribbble:"Dribbble",behance:"Behance",flickr:"Flickr",threads:"Threads",mastodon:"Mastodon",bluesky:"Bluesky",meetup:"Meetup",weibo:"Weibo",wechat:"WeChat",line:"Line",viber:"Viber",skype:"Skype",microsoft:"Microsoft",apple:"Apple",google:"Google","google-plus":"Google+",yelp:"Yelp",tripadvisor:"TripAdvisor",spotify:"Spotify",soundcloud:"SoundCloud",amazon:"Amazon",etsy:"Etsy",ebay:"eBay","arrow-up-right-from-square":"Open in new tab","square-arrow-up-right":"Open in new tab","up-right-from-square":"Open in new tab",back:"Back",forward:"Forward",return:"Return",reply:"Reply","reply-all":"Reply all","forward-arrow":"Forward",redo:"Redo",undo:"Undo","undo-alt":"Undo","rotate-left":"Undo","rotate-right":"Redo",expand:"Expand","expand-arrows-alt":"Expand",compress:"Collapse",minimize:"Minimize",maximize:"Maximize",fullscreen:"Enter fullscreen","fullscreen-exit":"Exit fullscreen",move:"Move",arrows:"Move","arrows-alt":"Move",drag:"Drag",grip:"Drag handle","grip-vertical":"Drag handle","grip-lines":"Drag handle",ellipsis:"More actions","ellipsis-v":"More actions","ellipsis-vertical":"More actions","ellipsis-h":"More actions","ellipsis-horizontal":"More actions","more-vert":"More actions","more-horiz":"More actions","more-vertical":"More actions","more-horizontal":"More actions","dots-vertical":"More actions","three-dots":"More actions","three-dots-vertical":"More actions","play-fill":"Play","pause-fill":"Pause","stop-fill":"Stop","play-pause":"Play/pause",backward:"Rewind","forward-step":"Next track","backward-step":"Previous track","fast-forward":"Fast forward",rewind:"Rewind","skip-forward":"Skip forward","skip-backward":"Skip backward","skip-next":"Next track","skip-previous":"Previous track",volume:"Volume","volume-off":"Mute","volume-x":"Mute","speaker-mute":"Mute",headphones:"Audio",microphone:"Microphone",mic:"Microphone","mic-off":"Mute microphone","microphone-slash":"Mute microphone",video:"Video","video-camera":"Video",camera:"Camera","camera-retro":"Camera",picture:"Picture",image:"Image",images:"Images",photo:"Photo",film:"Video",record:"Record",broadcast:"Broadcast","chevron-right-circle":"Next","chevron-left-circle":"Previous","double-arrow-right":"Next","double-arrow-left":"Previous","angles-right":"Next","angles-left":"Previous","angles-up":"Collapse","angles-down":"Expand",send:"Send","paper-plane":"Send",submit:"Submit",paperclip:"Attach file",attach:"Attach","file-attachment":"Attach file",signature:"Signature","pen-to-square":"Edit","pencil-square":"Edit","pencil-alt":"Edit","square-pen":"Edit",file:"File","file-alt":"Text file","file-text":"Text file","file-lines":"Text file","file-pdf":"PDF document","file-word":"Word document","file-excel":"Excel spreadsheet","file-powerpoint":"PowerPoint presentation","file-zip":"ZIP archive","file-archive":"Archive","file-image":"Image file","file-video":"Video file","file-audio":"Audio file","file-code":"Code file","file-csv":"CSV file",folder:"Folder","folder-open":"Open folder",book:"Book","book-open":"Book",newspaper:"News","bookmark-fill":"Bookmark","cart-plus":"Add to cart","cart-check":"Added to cart","cart-arrow-down":"Add to cart",truck:"Shipping",box:"Package",gift:"Gift",tag:"Tag",tags:"Tags",percent:"Discount","credit-card":"Credit card",wallet:"Wallet",money:"Money","money-bill":"Money","dollar-sign":"Price","euro-sign":"Price","pound-sign":"Price",receipt:"Receipt",store:"Store",shop:"Shop","basket-plus":"Add to basket","heart-fill":"Favorited","star-fill":"Rated","thumbs-up":"Like","thumbs-down":"Dislike",like:"Like",dislike:"Dislike",comment:"Comment",comments:"Comments",chat:"Chat","chat-bubble":"Chat",message:"Message","message-circle":"Message","message-square":"Message",bell:"Notifications","bell-fill":"Notifications",notifications:"Notifications",inbox:"Inbox",archive:"Archive",flag:"Flag",pin:"Pin","pin-fill":"Pinned",thumbtack:"Pin","sign-in":"Sign in","sign-in-alt":"Sign in","sign-out":"Sign out","sign-out-alt":"Sign out","log-in":"Log in","log-out":"Log out",logout:"Log out",login:"Log in","user-plus":"Add user","user-minus":"Remove user","user-circle":"User profile","user-avatar":"User avatar",users:"Users",key:"Password",shield:"Security","shield-check":"Security verified","id-card":"ID card","id-badge":"ID badge","universal-access":"Accessibility","accessible-icon":"Accessibility",wheelchair:"Wheelchair access",braille:"Braille","sign-language":"Sign language","closed-captioning":"Captions",cc:"Captions",sun:"Light mode",moon:"Dark mode",contrast:"Contrast",palette:"Theme",brush:"Theme",globe:"Global",earth:"Global",map:"Map",compass:"Compass",directions:"Directions",route:"Route",navigation:"Navigation",crosshairs:"Locate",spinner:"Loading",loader:"Loading",loading:"Loading","circle-notch":"Loading",hourglass:"Waiting","clock-fill":"Time","check-square":"Confirm","square-check":"Confirm","circle-check":"Confirm","circle-x":"Close",ban:"Blocked",block:"Block","times-circle":"Close",xmark:"Close","xmark-circle":"Close",columns:"Columns view",rows:"Rows view",layout:"Layout",sidebar:"Sidebar","sidebar-toggle":"Toggle sidebar","panel-left":"Left panel","panel-right":"Right panel","list-view":"List view","grid-view":"Grid view",wifi:"Wi-Fi","wifi-off":"Wi-Fi off",bluetooth:"Bluetooth",signal:"Signal",battery:"Battery","battery-full":"Battery full",plug:"Plug",power:"Power","power-off":"Power off","chart-bar":"Bar chart","chart-line":"Line chart","chart-pie":"Pie chart","chart-area":"Area chart","bar-chart":"Bar chart","line-chart":"Line chart","pie-chart":"Pie chart",analytics:"Analytics",statistics:"Statistics","trending-up":"Trending up","trending-down":"Trending down"},j=/^(fa|fas|far|fab|fal|fad|fass|bi|bi-icon|material-icons|material-symbols|ion|ionicon|feather|lucide|dashicons|glyphicon|icofont|heroicon)-/;function W(F,P,V){var z=[];if(F)for(var J=F.split(/\s+/),Q=0;Q<J.length;Q++){var ie=J[Q];if(ie){var ne=ie.toLowerCase().replace(j,"").replace(/^icon-/,"");ne&&ne!==ie.toLowerCase()&&z.push(ne);}}if(P&&z.push(P.toLowerCase().trim()),V){var se=V.trim().toLowerCase();se.length<30&&/^[a-z_-]+$/.test(se)&&z.push(se.replace(/_/g,"-"));}for(var we=0;we<z.length;we++)if(O[z[we]])return O[z[we]];for(var Te=0;Te<z.length;Te++)for(var Ee=z[Te].split("-"),De=0;De<Ee.length;De++)if(O[Ee[De]])return O[Ee[De]];return null}var K;function G(F){if(!F)return null;var P=F.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+))?\s*\)/);if(P)return [parseInt(P[1],10),parseInt(P[2],10),parseInt(P[3],10),P[4]?parseFloat(P[4]):1];if(F==="transparent"||F==="none")return [0,0,0,0];try{if(K===void 0){var V=document.createElement("canvas");V.width=1,V.height=1,K=V.getContext("2d",{willReadFrequently:!0});}if(!K)return null;K.clearRect(0,0,1,1),K.fillStyle="#000000",K.fillStyle=F,K.fillRect(0,0,1,1);var z=K.getImageData(0,0,1,1).data;return [z[0],z[1],z[2],z[3]/255]}catch{return null}}function N(F,P,V){var z=function(J){var Q=J/255;return Q<=.03928?Q/12.92:Math.pow((Q+.055)/1.055,2.4)};return .2126*z(F)+.7152*z(P)+.0722*z(V)}function B(F,P){var V=N(F[0],F[1],F[2]),z=N(P[0],P[1],P[2]),J=Math.max(V,z),Q=Math.min(V,z);return (J+.05)/(Q+.05)}Object.assign(p,{__isUnique:m,__isGeneratedId:h,__cleanClasses:A,__tagWithClass:b,__nthSelector:w,__fullPath:T,uniqueSel:R,isVisible:E,__resolveIdRefs:k,getAccessibleName:L,isWidget:y,isHiddenFromAT:_,isTrackingPixel:C,getNearbyContext:I,__ICON_LABELS:O,__ICON_PREFIX_STRIP:j,lookupIconLabel:W,__colorCtx:K,parseCssColor:G,relLuminance:N,contrastRatio:B}),p.__waDomKernelInstalled=true;}var Rg="1.10.0";function jL(p){return {async evaluate(d,...v){if(typeof d!="function")throw new Error("string evaluate not supported in DOM mode");return await d(...v)},async addScriptTag(){},url:()=>p.location.href}}async function cO(p={}){let d=p.window??globalThis;if(typeof d.document>"u")throw new Error("scanDocument requires a DOM (window.document)");Tg(d);let v=jL(d),m=[],h=[],A=[],b=[];await pu(v);let w=await ug(v,h,A,{skipFocusMutating:p.interactiveChecks!==true,internalBugs:b});if(m.push(...w.map(gg)),p.includeAxe!==false)try{let L=await Promise.resolve().then(()=>E3(Ig(),1)),y=await(L.default??L).run(d.document,{runOnly:{type:"tag",values:Du(p.wcagTags??xu,p.level)},rules:hg(Du(p.wcagTags??xu,p.level)),resultTypes:["violations","incomplete"]});for(let _ of y.violations??[])for(let C of _.nodes??[])m.push({id:`axe-${_.id}-${Lo(Ya(C.target))}`,source:"axe-core",type:_.id,wcag:_u(_.tags),level:Eu(_.tags),impact:Au(_.impact),message:_.help,selector:Ya(C.target),html:C.html?.slice(0,300)});for(let _ of y.incomplete??[])for(let C of _.nodes??[])m.push({id:`axe-incomplete-${_.id}-${Lo(Ya(C.target))}`,source:"axe-core",type:_.id,wcag:_u(_.tags),level:Eu(_.tags),impact:Au(_.impact),message:_.help,selector:Ya(C.target),html:C.html?.slice(0,300),confidence:"needs_review",reviewReason:"axe-core flagged this as needing human review"});}catch{A.push("axe:failed \u2014 axe-core did not complete; results are detector-only");}let T=yu(Io(m).verdicts);try{T=await fg(v,T);}catch{}try{T=await pg(v,T);}catch{}try{T=await cg(v,T);}catch{}T=Xa(T,p.level??"AA");let R=Io(T),E=R.verdicts,k;if(p.judge)try{let L=Xa([...Io(m).undecided,...R.undecided],p.level??"AA"),D=await kg(v,L,{...p.judge,url:d.location.href,level:p.judge.level??p.level??"AA",vision:!1});D.judged.length&&(k=D.judged),D.promoted.length&&(E=yu([...E,...D.promoted]));}catch{}try{E=await gu(v,E,b);}catch{}return hu(b,await mu(v)),{url:d.location.href,timestamp:new Date().toISOString(),engine:Rg,issues:E,internal_bugs:b,incomplete:[],...k?{judged:k}:{},...h.length?{truncated:h}:{},...A.length?{engineWarnings:A}:{},summary:vg(E)}}/*! Bundled license information:
|
|
401
401
|
|
|
402
402
|
axe-core/axe.js:
|
|
403
403
|
(*! axe v4.11.3
|