@thg-agentic/hyper-personalisation-web 3.22.2 → 3.24.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/README.md +166 -2
- package/dist/hp.min.js +3 -3
- package/dist/onsite-answers.min.js +1 -0
- package/dist/onsite-render.min.js +182 -0
- package/dist/onsite-wheel.min.js +1 -0
- package/dist/onsite.min.js +1 -0
- package/dist/snippet.min.js +1 -1
- package/package.json +19 -3
- package/src/bootstrap.js +33 -2
- package/src/context.js +20 -7
- package/src/ga4.js +3 -4
- package/src/hp.js +2 -0
- package/src/index.js +100 -5
- package/src/onsite/answers-loader.js +6 -0
- package/src/onsite/answers.js +177 -0
- package/src/onsite/api.js +93 -0
- package/src/onsite/counters.js +144 -0
- package/src/onsite/index.js +525 -0
- package/src/onsite/pow.js +127 -0
- package/src/onsite/preview.js +97 -0
- package/src/onsite/render-loader.js +5 -0
- package/src/onsite/render.js +1507 -0
- package/src/onsite/rich-text.js +73 -0
- package/src/onsite/rules.js +250 -0
- package/src/onsite/styles.js +212 -0
- package/src/onsite/triggers.js +165 -0
- package/src/onsite/wheel-loader.js +5 -0
- package/src/onsite/wheel.js +196 -0
- package/src/onsite-facade.js +123 -0
- package/src/onsite-loader.js +5 -0
- package/src/settings.js +18 -0
- package/src/spec-version.js +1 -1
- package/src/storage-scope.js +5 -0
- package/src/version.js +1 -1
- package/types/bootstrap.d.ts +15 -1
- package/types/events.d.ts +68 -5
- package/types/hp.d.ts +4 -1
- package/types/index.d.ts +10 -0
- package/types/onsite-preview.d.ts +58 -0
- package/types/onsite-wheel.d.ts +11 -0
- package/types/onsite.d.ts +203 -0
package/dist/hp.min.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
(()=>{var qt=e=>{throw TypeError(e)};var vr=(e,t,n)=>t.has(e)||qt("Cannot "+n);var Ft=(e,t,n)=>t.has(e)?qt("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n);var O=(e,t,n)=>(vr(e,t,"access private method"),n);var Se=[];for(let e=2;Se.length<64;e++)Se.every(t=>e%t!==0)&&Se.push(e);var Ht=e=>(e-Math.floor(e))*2**32>>>0,Cr=Se.slice(0,8).map(e=>Ht(Math.sqrt(e))),Pr=Se.map(e=>Ht(Math.cbrt(e))),W=(e,t)=>e>>>t|e<<32-t;function Kt(e){let t=new TextEncoder().encode(String(e)),n=new Uint32Array((t.length+8>>6)*16+16);t.forEach((s,i)=>{n[i>>2]|=s<<24-i%4*8}),n[t.length>>2]|=128<<24-t.length%4*8,n[n.length-2]=Math.floor(t.length/2**29),n[n.length-1]=t.length*8;let r=Uint32Array.from(Cr),o=new Uint32Array(64);for(let s=0;s<n.length;s+=16){for(let w=0;w<64;w++){if(w<16){o[w]=n[s+w];continue}let b=o[w-15],k=o[w-2],E=W(b,7)^W(b,18)^b>>>3,h=W(k,17)^W(k,19)^k>>>10;o[w]=o[w-16]+E+o[w-7]+h}let[i,a,u,d,f,p,g,x]=r;for(let w=0;w<64;w++){let b=W(f,6)^W(f,11)^W(f,25),k=x+b+(f&p^~f&g)+Pr[w]+o[w]|0,h=(W(i,2)^W(i,13)^W(i,22))+(i&a^i&u^a&u)|0;[x,g,p,f,d,u,a,i]=[g,p,f,d+k|0,u,a,i,k+h|0]}[i,a,u,d,f,p,g,x].forEach((w,b)=>{r[b]+=w})}return Array.from(r,s=>s.toString(16).padStart(8,"0")).join("")}var Qe=(e,t)=>e<<t|e>>>32-t;function Gt(e){let t=new Uint32Array((e.length+8>>6)*16+16);e.forEach((s,i)=>{t[i>>2]|=s<<24-i%4*8}),t[e.length>>2]|=128<<24-e.length%4*8,t[t.length-2]=Math.floor(e.length/2**29),t[t.length-1]=e.length*8;let n=Uint32Array.of(1732584193,4023233417,2562383102,271733878,3285377520),r=new Uint32Array(80);for(let s=0;s<t.length;s+=16){for(let p=0;p<80;p++)r[p]=p<16?t[s+p]:Qe(r[p-3]^r[p-8]^r[p-14]^r[p-16],1);let[i,a,u,d,f]=n;for(let p=0;p<80;p++){let g,x;p<20?(g=a&u|~a&d,x=1518500249):p<40?(g=a^u^d,x=1859775393):p<60?(g=a&u|a&d|u&d,x=2400959708):(g=a^u^d,x=3395469782);let w=Qe(i,5)+g+f+x+r[p]|0;[f,d,u,a,i]=[d,u,Qe(a,30),i,w]}[i,a,u,d,f].forEach((p,g)=>{n[g]+=p})}let o=new Uint8Array(20);return n.forEach((s,i)=>{o[i*4]=s>>>24,o[i*4+1]=s>>>16,o[i*4+2]=s>>>8,o[i*4+3]=s}),o}var Or="e28e8ada-5b76-4209-bba9-79b823a0af75",Lr=e=>Array.from(e,t=>t.toString(16).padStart(2,"0")).join("");function zt(e,t){let n=Uint8Array.from(e.replace(/-/g,"").match(/../g),a=>Number.parseInt(a,16)),r=new TextEncoder().encode(t),o=new Uint8Array(16+r.length);o.set(n),o.set(r,16);let s=Gt(o).slice(0,16);s[6]=s[6]&15|80,s[8]=s[8]&63|128;let i=Lr(s);return`${i.slice(0,8)}-${i.slice(8,12)}-${i.slice(12,16)}-${i.slice(16,20)}-${i.slice(20)}`}var re=(e,t)=>typeof e=="string"&&e!==""&&e.length<=t?e:null;function Oe(e,t){return re(e,64)??re(t,256)}function Wt({sessionId:e,slot:t,arm:n}={}){let r=re(e,256);return!r||!re(t,256)||!re(n,256)?null:zt(Or,`${r}:${t}:${n}`)}var Tr="4b1f2c7e-9a3d-4e58-b6c1-2d7f0a9e8c53";function Jt({sessionId:e,surface:t}={}){let n=re(e,256);return!n||!re(t,64)?null:zt(Tr,`${n}:${t}`)}var Nr=Array.from({length:11},(e,t)=>t/10);function Rr(e,t){if(!e.isIntersecting)return!1;let{intersectionRect:n,boundingClientRect:r,rootBounds:o}=e;if(!n||!r)return!0;let s=n.width*n.height,i=r.width*r.height,a=o?Math.min(i,o.width*o.height):i;return a>0&&s/a>=t}function X(e){let{selector:t,onViewable:n,visibleRatio:r=.5,dwellMs:o=1e3,root:s=document}=e,i=new Map,a=new WeakSet,u=new Set,d=h=>{i.has(h)||i.set(h,setTimeout(()=>{i.delete(h),n(h)&&(p?.unobserve(h),u.delete(h))},o))},f=h=>{clearTimeout(i.get(h)),i.delete(h)},p=typeof IntersectionObserver>"u"?null:new IntersectionObserver(h=>{for(let v of h){let S=v.target;if(!Rr(v,r)){u.delete(S),f(S);continue}u.add(S),g()&&d(S)}},{threshold:Nr}),g=()=>typeof document>"u"||document.visibilityState!=="hidden",x=()=>{if(g())for(let h of u)d(h);else for(let h of u)f(h)};document.addEventListener("visibilitychange",x);let w=()=>{for(let h of s.querySelectorAll(t))a.has(h)||(a.add(h),p?.observe(h))},b=typeof MutationObserver>"u"?null:new MutationObserver(()=>w()),k=()=>{w(),b?.observe(s===document?document.body:s,{childList:!0,subtree:!0})},E=s===document&&!document.body;return E?document.addEventListener("DOMContentLoaded",k,{once:!0}):k(),()=>{E&&document.removeEventListener("DOMContentLoaded",k),document.removeEventListener("visibilitychange",x),p?.disconnect(),b?.disconnect();for(let h of i.values())clearTimeout(h);i.clear(),u.clear()}}function et(e,t={}){if(typeof window>"u"||typeof document>"u")return()=>{};let{selector:n="[data-hp-exposure]",visibleRatio:r=.5,dwellMs:o=1e3,root:s=document}=t;return X({selector:n,root:s,visibleRatio:r,dwellMs:o,onViewable(i){let a=i.dataset?.hpExposure?.trim();return a&&e.surfaceViewed({surface:a}),!0}})}var Yt=e=>{try{return new URL(e,document.baseURI).toString()}catch{return e}};function tt(e,t={}){if(typeof window>"u"||typeof document>"u")return()=>{};let{selector:n="[data-hp-list]",tileSelector:r="[data-hp-product]",visibleRatio:o=.5,dwellMs:s=1e3,root:i=document}=t,a=new Set,u=w=>w.closest?.(n)??null,d=w=>{let b=w.dataset.hpList?.trim();return b?{list_id:b,category:w.dataset.hpListCategory?.trim()||null}:null},f=w=>Array.from(w.querySelectorAll(r)).filter(b=>u(b)===w),p=(w,b)=>{try{let k=JSON.parse(w.dataset.hpProduct??"");return!k||typeof k!="object"||!k.product_id?null:{...k,position:k.position??b+1,...k.url?{url:Yt(k.url)}:{},...k.image_url?{image_url:Yt(k.image_url)}:{}}}catch{return null}},g=X({selector:`${n} ${r}`,root:i,visibleRatio:o,dwellMs:s,onViewable(w){let b=u(w);if(!b||b.dataset.hpListView==="manual")return!0;let k=d(b);if(!k||a.has(k.list_id))return!0;let E=new Set,h=f(b).map(p).filter(v=>!v||E.has(v.product_id)?!1:(E.add(v.product_id),!0));return h.length===0||(a.add(k.list_id),e.productListViewed({...k,products:h})),!0}}),x=w=>{let k=w.target?.closest?.("a[href]")?.closest(r);if(!k)return;let E=u(k),h=p(k,E?f(E).indexOf(k):0);h&&e.productClicked({list_id:E?d(E)?.list_id??null:null,products:[h]})};return document.addEventListener("click",x,!0),()=>{document.removeEventListener("click",x,!0),g()}}function N(e,...t){let n=e.dataset??{};for(let r of t){let o=n[r];if(typeof o=="string"&&o.trim()!=="")return o.trim()}return null}function Le(e,...t){let n=N(e,...t);if(n===null)return null;let r=Number(n);return Number.isFinite(r)?Math.trunc(r):null}function Dr(e,t){let n=N(e,"hpPromotion");return n?{promotion_id:n,name:N(e,"hpPromotionName"),creative:N(e,"hpPromotionCreative"),position:N(e,"hpPromotionSlot")??String(t+1)}:null}function nt(e,t={}){if(typeof window>"u"||typeof document>"u")return()=>{};let{selector:n="[data-hp-promotion]",resolve:r=Dr,visibleRatio:o=.5,dwellMs:s=1e3,root:i=document}=t,a=new Set,u=p=>{let g=Array.from(i.querySelectorAll(n)),x=g.indexOf(p);try{return r(p,x<0?g.length:x)}catch{return null}},d=X({selector:n,root:i,visibleRatio:o,dwellMs:s,onViewable(p){let g=u(p);return!g||a.has(g.promotion_id)?!1:(a.add(g.promotion_id),e.promotionViewed(g),!0)}}),f=p=>{let g=p.target;if(!g||typeof g.closest!="function")return;let x=g.closest(n),w=g.closest("a[href]");if(!x||!w||!x.contains(w)&&!w.contains(x))return;let b=u(x);b&&e.promotionClicked({...b,href:w.getAttribute("href")})};return document.addEventListener("click",f,!0),()=>{document.removeEventListener("click",f,!0),d()}}function Mr(e){let t=N(e,"hpRecoRequest"),n=N(e,"hpRecoPlacement"),r=N(e,"hpRecoStrategy");if(!t||!n||!r)return null;let o=N(e,"hpRecoHoldout");return{recommendation_request_id:t,placement:n,strategy:r,recipe:N(e,"hpRecoRecipe"),algorithm_version:N(e,"hpRecoAlgorithmVersion"),experiment:N(e,"hpRecoExperiment"),variant:N(e,"hpRecoVariant"),holdout:o===null?null:o==="true",assignment_bucket:Le(e,"hpRecoBucket"),assignment_unit_kind:N(e,"hpRecoUnitKind"),candidate_set_fingerprint:N(e,"hpRecoFingerprint"),candidate_set_size:Le(e,"hpRecoCandidates"),ranked_by:N(e,"hpRecoRankedBy"),served_at:N(e,"hpRecoServedAt")}}function $r(e,t){let n=N(e,"hpRecoProduct");if(!n)return null;let r=N(e,"hpRecoPrice");return{product_id:n,sku:N(e,"hpRecoSku"),name:N(e,"hpRecoName"),brand:N(e,"hpRecoBrand"),price:r===null||Number.isNaN(Number(r))?null:Number(r),position:Le(e,"hpRecoPosition")??t+1}}function rt(e,t={}){if(typeof window>"u"||typeof document>"u")return()=>{};let{selector:n="[data-hp-reco-request]",tileSelector:r="[data-hp-reco-product]",resolveRail:o=Mr,resolveTile:s=$r,visibleRatio:i=.5,dwellMs:a=1e3,root:u=document}=t,d=new Set,f=new Map,p=new Map,g=(h,...v)=>{try{return h(...v)}catch{return null}},x=h=>typeof h.closest=="function"?h.closest(n):null,w=h=>Array.from(h.querySelectorAll(r)),b=(h,v)=>{if(p.delete(v.recommendation_request_id),d.has(v.recommendation_request_id))return;let S=w(h).map((_,L)=>g(s,_,L)).filter(_=>_?.product_id);if(S.length===0)return;d.add(v.recommendation_request_id);let y=[...f.get(v.recommendation_request_id)?.values()??[]].sort((_,L)=>_.position-L.position);e.recommendationsViewed({...v,products:S,viewable:y})},k=X({selector:`${n} ${r}`,root:u,visibleRatio:i,dwellMs:a,onViewable(h){let v=x(h);if(!v)return!0;let S=g(o,v);if(!S)return!0;let y=S.recommendation_request_id,_=g(s,h,w(v).indexOf(h));if(_?.product_id){f.has(y)||f.set(y,new Map);let L=f.get(y);L.has(_.position)||L.set(_.position,{position:_.position,product_id:_.product_id,viewable_at:new Date().toISOString()})}return!d.has(y)&&!p.has(y)&&p.set(y,setTimeout(()=>b(v,S),0)),!0}}),E=h=>{let v=h.target;if(!v||typeof v.closest!="function")return;let S=v.closest(r);if(!S)return;let y=v.closest("[data-hp-reco-interaction]"),_=v.closest("a[href]"),L=_&&(S.contains(_)||_.contains(S));if(!(y&&S.contains(y))&&!L)return;let R=x(S);if(!R)return;let H=g(o,R);if(!H)return;let K=g(s,S,w(R).indexOf(S));if(!K?.product_id)return;let B=H.recommendation_request_id;d.has(B)||(clearTimeout(p.get(B)),b(R,H)),e.productClicked({recommendation_request_id:H.recommendation_request_id,interaction:N(y??S,"hpRecoInteraction")??"navigate",products:[K]})};return document.addEventListener("click",E,!0),()=>{document.removeEventListener("click",E,!0);for(let h of p.values())clearTimeout(h);p.clear(),k()}}var pe=new Set(["home","list","product","search","basket","checkout","order_confirmation","login","register","account","info","blog","other"]),Ur=new Set(["products"]),Xt=e=>e==null;function ot(e,t=new WeakSet){if(e instanceof Date)return e.toJSON();if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);let n=Array.isArray(e)?e.map(r=>ot(r,t)):Object.fromEntries(Object.entries(e).filter(([,r])=>!Xt(r)).map(([r,o])=>[r,ot(o,t)]));return t.delete(e),n}function st(e){if(!e)return e;let t=ot(e);for(let n of Ur)n in e&&Xt(e[n])&&(t[n]=e[n]);return t}function Zt(){try{let e=performance.getEntriesByType("navigation")[0];return e?["navigate","reload","back_forward","prerender"].includes(e.type)?e.type:"navigate":null}catch{return null}}var Vr=new Set(["","unknown","undefined","null","none","nil","nan","anonymous","guest","0","-1"]);function q(e){if(e==null)return null;let t=String(e).trim();return Vr.has(t.toLowerCase())?null:t}function Z(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var Qt="1.16";function M(e){if(typeof document>"u")return null;try{let t=document.cookie.split(";").map(n=>n.trim()).find(n=>n.startsWith(`${e}=`));return t&&decodeURIComponent(t.slice(e.length+1))||null}catch{return null}}var Br={gclid:"gclid",fbclid:"fbclid",ttclid:"ttclid"},jr=/[a-z0-9._%+-]+@[a-z0-9-]+(\.[a-z0-9-]+)*\.[a-z]{2,}/i,qr=/\d(?:[ -]?\d){12,}/,Fr=new Set(["gclid","fbclid","ttclid","msclkid"]);function tn(e,t=""){if(typeof e!="string"||e==="")return!1;let n=[e];try{let o=decodeURIComponent(e.replace(/\+/g," "));o!==e&&n.push(o)}catch{}let r=!Fr.has(String(t).toLowerCase());return n.some(o=>jr.test(o)||r&&qr.test(o))}function Hr(e){if(!e)return null;let t=new URLSearchParams(e),n={},r={utm_source:"source",utm_medium:"medium",utm_campaign:"name",utm_term:"term",utm_content:"content"};for(let[o,s]of[...Object.entries(r),...Object.entries(Br)]){let i=t.get(o);i&&!tn(i,o)&&(n[s]=i)}return Object.keys(n).length?n:null}var Kr=["email","e-mail","password","pass","pwd","token","auth","code","uid","customer_id","postcode","zip","phone","applyCode"],Gr=["email","password","passwd","pwd","token","secret","auth","session","phone","postcode","zip","address","birth","card","cvv","iban","ssn","customerid","userid"],zr=["tel","uid","dob"],Wr=["utm_source","utm_medium","utm_campaign","utm_term","utm_content","gclid","fbclid","ttclid","msclkid"],Jr=new Set(Kr.map(e=>e.toLowerCase()));function Yr(e){let t=String(e).toLowerCase();if(Jr.has(t))return!0;let n=t.replace(/[-_.]/g,"");return Gr.some(o=>n.includes(o))?!0:String(e).replace(/([a-z0-9])([A-Z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).some(o=>zr.includes(o))}function it(e){return(e??[]).map(t=>{try{return new RegExp(`^${t}$`,"i")}catch{return{test:n=>n.toLowerCase()===String(t).toLowerCase()}}})}function nn(e,t={}){if(!e)return null;try{let n=new URLSearchParams(e),r=t.queryParamAllowlist?it([...t.queryParamAllowlist,...Wr]):null,o=it(t.queryParamBlocklist),s=it(t.sensitiveParamAllowlist);for(let a of new Set(n.keys()))(Yr(a)&&!s.some(d=>d.test(a))||n.getAll(a).some(d=>tn(d,a))||(r?!r.some(d=>d.test(a)):o.some(d=>d.test(a))))&&n.delete(a);let i=n.toString();return i?`?${i}`:""}catch{return""}}function rn(e,t,n={}){if(!e)return null;try{let r=new URL(e);return t&&r.origin===t?r.origin+r.pathname+(nn(r.search,n)??""):r.origin+r.pathname}catch{return null}}function on(e,t={}){if(typeof e!="string"||typeof location>"u")return null;try{let n=new URL(e,location.href);return n.protocol!=="https:"&&n.protocol!=="http:"?null:rn(n.href,location.origin,t)}catch{return null}}function at(e){if(typeof e!="string")return null;let t=e.trim().toUpperCase();return/^[A-Z]{3}$/.test(t)?t:null}function en(e){if(typeof e!="string")return null;let t=e.trim().toUpperCase();return/^[A-Z]{2}$/.test(t)?t:null}function Xr(e){if(typeof e!="string")return null;let t=e.trim().replace(/_/g,"-");if(!/^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$/.test(t))return null;try{return Intl.getCanonicalLocales(t)[0]}catch{return null}}function D(e,t){if(typeof e=="function")try{let n=e();if(n!=null)return n}catch{}return t}function Zr(e){return{property_id:String(e.propertyId),channel:e.channel??null,market:e.market??null,environment:e.environment??null}}function Qr(e){let t=typeof window<"u"?window.location:null,n=t?nn(t.search,e):null;return{url:t?t.origin+t.pathname+(n??""):e.pageUrl??null,path:t?t.pathname:e.pagePath??null,search:n??null,referrer:typeof document<"u"?rn(document.referrer,t?.origin,e):null,title:typeof document<"u"&&document.title||null,type:e.pageType??null}}function sn(e,t={}){let n=typeof window<"u"?window.location:null,r={library:{name:e.libraryName,version:e.libraryVersion},spec:{version:Qt},source:Zr(e),session_id:D(e.getSessionId,null),identity_trust:q(D(e.getAnonymousId,null))?"device":"none",page:Qr(e),campaign:n?Hr(n.search):null,device:{user_agent:typeof navigator<"u"?navigator.userAgent:null,type:null,viewport_width:typeof window<"u"?window.innerWidth:null,viewport_height:typeof window<"u"?window.innerHeight:null},currency:at(D(e.getCurrency,e.currency)),locale:Xr(D(e.getLocale,e.locale)),timezone:(()=>{try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return null}})(),country:en(e.country),ship_to_country:en(D(e.getShipToCountry,e.shipToCountry)),ip:null,bot:null,consent:e.getConsent?.()??null,experiments:D(e.getExperiments,null),audiences:D(e.getAudiences,null),decisions:D(e.getDecisions,null),recommendations:D(e.getRecommendations,null),extensions:D(e.getExtensions,null)};return an(r,t)}function an(e,t){if(!t)return e;let n={...e};for(let[r,o]of Object.entries(t))o&&typeof o=="object"&&!Array.isArray(o)&&e[r]&&typeof e[r]=="object"&&!Array.isArray(e[r])?n[r]=an(e[r],o):o!==void 0&&(n[r]=o);return n}var ie=Object.freeze({consent:"thg_hp_consent",retry:"thg_hp_retry",sessionSignals:"thg_hp_session_signals",identified:"thg_hp_identified",previousPage:"thg_hp_prev_page",decisions:"thg_hp_decisions",settings:"thg_hp_settings",held:"thg_hp_held",carried:"thg_hp_carried",recommendationContext:"thg_hp_recommendation_context",anonymousId:"thg_hp_anonymous_id",session:"thg_hp_session",preview:"thg_hp_preview",debug:"thg_hp_debug"}),eo={retry:"cdp.retry",sessionSignals:"cdp_session_signals",identified:"cdp_identified",previousPage:"cdp_prev_page_message_id"},ct={...ie},cn=!1;function Te(e){let t={...ie};for(let[n,r]of Object.entries(e??{})){if(!(n in ie))throw new Error(`storageNames: unknown kind "${n}"`);if(typeof r!="string"||!/^[\w.-]+$/.test(r))throw new Error(`storageNames.${n} must be a non-empty cookie-safe name`);t[n]=r}ct=t}function T(e){return ct[e]}var to="_",un=e=>e==null||e===""?to:String(e);function F(e,t,n){let r=`${e}:${un(t)}`;return n==null||n===""?r:`${r}:${n}`}function ln(e,t){return`${e}:${un(t)}:`}function Ne(){if(!cn){cn=!0;for(let e of[()=>localStorage,()=>sessionStorage]){let t;try{if(t=e(),!t)continue;for(let n of Object.keys(t))for(let[r,o]of Object.entries(eo)){if(n!==o&&!n.startsWith(`${o}:`))continue;let s=ct[r]+n.slice(o.length);t.getItem(s)===null&&t.setItem(s,t.getItem(n)),t.removeItem(n)}}catch{}}}}var lt=1800*1e3,Re=()=>{try{return typeof sessionStorage>"u"?null:sessionStorage}catch{return null}},ut=()=>{try{return typeof localStorage>"u"?null:localStorage}catch{return null}};function dn(e,t=()=>Date.now()){return{read(){try{let n=Re()?.getItem(e),r=n?JSON.parse(n):null;return!r||t()-r.savedAt>lt?(r&&Re()?.removeItem(e),{items:[],anonymousId:null}):{items:Array.isArray(r.items)?r.items:[],anonymousId:typeof r.anonymousId=="string"?r.anonymousId:null}}catch{return{items:[],anonymousId:null}}},write(n,r=null){try{n.length===0?Re()?.removeItem(e):Re()?.setItem(e,JSON.stringify({savedAt:t(),items:n,anonymousId:r}))}catch{}}}}var no=400*24*60*60;function Q(e,t,n,r){if(typeof document>"u")return!1;try{let o=typeof location<"u"&&location.protocol==="https:"?"; Secure":"",s=r?`; Domain=${r}`:"",i=n===null?"":`; Max-Age=${n}`;return document.cookie=`${e}=${encodeURIComponent(t)}; Path=/${i}; SameSite=Lax`+s+o,!0}catch{return!1}}function ro({name:e,domain:t=null,legacyKey:n,read:r,mint:o,mayStore:s,carried:i=null}){let a=null;try{a=ut()?.getItem(n)||null}catch{a=null}let u=r(e)??a??i,d=!1,f=()=>{if(!(d||u===null||!s())&&(d=Q(e,u,no,t),!(!d||a===null)))try{ut()?.removeItem(n),a=null}catch{}};return{get(){return u??(u=o()),f(),u},peek:()=>u,persist:f,forget(){Q(e,"",0,t),u=null,d=!1;try{ut()?.removeItem(n)}catch{}a=null}}}function fn(e,{carried:t=null,mayStore:n,orOwn:r=!1}){let o=e.anonymousIdSource,s=()=>ro({name:T("anonymousId"),domain:e.consentCookieDomain??null,legacyKey:F(T("anonymousId"),e.propertyId),read:M,mint:Z,mayStore:n,carried:t});if(o?.source==="hp_cookie"){let u=s();return e.getAnonymousId=()=>u.get(),u}if(o?.source==="site_cookie"&&o.cookie){let u=o.cookie;e.getAnonymousId=()=>M(u)}if(!r)return null;let i=e.getAnonymousId,a=s();return e.getAnonymousId=()=>q(D(i,null))??a.get(),a}var oo=200;function pn(e,t,n=()=>Date.now()){let r=()=>F(T("carried"),e),o=!1;function s(){try{let i=JSON.parse(sessionStorage.getItem(r())??"null");return!i||!(n()-i.savedAt<=lt)?[]:Array.isArray(i.calls)?i.calls:[]}catch{return[]}}return{take(){let i=s();try{sessionStorage.removeItem(r())}catch{}return i},save(i){try{return o||!t()?!1:(sessionStorage.setItem(r(),JSON.stringify({savedAt:n(),calls:[...s(),...i].slice(-oo)})),!0)}catch{return!1}},close(){o=!0}}}var wi=ie.consent,De=Object.freeze({visitor:"visitor",host:"host"}),mn=()=>({basis:De.host}),so="hp-consent",ae=["analytics","marketing","personalisation","ad_user_data","ad_personalization"],hn={analytics:"a",marketing:"m",personalisation:"p",ad_user_data:"aud",ad_personalization:"adp"},Y=()=>typeof window<"u",gn=()=>Y()&&typeof window.cookieStore?.addEventListener=="function",io=e=>e===!0?!0:e===!1?!1:null;function me(e){if(!e||typeof e!="object")return null;let t={};for(let n of ae)t[n]=io(e[n]);return t}function ft(e,t){return!e||!t?e===t:ae.every(n=>e[n]===t[n])}function pt(e){if(!e)return"";let t=[];for(let n of ae){let r=e[n];(r===!0||r===!1)&&t.push(`${hn[n]}=${r?1:0}`)}return t.join("&")}function yn(e){return{[so]:pt(me(e))}}function _e(e){let t=me({});if(e==null)return t;let n=String(e).trim();if(n.length>=2&&n.startsWith('"')&&n.endsWith('"')&&(n=n.slice(1,-1)),n.includes("%"))try{n=decodeURIComponent(n.replace(/\+/g," "))}catch{return t}let r=Object.fromEntries(Object.entries(hn).map(([s,i])=>[i,s])),o=new Set;for(let s of n.split("&")){let i=s.indexOf("=");if(i<=0)continue;let a=r[s.slice(0,i).trim()],u={1:!0,0:!1}[s.slice(i+1).trim()]??null;!a||u===null||o.has(a)||(t[a]===null?t[a]=u:t[a]!==u&&(t[a]=null,o.add(a)))}return t}function mt(e,t){if(!t)return e;let n=r=>{if(!r)return r;let o={...r};for(let s of ae)s!=="analytics"&&t[s]!==!0&&(o[s]=null);return o};return{name:e.name,basis:e.basis,read:()=>n(e.read()),subscribe:r=>e.subscribe(o=>r(n(o))),get observesChanges(){return e.observesChanges}}}function ht(e,t={}){return{...e,ad_user_data:t.ad_user_data??e.marketing,ad_personalization:t.ad_personalization??e.marketing}}function Me(e,t){let n=!0;return{notify:()=>{if(n)try{let o=e();o&&t(o)}catch{}},stop:()=>n=!1}}var ao={analytics:["analytics","measure_content_performance","audience_measurement"],marketing:["marketing","targeting","advertising","select_personalized_ads","create_ads_profile"],personalisation:["personalisation","personalization","select_personalized_content","create_content_profile"]};function co(e,t){if(!t?.length)return null;let n=!1;for(let[r,o]of Object.entries(e)){let s=String(o?.id??r).toLowerCase();if(t.some(a=>{let u=String(a).toLowerCase();return s===u||s.startsWith(`${u}-`)})&&(n=!0,o?.enabled===!0))return!0}return n?!1:null}function wn(e={}){let t={...ao,...e.purposes};function n(){let r=Y()?window.Didomi:void 0;if(!r?.getCurrentUserStatus||r.shouldUserStatusBeCollected?.()!==!1||r.isUserStatusPartial?.()===!0)return null;let o=r.getCurrentUserStatus()?.purposes;if(!o||typeof o!="object")return null;let s=i=>co(o,t[i]);return ht({analytics:s("analytics"),marketing:s("marketing"),personalisation:s("personalisation")},{ad_user_data:s("ad_user_data"),ad_personalization:s("ad_personalization")})}return{name:"didomi",read:n,observesChanges:!0,subscribe(r){if(!Y())return()=>{};let o=Me(n,r),s={event:"consent.changed",listener:o.notify};return window.didomiEventListeners=window.didomiEventListeners||[],window.didomiEventListeners.push(s),window.didomiOnReady=window.didomiOnReady||[],window.didomiOnReady.push(i=>{o.notify(),(i??window.Didomi)?.on?.("consent.changed",o.notify)}),window.Didomi?.on?.("consent.changed",o.notify),o.stop}}}function dt(e){let t={};if(!e)return t;for(let n of String(e).split("&")){let r=n.indexOf("=");if(r<=0)continue;let o=n.slice(r+1).replace(/\+/g," ");try{o=decodeURIComponent(o)}catch{}t[n.slice(0,r)]=o}return t}function Sn(e={}){let t={analytics:"C0002",personalisation:"C0003",marketing:"C0004",...e.groups},n=e.impliedConsent===!0;function r(){let i=dt(M("OptanonConsent"));if(i.groups){let d={};for(let f of i.groups.split(",")){let[p,g]=f.split(":");p?.trim()&&(d[p.trim()]=g==="1"?!0:g==="0"?!1:null)}return f=>d[f]??!1}let a=Y()?window.OnetrustActiveGroups:void 0;if(typeof a!="string"||!a.length)return null;let u=new Set(a.split(",").map(d=>d.trim()).filter(Boolean));return d=>u.has(d)}function o(){if(M("OptanonAlertBoxClosed"))return!0;try{if(Y()&&window.OneTrust?.IsAlertBoxClosed?.()===!0)return!0}catch{}return Number.parseInt(dt(M("OptanonConsent")).interactionCount,10)>0?!0:n&&Y()&&(!!window.OneTrust||typeof window.OnetrustActiveGroups=="string")}function s(){if(!o())return null;let i=r();if(!i)return null;let a=p=>t[p]?i(t[p]):null,u=ht({analytics:a("analytics"),marketing:a("marketing"),personalisation:a("personalisation")},{ad_user_data:a("ad_user_data"),ad_personalization:a("ad_personalization")}),d=dt(M("OptanonConsent"));return(typeof navigator<"u"&&navigator.globalPrivacyControl===!0||d.isGpcEnabled==="1")&&(u.marketing=!1,u.ad_user_data=!1,u.ad_personalization=!1),u}return{name:"onetrust",read:s,observesChanges:!0,subscribe(i){if(!Y())return()=>{};let a=Me(s,i),u=!1,d=()=>{u||!window.OneTrust?.OnConsentChanged||(u=!0,window.OneTrust.OnConsentChanged(a.notify))};window.addEventListener("OneTrustGroupsUpdated",a.notify);let f=window.OptanonWrapper;return window.OptanonWrapper=function(...g){try{typeof f=="function"&&f.apply(this,g)}finally{d(),a.notify()}},d(),()=>{a.stop(),window.removeEventListener("OneTrustGroupsUpdated",a.notify)}}}}function uo(e){let t=String(e).split(",").map(n=>n.trim()).filter(Boolean);return t.length?new Set(t):null}function _n(e){let{name:t,categories:n,parse:r=uo,refusedValue:o,source:s="native",changeEvent:i="thg_hp_consent_change"}=e??{};if(typeof t!="string"||t==="")throw new Error("cookieConsent: `name` (the cookie your banner writes) is required");if(!n||typeof n.analytics!="string")throw new Error("cookieConsent: `categories.analytics` (the category id that grants analytics) is required");function a(){let u=M(t);if(u==null)return null;let d;if(o!==void 0&&u===o)d=new Set;else try{d=r(u)}catch{d=null}if(!(d instanceof Set))return null;let f=p=>n[p]?d.has(n[p]):null;return ht({analytics:f("analytics"),marketing:f("marketing"),personalisation:f("personalisation")},{ad_user_data:f("ad_user_data"),ad_personalization:f("ad_personalization")})}return{name:s,read:a,get observesChanges(){return gn()},subscribe(u){if(!Y())return()=>{};let d=Me(a,u),f=p=>{[...p.changed??[],...p.deleted??[]].some(x=>x?.name===t)&&d.notify()};return window.addEventListener(i,d.notify),window.cookieStore?.addEventListener?.("change",f),()=>{d.stop(),window.removeEventListener(i,d.notify),window.cookieStore?.removeEventListener?.("change",f)}}}}function bn(e={}){let t=e.name??T("consent"),n=()=>{let r=M(t);if(r==null)return null;let o=_e(r);return o.analytics==null?null:o};return{name:"forwarded",read:n,get observesChanges(){return gn()},subscribe(r){if(!Y())return()=>{};let o=Me(n,r),s=i=>{[...i.changed??[],...i.deleted??[]].some(u=>u?.name===t)&&o.notify()};return window.cookieStore?.addEventListener?.("change",s),()=>{o.stop(),window.cookieStore?.removeEventListener?.("change",s)}}}}function xn(e){let t=me(e);return{name:"static",basis:De.host,read:()=>t?{...t}:null,observesChanges:!0,subscribe:()=>()=>{}}}function In(e){if(e==null)return null;let t=String(e).split("/").map(n=>n.trim()).filter(Boolean).join("/");return t===""?null:t}function lo(e){let t=e.item_category;if(t!=null&&String(t).includes("/"))return In(t);let n=[t,e.item_category2,e.item_category3,e.item_category4,e.item_category5].map(r=>r==null?"":String(r).trim()).filter(Boolean);return In(n.join("/"))}var fo=e=>{if(e==null||typeof e=="object")return null;let t=String(e).trim();return t===""?null:t};function po(...e){for(let t of e){if(typeof t=="number"&&Number.isFinite(t))return String(t);if(typeof t=="string"&&t.trim()!=="")return t.trim()}return null}var $e=e=>po(e.item_group_id,e.item_id);function mo(e,t=$e){if(!e)return null;let n=a=>a==null||a===""||Number.isNaN(Number(a))?null:Number(a),r=a=>{let u=n(a);return u==null?null:Math.round(u*1e6)/1e6},o=a=>{let u=r(a);return u!=null&&u>=0?u:null},s=a=>{let u=n(a);return Number.isInteger(u)&&u>=0?u:null},i=fo;return{product_id:i(t(e)),sku:i(e.item_id),name:i(e.item_name),brand:i(e.item_brand),variant:i(e.item_variant)??i(e.variant),category:lo(e),price:r(e.price),discount:o(e.discount),quantity:s(e.quantity),coupon:i(e.coupon),position:s(e.index)!=null?s(e.index)+1:null,url:i(e.url)??i(e.item_url)??null,image_url:i(e.image_url)??i(e.image_link)??null,displayed_sku:i(e.displayed_sku)??i(e.displayed_variant_sku)}}function gt(e,t=$e){return(e??[]).map(n=>mo(n,t)).filter(n=>n?.product_id)}var ho=1e3,go={shipping:2,payment:3},yo=new Set(["password","google","apple","facebook","magic_link","sso","passkey","other"]),$=e=>{if(e==null||typeof e=="object")return null;let t=String(e).trim();return t===""?null:t},wo=e=>{if(e==null||e===""||typeof e=="object")return null;let t=Number(e);return Number.isFinite(t)&&t>=0?t:null},Ue=e=>e!==null&&typeof e=="object";function So(e){return Array.isArray(e.items)?e.items.filter(Ue):null}function kn(e){let t=$(e)?.toLowerCase().replace(/[\s-]+/g,"_");return t?yo.has(t)?t:t==="email"||t==="email_password"?"password":"other":null}function _o({ecommerce:e,items:t}){let n=s=>({promotion_id:$(s.promotion_id),name:$(s.promotion_name),creative:$(s.creative_name),position:$(s.creative_slot)}),r=new Set,o=[];for(let s of[n(e),...t.map(n)])!s.promotion_id||r.has(s.promotion_id)||(r.add(s.promotion_id),o.push(s));return o}var An=({ecommerce:e,items:t})=>$(e.item_list_id)??$(e.item_list_name)??$(t[0]?.item_list_id)??$(t[0]?.item_list_name),ce=(e,t)=>t.products?.length?{event:e,properties:t}:null,bo=new Set(["product","products","item","items"]);function xo({ecommerce:e}){let t=$(e.item_id),n=$(e.content_type)?.toLowerCase();return!t||n&&!bo.has(n)?null:{event:"Product Shared",properties:{share_via:$(e.method),products:[{product_id:t}]}}}function Io(e){let t=o=>ce("Product List Viewed",{list_id:An(o),products:o.products}),n=o=>{let s=$(o.ecommerce.search_term);return s?{event:"Products Searched",properties:{query:s,...o.products.length?{products:o.products}:{}}}:null},r=o=>s=>s.promotions.map(i=>({event:o,properties:i}));return{view_item:o=>ce("Product Viewed",{currency:o.currency,value:o.value,products:o.products.slice(0,1)}),view_item_list:t,view_search_results:o=>n(o)??t(o),search:n,select_item:o=>ce("Product Clicked",{list_id:An(o),products:o.products.slice(0,1)}),add_to_cart:o=>ce("Product Added",{cart_id:$(o.ecommerce.cart_id),products:o.products}),remove_from_cart:o=>ce("Product Removed",{cart_id:$(o.ecommerce.cart_id),products:o.products}),view_cart:o=>({event:"Cart Viewed",properties:{cart_id:$(o.ecommerce.cart_id),value:o.value,currency:o.currency,coupon:$(o.ecommerce.coupon),...o.itemsListed?{products:o.products}:{}}}),begin_checkout:o=>ce("Checkout Started",{value:o.value,currency:o.currency,coupon:$(o.ecommerce.coupon),products:o.products}),add_shipping_info:o=>({event:"Checkout Step Completed",properties:{step:e.shipping,step_name:"shipping",shipping_method:$(o.ecommerce.shipping_tier)}}),add_payment_info:o=>({event:"Payment Info Entered",properties:{step:e.payment,step_name:"payment",payment_method:$(o.ecommerce.payment_type)}}),view_promotion:r("Promotion Viewed"),select_promotion:r("Promotion Clicked"),add_to_wishlist:o=>ce("Product Added to Wishlist",{products:o.products}),share:xo,login:o=>({event:"Signed In",properties:{method:kn(o.ecommerce.method)}}),sign_up:o=>({event:"Signed Up",properties:{method:kn(o.ecommerce.method)}})}}var ko=e=>e.event;function Ao(e,t){if(!Ue(e))return null;if(typeof e.length=="number"&&e[0]==="event"&&typeof e[1]=="string"){let r=Ue(e[2])?e[2]:{};return{name:e[1],entry:r,ecommerce:r}}let n=$(t(e));return n?{name:n,entry:e,ecommerce:Ue(e.ecommerce)?e.ecommerce:e}:null}function yt(e){return Array.isArray(e)?`[${e.map(yt).join(",")}]`:e&&typeof e=="object"?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${yt(e[t])}`).join(",")}}`:JSON.stringify(e??null)}function En(e,t={}){if(!e||typeof e.track!="function")throw new Error("connectDataLayer: analytics must have a track(event, properties, options) method");let n=t.dataLayer??(typeof window<"u"?window.dataLayer=window.dataLayer||[]:null);if(!Array.isArray(n))return()=>{};let r=Io({...go,...t.steps}),o=t.map??{},s=t.eventName??ko,i=t.productId??$e,a=new Set(["purchase","refund",...t.ignore??[]]),u=t.dedupeMs??ho,d=new Map,f=!0;function p(S,y,_){if(u<=0)return!1;let L=`${S}|${_??""}|${yt(y)}`,R=Date.now();for(let[H,K]of d)R-K>u&&d.delete(H);return d.has(L)?!0:(d.set(L,R),!1)}let g=null,x=new Set;function w(S,y){if(S!=="Product Viewed")return!1;let _=typeof location>"u"?"":location.pathname;_!==g&&(g=_,x.clear());let L=y.products?.[0]?.product_id;return L?x.has(L)?!0:(x.add(L),!1):!1}function b({event:S,properties:y={}},_){if(!S||p(S,y,_)||w(S,y))return;let L=_?{context:{currency:_}}:void 0;if(S==="Signed Out"&&typeof e.signedOut=="function"){e.signedOut(L);return}e.track(S,y,L)}function k(S){let y=t.transform?t.transform(S):S,_=Ao(y,s);if(!_||a.has(_.name))return;let L=Object.hasOwn(o,_.name),R=L?o[_.name]:r[_.name];if(typeof R!="function")return;let H=So(_.ecommerce),K=H??[],B={..._,items:K,itemsListed:H!==null,products:gt(K,i),currency:at(_.ecommerce.currency),value:wo(_.ecommerce.value)};B.promotions=_o(B);let te=L?R(y,{...B,toProducts:z=>gt(z,i)}):R(B);for(let z of[te].flat())z&&b(z,B.currency)}function E(S){if(f)try{k(S)}catch(y){try{t.onError?.(y,S)}catch{}}}for(let S of n.slice())E(S);let h=n.push;function v(...S){let y=h.apply(this,S);for(let _ of S)E(_);return y}return n.push=v,()=>{f=!1,n.push===v&&(n.push=h)}}var Eo="hp_debug",vo=256;function Co(){try{return new URLSearchParams(location.search).get(Eo)}catch{return null}}function vn(e,t){if(typeof location>"u")return!1;try{let n=Co();if(n!==null){let o=n.trim();o===""||o.length>vo?sessionStorage.removeItem(t):sessionStorage.setItem(t,o)}let r=sessionStorage.getItem(t);return!!(e&&r&&Kt(r)===e)}catch{return!1}}var he=class extends Error{},Po={inHoldout:()=>!0,personalisationGroup:()=>"excluded",servingHeaders:()=>({}),recommendationContext:()=>({}),flush:()=>Promise.resolve(),reset:()=>{}};function wt(e,t){let n=Po[e]??(()=>null),r=o=>(console.warn(`[hp] ${String(e)} failed; nothing was sent`,o),n());return function(...s){try{let i=t.apply(this,s);return typeof i?.then=="function"?Promise.resolve(i).catch(r):i}catch(i){if(i instanceof he)throw i;return r(i)}}}function Cn(e){for(let t of Reflect.ownKeys(e)){let{value:n}=Object.getOwnPropertyDescriptor(e,t)??{};typeof n=="function"&&(e[t]=wt(t,n))}return e}var be=Symbol("hp.identityOption");var Oo=4320*60*60,Lo=100,To=1e3,No=2e3,Pn=500,Ve=e=>(e?.unref?.(),e);function Ro(e,t){if(t?.analytics===!0&&e.analytics===!1)return"withdrawn";let n=ae.map(r=>e[r]).filter(r=>r!==null);return n.length&&n.every(Boolean)?"accept_all":n.length&&n.every(r=>!r)?"reject_all":"custom"}function Do(e,t,n=T("consent")){if(!(typeof document>"u"))try{let r=typeof location<"u"&&location.protocol==="https:"?"; Secure":"",o=t?`; Domain=${t}`:"";document.cookie=`${n}=${pt(e)}; Path=/; Max-Age=${Oo}; SameSite=Lax`+o+r}catch{}}function Mo(e){let t=_e(M(e));return ae.some(n=>t[n]!==null)?t:null}function On(e){let{adapter:t,timeoutMs:n=5e3,cookieDomain:r=null,cookieName:o=T("consent"),release:s,announce:i}=e,a=e.discard??(()=>{}),u="pending",d=null,f=null,p=null,g=null,x=!1,w=null,b=[],k=m=>{u=m,e.onStatus?.(m)};function E(){try{return me(t.read())}catch{return null}}function h(){f&&clearInterval(f),p&&clearTimeout(p),f=null,p=null}let v=()=>typeof window<"u"&&typeof document<"u",S=()=>{try{return typeof t.subscribe=="function"&&t.observesChanges===!0}catch{return!1}};function y(){g&&clearInterval(g),g=null}function _(){x||g||d===null||S()||v()&&document.visibilityState==="hidden"||(g=Ve(setInterval(()=>B(E()),No)))}let L=()=>u==="pending"||u==="unknown",R=e.store??null,H=()=>{let m=b.splice(0);R?.write([]);for(let j of m)s(j)},K=()=>{let m=b.splice(0);R?.write([]);for(let j of m)a(j)};function B(m){let j=me(m);if(!j||j.analytics===null)return;let ve=d===null,J=ve?Mo(o):d;if(!ve&&ft(J,j))return;h(),d=j,_(),Do(j,r,o);let Ce=!ft(J,j);if(j.analytics){k("granted"),H(),Ce&&i({action:Ro(j,J),state:j,previous:J,withdrawal:!1});return}K(),J?.analytics===!0&&i({action:"withdrawn",state:j,previous:J,withdrawal:!0}),k("denied")}function te(){p=null,u==="pending"&&(k("unknown"),f&&clearInterval(f),f=Ve(setInterval(()=>B(E()),To)))}function z(m){L()&&(R||m?.type!=="visibilitychange"&&!m?.persisted&&K())}let ne=m=>{document.visibilityState==="hidden"?(y(),z(m)):_()},de=m=>{y(),z(m)},Ee=m=>{m?.persisted&&d!==null&&B(E()),_()};return{get status(){return u},get state(){return d?{...d}:null},stamp(){return d?{...d,source:t.name??null,basis:t.basis??De.visitor}:null},admits(){return u==="granted"},hold(m){return!L()||b.length>=Pn?(a(m),!1):(b.push(m),R?.write(b),!0)},onHidden:z,start(){x=!1;try{w=t.subscribe?.(m=>B(m))??null}catch(m){e.debug&&console.warn("[hp] consent adapter subscribe failed",m)}v()&&(window.addEventListener("pagehide",de),window.addEventListener("pageshow",Ee),document.addEventListener("visibilitychange",ne)),R&&b.length===0&&b.push(...R.read().slice(-Pn)),B(E()),!d&&(f=Ve(setInterval(()=>B(E()),Lo)),p=Ve(setTimeout(te,n)))},stop(){x=!0,h(),y(),typeof w=="function"&&w(),v()&&(window.removeEventListener("pagehide",de),window.removeEventListener("pageshow",Ee),document.removeEventListener("visibilitychange",ne))}}}var $o=["recommendation","search_rank","banner","offer","layout","copy","price","other"],Be=e=>typeof e=="string"&&e!=="";function Ln(e){return(Array.isArray(e?.decisions)?e.decisions:[]).filter(t=>Be(t?.slot)&&Be(t.decision_id)&&t.holdout!==!0).map(({decision_id:t,slot:n,arm:r,kind:o})=>({decision_id:t,slot:n,...Be(r)&&{arm:r},...$o.includes(o)&&{kind:o}}))}function Tn({key:e,mayStore:t}){let n,r=()=>{if(n)return n;try{let s=JSON.parse(sessionStorage.getItem(e));n=Array.isArray(s)?s.filter(i=>Be(i?.slot)):[]}catch{n=[]}return n},o=()=>{try{n?.length&&t()&&sessionStorage.setItem(e,JSON.stringify(n))}catch{}};return{persist:o,current:()=>r().length?n.map(s=>({...s})):null,remember(s){if(!s.length)return;let i=new Set(s.map(a=>a.slot));n=[...r().filter(a=>!i.has(a.slot)),...s],o()},forget(){n=[];try{sessionStorage.removeItem(e)}catch{}}}}function Uo(e){let t=2166136261,n=String(e);for(let r=0;r<n.length;r+=1)t^=n.charCodeAt(r),t=t+((t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24))>>>0;return t^=t>>>16,t=Math.imul(t,2246822507)>>>0,t^=t>>>13,t=Math.imul(t,3266489909)>>>0,t^=t>>>16,t>>>0}function je(e,t,n=1e4){return Uo(`${t}\0${e}`)%n}function St(e){let t=o=>Math.min(Math.max(Number(o)||0,0),1),n=t(e.share),r=1-n;return{holdout_share:n,personalised_share:e.ramp==null?r:Math.min(t(e.ramp),r)}}function _t(e,t){if(!e||typeof e.salt!="string")return{holdout:!1,bucket:null,group:"personalised"};let n=e.ramp!=null;if(t==null||t==="")return{holdout:!1,bucket:null,group:n?"excluded":"personalised"};let{holdout_share:r,personalised_share:o}=St(e),s=je(t,e.salt),i=u=>Math.round(u*1e4),a=r>0&&s<i(r)?"holdout":!n||s<i(r+o)?"personalised":"excluded";return{holdout:a==="holdout",bucket:s,group:a}}function Nn(e,t){return typeof e!="string"||e===""||t==null||t===""?null:je(t,`bandit-vs-default:${e}`)<1e4/2?"default":"bandit"}var Vo="hp_preview",Bo=256;function Rn(e,t=null){if(typeof location>"u")return M(e);let n=null;try{n=new URLSearchParams(location.search).get(Vo)}catch{n=null}if(n===null)return M(e);let r=n.trim();return r===""||r.length>Bo?(Q(e,"",0,t),null):(Q(e,r,null,t),r)}var jo=40,qo=128,Fo=5,Ho=60,Mn=e=>typeof e=="string"&&e!==""&&e.length<=qo&&!e.includes(","),Dn=e=>Array.isArray(e)?e.filter(Mn).slice(0,jo):[],Ko=e=>Array.isArray(e)?e.filter(t=>typeof t=="string").map(t=>t.replaceAll(","," ").trim()).filter(t=>t!=="").slice(0,Fo):[],Go=e=>Object.entries(e&&typeof e=="object"?e:{}).filter(([t,n])=>Mn(t)&&Number.isFinite(n)&&n>=1).sort(([,t],[,n])=>n-t).slice(0,Ho).map(([t,n])=>`${t}:${Math.floor(n)}`);function bt(e){let t={},n={viewed:Dn(e?.recentProducts),basket:Dn(e?.basketProducts),q:Ko(e?.recentSearches),impressed:Go(e?.impressions)};for(let[r,o]of Object.entries(n))o.length>0&&(t[r]=o.join(","));return t}var zo=1800*1e3;function $n(e,t=Date.now()){try{localStorage.setItem(T("recommendationContext"),JSON.stringify({context:e,until:t+zo}))}catch{}}function Un(){try{localStorage.removeItem(T("recommendationContext"))}catch{}}var Wo="hp_sample",Vn=1e4;function Bn(e,t){return!(typeof t=="number"&&t<1)||e==null||e===""?!0:je(e,Wo,Vn)<Math.round(t*Vn)}function ge(e){return e.trim().toLowerCase().replace(/\s*\/\s*/g,"/").replace(/^\/+|\/+$/g,"")}var Jo=2,Yo=12;function xe(e,t=Jo){return e.split("/").slice(0,t).join("/")}function xt(e,t){if(typeof t!="string"||!t.trim())return null;let n=xe(ge(t));return n?(e.unshift(n),e.length=Math.min(e.length,Yo),n):null}var ue=()=>T("sessionSignals"),ye=null,It=()=>ye??ue();function jn(){try{return ye?localStorage:sessionStorage}catch{return}}function qn(e,t){let n=t==null?null:String(t),r=e?F(ue(),n,e):null;if(r===ye)return;let o=ye===null?Xo():null;if(ye=r,!!ye)try{let s=It(),i=ln(ue(),n);for(let a of Object.keys(localStorage))a.startsWith(i)&&a!==s&&localStorage.removeItem(a);o&&!localStorage.getItem(s)&&(localStorage.setItem(s,JSON.stringify(o)),sessionStorage.removeItem(ue()))}catch{}}function Xo(){try{let e=sessionStorage.getItem(ue());if(!e)return null;let t=JSON.parse(e);return t&&(t.productViews>0||t.listViews>0||t.basketValue!=null||t.recentProducts?.length||t.recentBrowse?.length)?t:null}catch{return null}}function qe(){return{productViews:0,listViews:0,cartAdds:0,searches:0,recentProducts:[],recentCategories:[],recentBrowse:[],basketProducts:[],basketValue:null,recentSearches:[],impressions:{},browsingCategory:null,recentBrowseCategories:[],browsingListing:null,listViewsByCategory:{},startedAt:0}}function kt(){let e=jn();if(!e)return qe();try{let t=e.getItem(It());return t?{...qe(),...JSON.parse(t)}:{...qe(),startedAt:Date.now()}}catch{return{...qe(),startedAt:Date.now()}}}function At(e){let t=jn();if(t)try{t.setItem(It(),JSON.stringify(e))}catch{}}function Fn(){return kt()}function Hn(){for(let e of[()=>sessionStorage,()=>localStorage])try{let t=e();t.removeItem(ue());for(let n of Object.keys(t))n.startsWith(`${ue()}:`)&&t.removeItem(n)}catch{}}var Kn=20,Gn=200,Zo=new Set(["Product Viewed","Product Clicked","Product Added","Product Added to Wishlist"]),Qo=new Set(["Product Viewed","Product Added"]),zn=50;function Fe(e,t){let n=xt(e.recentBrowse,t);return n?(e.recentBrowseCategories=[e.browsingListing?.category??null,...e.recentBrowseCategories].slice(0,e.recentBrowse.length),n):null}function es(e,t){let n=e.listViewsByCategory;n[t]=(n[t]??0)+1;let r=Object.keys(n);if(r.length>zn){let o={};for(let s of r.sort((i,a)=>n[a]-n[i]).slice(0,zn))o[s]=n[s];e.listViewsByCategory=o}}function Wn(e,t){let n=kt();n.startedAt||(n.startedAt=Date.now());let r=Array.isArray(t?.products)?t.products:[];switch(e){case"Product Viewed":n.productViews+=1,Fe(n,n.browsingCategory);break;case"Product List Viewed":{let i=t?.list_id,a=t?.category;if(!(typeof i=="string"&&i.includes("/")&&!i.startsWith("cdp-")))break;let d=typeof a=="string"&&xe(ge(a))||null,f=d?xe(ge(i)):"";if(!f){n.browsingCategory=null,n.browsingListing=null;break}n.browsingListing={key:f,category:d},Fe(n,f),n.browsingCategory=f,es(n,d),n.listViews+=1}break;case"Product List Filtered":{let i=t?.change,a=typeof t?.list_id=="string"?t.list_id:"",u=typeof i?.value=="string"?i.value:"",d=n.browsingListing;if(u&&i?.action!=="removed"&&d&&xe(ge(a))===d.key){let f=Fe(n,`${a}/${u}`);f&&(n.browsingCategory=f)}break}case"Product Added":{n.cartAdds+=1,Fe(n,n.browsingCategory);for(let i of r){let a=i.product_id;typeof a!="string"||!a||(n.basketProducts=[a,...n.basketProducts.filter(u=>u!==a)].slice(0,Kn))}break}case"Product Removed":{for(let i of r){let a=i.product_id;typeof a=="string"&&a&&(n.basketProducts=n.basketProducts.filter(u=>u!==a))}break}case"Products Searched":{n.searches+=1;let i=t?.query;if(typeof i=="string"&&i.trim()){let a=i.trim().toLowerCase().slice(0,64);n.recentSearches=[a,...n.recentSearches.filter(u=>u!==a)].slice(0,5)}break}case"Product Clicked":case"Product Added to Wishlist":break;case"Cart Updated":{let i=t?.value;return n.basketValue=typeof i=="number"&&Number.isFinite(i)&&i>=0?i:null,At(n),n}default:return n}let o=Zo.has(e);if(o)for(let i of r)typeof i.product_id=="string"&&i.product_id&&delete n.impressions[i.product_id];else{for(let a of r){let u=a.product_id;typeof u!="string"||!u||(n.impressions[u]=(n.impressions[u]??0)+1)}let i=Object.keys(n.impressions);if(i.length>Gn){let a={};for(let u of i.sort((d,f)=>n.impressions[f]-n.impressions[d]).slice(0,Gn))a[u]=n.impressions[u];n.impressions=a}}let s=new Set;for(let i of r){let a=i.product_id;if(o&&typeof a=="string"&&a&&(n.recentProducts=[a,...n.recentProducts.filter(u=>u!==a)].slice(0,Kn)),Qo.has(e)&&typeof i.category=="string"&&i.category){let u=ge(i.category);u&&!s.has(u)&&(s.add(u),xt(n.recentCategories,u))}}return At(n),n}var Jn=1800*1e3;function Yn({name:e,domain:t=null,mayStore:n,now:r=()=>Date.now(),mint:o=Z}){let s=null,i=0,a=()=>{s!==null&&n()&&Q(e,s,Jn/1e3,t)};return{get(){let u=r(),d=M(e);return d?s=d:(s===null||u-i>=Jn)&&(s=o()),i=u,a(),s},persist:a,forget(){Q(e,"",0,t),s=null}}}var G=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Xn=e=>Array.isArray(e)&&e.every(t=>typeof t=="string"),vt=Object.freeze({enabled:!1});function Zn(e,t){let n=e?.track;return G(n)?(Object.hasOwn(n,t)?n[t]:n.__default)?.enabled!==!1:!0}function ts(e,t){return`${le(e)}/v1/projects/${encodeURIComponent(t)}/settings`}var ns="https://hp.thgingenuity.com";function le(e){return e==null||e===""?ns:er(e)}function Qn(e,t){return e!=null&&e!==""?le(e):t?.startsWith("https://")?t:le(void 0)}function er(e){if(typeof e!="string")return null;let t=e.trim().replace(/\/+$/,"");return/^https?:\/\/[^/\s]+$/i.test(t)?t:/^[a-z0-9.-]+(:\d+)?$/i.test(t)?`https://${t}`:null}function rs(e){if(!G(e))return null;let t=Object.fromEntries(Object.entries(e).filter(([,n])=>typeof n=="boolean"));return Object.keys(t).length?t:null}var Et=e=>typeof e=="number"&&e>=0&&e<=1,os=/^[0-9a-f]{64}$/;function ss(e){return G(e)?{enabled:e.enabled===!0,tokenSha256:typeof e.tokenSha256=="string"&&os.test(e.tokenSha256)?e.tokenSha256:null}:{enabled:!1,tokenSha256:null}}function is(e){if(!G(e))return null;let t=Object.fromEntries(Object.entries(e).filter(([,n])=>G(n)&&Et(n.share)&&(n.ramp==null||Et(n.ramp))&&typeof n.salt=="string"&&n.salt!=="").map(([n,r])=>[n,{share:r.share,ramp:r.ramp??null,salt:r.salt,...Xn(r.readoutSlots)&&r.readoutSlots.length>0&&{readoutSlots:r.readoutSlots}}]));return Object.keys(t).length?t:null}var as=/^[A-Za-z0-9!#$%&'*+.^_`|~-]{1,128}$/;function cs(e){return G(e)?e.source==="hp_cookie"?{source:"hp_cookie"}:e.source!=="site_cookie"?null:e.cookie==null?{source:"site_cookie",cookie:null}:typeof e.cookie=="string"&&as.test(e.cookie)?{source:"site_cookie",cookie:e.cookie}:null:null}function us(e){let t=G(e)?e.hp:null;return G(t)&&typeof t.enabled=="boolean"}function Ct(e){let t=G(e)?e.hp:null;return!G(t)||t.enabled!==!0?vt:{enabled:!0,propertyId:typeof t.propertyId=="string"&&t.propertyId!==""?t.propertyId:null,environment:typeof t.environment=="string"?t.environment:null,consentPurposes:rs(t.consent?.purposes),queryParamAllowlist:Xn(t.queryParamAllowlist)?t.queryParamAllowlist:null,anonymousId:cs(t.anonymousId),apiHost:er(t.apiHost),holdouts:is(t.holdouts),sampleRate:Et(t.sampleRate)?t.sampleRate:1,debug:ss(t.debug),plan:G(e.plan)&&G(e.plan.track)?{track:e.plan.track}:null}}async function tr(e,t,n=globalThis.fetch){try{let r=await n(ts(e,t),{credentials:"omit",headers:{accept:"application/json"}});if(!r.ok)return null;let o=await r.json();return us(o)?Ct(o):null}catch{return null}}var He=e=>F(T("settings"),e);function nr(e){try{let t=localStorage.getItem(He(e));if(!t)return null;let n=JSON.parse(t);return n?.enabled===!0?n:null}catch{return null}}function rr(e,t){try{t?.enabled===!0?localStorage.setItem(He(e),JSON.stringify(t)):localStorage.removeItem(He(e))}catch{}}function Pt(e){try{localStorage.removeItem(He(e))}catch{}}var ls={flushAt:20,flushIntervalMs:1e4,maxQueue:500,maxRetryAgeMs:1440*60*1e3,maxRetries:5,maxPersistedBatches:20,maxPersistedBytes:1024*1024,storageKey:ie.retry,beaconSafeBytes:56*1024,maxBatchEvents:100,maxBatchBytes:500*1024},Ke=()=>Date.now(),or=3e4,Mt=55*1024;function ds(e,t=Ke()){if(typeof e!="string")return 0;let n=e.trim();if(/^\d+$/.test(n))return Number(n)*1e3;if(n==="")return 0;let r=Date.parse(n);return Number.isNaN(r)?0:Math.max(0,r-t)}var ee=e=>typeof TextEncoder<"u"?new TextEncoder().encode(e).length:Buffer.byteLength(e),Ot=()=>typeof window<"u"&&typeof document<"u";function fs(){try{return!Ot()||!window.localStorage?null:(window.localStorage.getItem("thg_hp_probe"),window.localStorage)}catch{return null}}var I,Lt,Tt,Ge,Nt,Rt,sr,Ie,ke,Ae,ir,Dt,ar,ze,We=class{constructor(t){Ft(this,I);this.o={...ls,...t},this.queue=[],this.timer=null,this.storage=fs(),this.inflight=null,this.sending=new Set,this.epoch=0,this.sinceRefusal=new Set,this.wakers=new Set,this.replayAllowed=!this.o.deferReplay,this.draining=null,Ot()&&(window.addEventListener("pagehide",()=>this.flush({beacon:!0})),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&this.flush()}),O(this,I,ze).call(this))}replayPersisted(){return this.replayAllowed=!0,O(this,I,ze).call(this)}clearPersisted(){if(this.replayAllowed=!1,!!this.storage)try{let t=O(this,I,Ae).call(this).filter(n=>this.sinceRefusal.has(n?.id));t.length?this.storage.setItem(this.o.storageKey,JSON.stringify(t)):this.storage.removeItem(this.o.storageKey)}catch{}}discardQueued(){this.queue=[],this.epoch+=1,this.sinceRefusal.clear(),O(this,I,Tt).call(this);for(let t of this.wakers)t()}enqueue(t){let n;try{n=JSON.parse(JSON.stringify(t))}catch(r){this.o.onError?.(`event ${t?.messageId??""} cannot be serialised; dropped`,r);return}this.queue.push(n),this.queue.length>this.o.maxQueue&&this.queue.splice(0,this.queue.length-this.o.maxQueue),this.queue.length>=this.o.flushAt?this.flush():O(this,I,Lt).call(this)}flush(t={}){if(O(this,I,Tt).call(this),this.queue.length===0)return Promise.resolve();if(t.beacon&&Ot()&&typeof navigator<"u"&&navigator.sendBeacon)return O(this,I,sr).call(this),Promise.resolve();if(this.inflight)return this.inflight;let n=O(this,I,Rt).call(this,this.queue,this.o.maxBatchEvents,this.o.maxBatchBytes).map(o=>{let s=O(this,I,Dt).call(this,o);return s&&(this.sending.add(s),this.sinceRefusal.add(s)),{batch:o,id:s}});this.queue=[];let r=this.epoch;return this.inflight=(async()=>{for(let{batch:o,id:s}of n){if(r!==this.epoch){O(this,I,ke).call(this,s);continue}await O(this,I,Ie).call(this,o,0,s,r)}})().finally(()=>{this.inflight=null,this.queue.length>=this.o.flushAt?this.flush():this.queue.length&&O(this,I,Lt).call(this)}),this.inflight}};I=new WeakSet,Lt=function(){this.timer||(this.timer=setTimeout(()=>this.flush(),this.o.flushIntervalMs),this.timer?.unref?.())},Tt=function(){this.timer&&(clearTimeout(this.timer),this.timer=null)},Ge=function(t){return JSON.stringify({batch:t,writeKey:this.o.writeKey,sentAt:new Date().toISOString()})},Nt=function(){return`${this.o.apiHost.replace(/\/$/,"")}/v1/batch`},Rt=function(t,n,r){let o=ee(O(this,I,Ge).call(this,[])),s=[],i=[],a=o;for(let u of t){let d=ee(JSON.stringify(u))+1;i.length&&(i.length>=n||a+d>r)&&(s.push(i),i=[],a=o),i.push(u),a+=d}return i.length&&s.push(i),s},sr=function(){let t=this.queue;this.queue=[];let n=O(this,I,Nt).call(this);for(let r of O(this,I,Rt).call(this,t,this.o.maxBatchEvents,this.o.beaconSafeBytes)){let o=O(this,I,Ge).call(this,r);if(ee(o)<=this.o.beaconSafeBytes){let s=!1;try{s=navigator.sendBeacon(n,new Blob([o],{type:"text/plain"}))}catch{s=!1}if(s)continue}O(this,I,Ie).call(this,r,0,O(this,I,Dt).call(this,r))}},Ie=async function(t,n,r=null,o=this.epoch){r&&this.sending.add(r);let s=O(this,I,Ge).call(this,t),i=0;try{let a=await fetch(O(this,I,Nt).call(this),{method:"POST",headers:{"Content-Type":"text/plain"},body:s,keepalive:ee(s)<=this.o.beaconSafeBytes});if(a.ok)return O(this,I,ke).call(this,r),O(this,I,ze).call(this),!0;let u=a.status===408||a.status===429||a.status>=500;if(u&&(i=ds(a.headers?.get?.("retry-after"))),!u)return O(this,I,ke).call(this,r),this.o.onError?.(`CDP ingest rejected batch (${a.status}); dropping ${t.length} events`),!0;throw new Error(`retryable ${a.status}`)}catch(a){if(n>=this.o.maxRetries){r&&this.sending.delete(r);let d=r?"kept for the next page":"dropped";return this.o.onError?.(`CDP ingest unreachable after ${n} attempts; ${d}: ${t.length} events`,a),!1}let u=Math.max(Math.min(1e3*2**n,or)*(.5+Math.random()),Math.min(i,or));return o===this.epoch&&await new Promise(d=>{let f=()=>{clearTimeout(p),this.wakers.delete(f),d()},p=setTimeout(f,u);this.wakers.add(f)}),o!==this.epoch?(O(this,I,ke).call(this,r),!1):O(this,I,Ie).call(this,t,n+1,r,o)}},ke=function(t){t&&(this.sending.delete(t),this.sinceRefusal.delete(t),O(this,I,ar).call(this,t))},Ae=function(){let t=JSON.parse(this.storage.getItem(this.o.storageKey)||"[]");return Array.isArray(t)?t:[]},ir=function(t,n){let r=i=>ee(JSON.stringify(i))+1,o=[...t,n].slice(-this.o.maxPersistedBatches),s=o.reduce((i,a)=>i+r(a),2);for(;o.length>1&&s>this.o.maxPersistedBytes;)s-=r(o[0]),o=o.slice(1);for(;o.length;)try{return this.storage.setItem(this.o.storageKey,JSON.stringify(o)),!0}catch{o=o.slice(1)}return!1},Dt=function(t){if(!this.storage||this.o.mayPersist&&!this.o.mayPersist())return null;try{let n={at:Ke(),id:`${Ke()}-${Math.random().toString(36).slice(2)}`,batch:t};return ee(JSON.stringify(n))+3>this.o.maxPersistedBytes?null:O(this,I,ir).call(this,O(this,I,Ae).call(this),n)?n.id:null}catch{return null}},ar=function(t){if(!(!t||!this.storage))try{let n=O(this,I,Ae).call(this).filter(r=>r.id!==t);n.length?this.storage.setItem(this.o.storageKey,JSON.stringify(n)):this.storage.removeItem(this.o.storageKey)}catch{}},ze=function(){if(!this.storage||!this.replayAllowed)return this.draining??Promise.resolve();if(this.draining)return this.draining;let t;try{let r=O(this,I,Ae).call(this);t=r.filter(o=>Array.isArray(o?.batch)&&Ke()-o.at<this.o.maxRetryAgeMs).map(o=>o.id?o:{...o,id:`${o.at}-${Math.random().toString(36).slice(2)}`}),(t.length!==r.length||t.some((o,s)=>o!==r[s]))&&(t.length?this.storage.setItem(this.o.storageKey,JSON.stringify(t)):this.storage.removeItem(this.o.storageKey))}catch{return Promise.resolve()}let n=t.filter(r=>!this.sending.has(r.id));return n.length?(this.draining=(async()=>{for(let r of n)if(!this.replayAllowed||!await O(this,I,Ie).call(this,r.batch,0,r.id))return})().finally(()=>{this.draining=null}),this.draining):Promise.resolve()};var cr="3.22.2",ur="@thg-agentic/hyper-personalisation-web";var ps=new Set(["audiences","decisions","recommendations"]);var ms=Symbol.for("@thg-agentic/hyper-personalisation-web.replay");function hs(e){let t={...e??{}},n=Array.isArray(t.products)?t.products:null;if(t.item_count==null&&n){let r=n.map(o=>o?.quantity);r.every(Number.isInteger)&&(t.item_count=r.reduce((o,s)=>o+s,0))}return t}var gs="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";function ys(e){if(/^[0-9a-fA-F]{64}$/.test(e))return e.toLowerCase();if(!/^[A-Za-z0-9+/_-]{43}=?$/.test(e))return null;try{let t=atob(e.replace(/-/g,"+").replace(/_/g,"/").padEnd(44,"="));return t.length!==32?null:Array.from(t,n=>n.charCodeAt(0).toString(16).padStart(2,"0")).join("")}catch{return null}}function Je(e){if(typeof e!="string")return null;let t=ys(e.trim());return t===gs?null:t}var lr=Object.freeze({email_sha256:"sha256",phone_sha256:"sha256",accepts_marketing:"boolean",gender:"string",created_at:"date-time"}),ws=/^\d{4}-\d{2}-\d{2}T([01]\d|2[0-3]):[0-5]\d:[0-5]\d(\.\d+)?(Z|[+-]([01]\d|2[0-3]):[0-5]\d)$/i;function Ss(e){if(typeof e!="string"||!ws.test(e))return!1;let[t,n,r]=e.slice(0,10).split("-").map(Number),o=new Date(Date.UTC(t,n-1,r));return o.getUTCMonth()===n-1&&o.getUTCDate()===r&&!Number.isNaN(Date.parse(e))}function _s(e,t){return t===null?null:e==="sha256"?Je(t)??void 0:e==="date-time"?t instanceof Date?Number.isNaN(t.getTime())?void 0:t.toISOString():Ss(t)?t:void 0:typeof t===e?t:void 0}function bs(e,t){let n={},r=[];for(let[o,s]of Object.entries(e)){let i=Object.hasOwn(lr,o)?lr[o]:null,a=i?_s(i,s):void 0;a===void 0?r.push(o):n[o]=a}return t&&r.length&&console.warn(`[hp] identify: not sent, not spec traits: ${r.join(", ")}`),n}var dr=!1,fr=!1;function xs(){fr||(fr=!0,console.warn("[hp] no consent adapter: events are sent under the host's lawful basis (basis 'host'). Pass `consent` to send only once the visitor allows analytics."))}function Is(e){!e||dr||(dr=!0,console.warn("[hp] mintAnonymousId is ignored since 3.6: where device ids come from is set per source in the console (the site\u2019s own cookie, or Hyper-Personalisation\u2019s)."))}function ks(e){try{return ee(JSON.stringify(e))}catch{return 0}}function pr(e){return e&&typeof e.context=="object"&&e.context!==null?e.context:e}function mr(e){let t=le(e?.apiHost);if(!t)throw new Error("createAnalytics: apiHost, when given, must be a host or an http(s) origin");if(!e?.propertyId)throw new Error("createAnalytics: propertyId is required");let n={libraryName:ur,libraryVersion:cr,writeKey:"web",queryParamBlocklist:[],debug:!1,validate:null,consentTimeoutMs:5e3,...e,apiHost:t};Te(n.storageNames),Ne();let r=!!n.consent;r||xs();let o=null;n.getConsent=()=>o?o.stamp():mn();let s=()=>!r||o?.status==="granted",i=r&&n.holdAcrossPages?dn(F(T("held"),n.propertyId)):null,a=i?.read()??{items:[],anonymousId:null};n.mintAnonymousId!==void 0&&Is(n.debug);let u=fn(n,{carried:a.anonymousId,mayStore:s,orOwn:!0}),d=Yn({name:T("session"),domain:n.consentCookieDomain??null,mayStore:s}),f=n.getSessionId;n.getSessionId=()=>q(D(f,null))??d.get();let p=Rn(T("preview"),n.consentCookieDomain??null),g=(c,l)=>n.debug&&console.warn("[hp]",c,l??""),x=n.transport??new We({apiHost:n.apiHost,writeKey:n.writeKey,storageKey:F(T("retry"),n.propertyId),mayPersist:r?()=>o?.status==="granted":void 0,deferReplay:r,onError:g}),w=F(T("previousPage"),n.propertyId),b=null,k=()=>{if(b)return b;try{return sessionStorage.getItem(w)||null}catch{return null}};typeof window<"u"&&window.addEventListener("pageshow",c=>{c.persisted&&(b=null)});let E=c=>{if(b=c||null,!(r&&o.status!=="granted"))try{sessionStorage.setItem(w,c)}catch{}},h=Tn({key:F(T("decisions"),n.propertyId),mayStore:s});n.getDecisions??(n.getDecisions=h.current);let v=q(D(n.getUserId,null)),S=null,y=null,_=null;function L(c,l,A=!1){try{return R(c,l,A)}catch(P){if(P instanceof he)throw P;return console.warn("[hp] the event was not sent",P),null}}function R(c,l,A){let P=_;_=null;let U=c.type==="track"?c.event:c.type;if(!A&&!Zn(n.plan,U))return null;let C={messageId:P?.messageId??Z(),timestamp:P?.timestamp??new Date().toISOString(),anonymousId:q(D(n.getAnonymousId,null)),userId:v??null,...c,context:sn(n,pr(l))};if(C.properties&&(C.properties=st(C.properties)),typeof C.properties?.href=="string"&&(C.properties.href=on(C.properties.href,n)),!A&&!Bn(C.anonymousId,n.sampleRate))return n.debug&&console.debug("[hp] not sent: outside the sample",C),null;if(n.beforeSend){let fe;try{fe=n.beforeSend(C)}catch(Er){return console.warn("[hp] beforeSend failed; the event was not sent",Er),null}if(!fe)return null;let{type:Pe,event:jt,messageId:kr,timestamp:Ar}=C;C={...fe,type:Pe,messageId:kr,timestamp:Ar,...jt?{event:jt}:{}}}if(n.validate){let fe=n.validate(C,{producer:"web"});if(!fe.valid){let Pe=`[hp] invalid ${C.event??C.type}:
|
|
2
|
-
${
|
|
3
|
-
`)}`;if(n.throwOnInvalid)throw new he(Pe);console.error(Pe)}}n.debug&&console.debug("[hp]",C.event??C.type,C);let Bt=ks(C);return Bt>Mt?(g(`${C.event??C.type} not sent: ${Bt} bytes, over the ${Mt}-byte limit for one event`),null):(Ee(C,A),C)}function H(c){if(c.type==="track"&&z(c),n.onEvent)try{n.onEvent(c)}catch(l){console.warn("[hp] onEvent observer failed",l)}}let K=()=>r&&o?.state?.personalisation===!0,B=()=>qn(D(n.getSessionId,null),n.propertyId),te=!1;function z(c){try{K()?(B(),$n(bt(Wn(c.event,c.properties))),te=!0):ne()}catch(l){n.debug&&console.warn("[hp] the visit was not recorded",l)}}function ne(c=!1){Un(),(c||te)&&Hn(),te=!1}function de(){d.forget(),h.forget(),j.clear(),u?.forget(),ne(!0)}function Ee(c,l){!r||l||o.admits()?(H(c),x.enqueue(c)):o.hold(c)}let m=(c,l,A)=>L({type:"track",event:c,properties:l??{}},A),j=new Set,ve=(c,l,A)=>c==="audiences"?{audiences:l?null:A.audiences??[]}:c==="decisions"?{decisions:(A.decisions??[]).map(P=>({slot:P.slot,decision_id:P.decision_id??null,arm:P.arm??null,...P.variant&&{variant:P.variant}}))}:{recommendation_request_id:A.recommendation_request_id??null};r&&(o=On({adapter:n.consent,timeoutMs:n.consentTimeoutMs,cookieDomain:n.consentCookieDomain,debug:n.debug,store:i&&{read:()=>a.items,write:c=>i.write(c,u?.peek()??null)},release(c){c.context&&(c.context.consent=o.stamp()),H(c),x.enqueue(c)},onStatus(c){if(c==="granted"&&(u?.persist(),d.persist(),b&&E(b),h.persist(),x.replayPersisted?.()),c==="denied"){x.clearPersisted?.(),u?.forget(),d.forget();try{sessionStorage.removeItem(w)}catch{}h.forget(),ne(!0)}try{n.onConsentStatus?.(c)}catch(l){console.warn("[hp] onConsentStatus observer failed",l)}},announce({action:c,state:l,previous:A,withdrawal:P}){l?.personalisation!==!0&&ne(A?.personalisation===!0),P&&x.discardQueued?.(),L({type:"track",event:"Consent Updated",properties:{action:c,state:l}},void 0,P),P&&x.flush()}}),o.start());let J=()=>n.holdout?St(n.holdout):null,Ce=()=>_t(n.holdout,q(D(n.getAnonymousId,null))).group;function Ir(c,l){if(!Array.isArray(c?.decisions))return c;let A=n.holdout?.readoutSlots??[],P=q(D(n.getAnonymousId,null));return{...c,decisions:c.decisions.map(U=>{let C=U?.variant==="bandit"||U?.variant==="default"?U.variant:!l&&U?.holdout!==!0&&A.includes(U?.slot)?Nn(U.slot,P):null;return C?C==="default"?{...U,variant:C,decision_id:null}:{...U,variant:C}:U})}}function Ut(c,l){if(p)return null;let A=c?.exposure,P=A?.holdout===!0,U=Ir(c,P);return h.remember(Ln(U)),!A?.token||j.has(A.token)?null:(j.add(A.token),m("Personalisation Exposed",{exposure_token:A.token,surface:A.surface,holdout:P,holdout_share:A.holdout_share??J()?.holdout_share??null,personalised_share:A.personalised_share??J()?.personalised_share??null,...ve(A.surface,P,U)},l))}function Vt(c){return v&&de(),v=null,S=null,y=null,c}return Cn({track:(c,l,A)=>c==="Signed Out"?Vt(m(c,l,A)):m(c,l,A),page(c,l){c??(c={});let A=n.pageType??null;c.type&&(pe.has(c.type)?(A=c.type,n.pageType=c.type):n.debug&&console.warn(`[hp] ignoring unknown page.type "${c.type}". Allowed: ${[...pe].join(", ")}`));let P=L({type:"page",properties:{name:c.name??null,navigation_trigger:c.navigation_trigger??Zt(),previous_message_id:k()}},{page:{type:A},...pr(l)??{}});return P&&E(P.messageId),P},identify(c,l,A){let{userId:P,...U}=c&&typeof c=="object"?c:{};if(P!==void 0){let C=q(P);A===be?y=C:S&&C&&C!==S?de():n.debug&&y&&C&&C!==y&&console.warn("[hp] identify names another userId than the identity option; using the new one"),v=C,C&&A!==be&&(S=C)}return L({type:"identify",traits:bs(U,n.debug)},l)},reset(){v&&de(),v=null,S=null,y=null,E("")},productViewed:(c,l)=>m("Product Viewed",c,l),productListViewed:(c,l)=>m("Product List Viewed",c,l),recommendationsViewed:(c,l)=>m("Recommendations Viewed",c,l),personalisationExposed:(c,l)=>m("Personalisation Exposed",c,l),recordExposure:Ut,surfaceViewed({surface:c}={},l){if(!ps.has(c)||!n.holdout||c!=="decisions"&&!K())return null;let A=q(D(n.getAnonymousId,null)),P=_t(n.holdout,A).group;if(P==="excluded")return null;let U=Jt({sessionId:Oe(D(n.getSessionId,null),A),surface:c});return U?Ut({exposure:{token:U,surface:c,holdout:P==="holdout"}},l):null},inHoldout:()=>Ce()!=="personalised",personalisationGroup:Ce,productClicked:(c,l)=>m("Product Clicked",c,l),productListFiltered:(c,l)=>m("Product List Filtered",c,l),productsSearched:(c,l)=>m("Products Searched",c,l),searchSuggestionsViewed:(c,l)=>m("Search Suggestions Viewed",c,l),productAdded:(c,l)=>m("Product Added",c,l),productRemoved:(c,l)=>m("Product Removed",c,l),cartUpdated:(c,l)=>m("Cart Updated",hs(c),l),identityLinked:(c,l)=>m("Identity Linked",c,l),slotEngaged:(c,l)=>p?null:m("Slot Engaged",c,l),productVariantSelected:(c,l)=>m("Product Variant Selected",c,l),cartViewed:(c,l)=>m("Cart Viewed",c,l),productAddedToWishlist:(c,l)=>m("Product Added to Wishlist",c,l),productRemovedFromWishlist:(c,l)=>m("Product Removed from Wishlist",c,l),wishlistProductAddedToCart:(c,l)=>m("Wishlist Product Added to Cart",c,l),productShared:(c,l)=>m("Product Shared",c,l),cartShared:(c,l)=>m("Cart Shared",c,l),couponEntered:(c,l)=>m("Coupon Entered",c,l),couponApplied:(c,l)=>m("Coupon Applied",c,l),couponDenied:(c,l)=>m("Coupon Denied",c,l),couponRemoved:(c,l)=>m("Coupon Removed",c,l),checkoutStarted:(c,l)=>m("Checkout Started",c,l),promotionViewed:(c,l)=>m("Promotion Viewed",c,l),promotionClicked:(c,l)=>m("Promotion Clicked",c,l),checkoutStepViewed:(c,l)=>m("Checkout Step Viewed",c,l),checkoutStepCompleted:(c,l)=>m("Checkout Step Completed",c,l),paymentInfoEntered:(c,l)=>m("Payment Info Entered",c,l),checkoutFailed:(c,l)=>m("Checkout Failed",c,l),signedIn:(c,l)=>m("Signed In",c,l),signedUp:(c,l)=>m("Signed Up",c,l),signedOut:c=>Vt(m("Signed Out",{},c)),newsletterSubscribed:(c,l)=>m("Newsletter Subscribed",c,l),newsletterUnsubscribed:(c,l)=>m("Newsletter Unsubscribed",c,l),backInStockSubscribed:(c,l)=>m("Back In Stock Subscribed",c,l),productReviewed:(c,l)=>m("Product Reviewed",c,l),consentUpdated:(c,l)=>m("Consent Updated",c,l),flush:c=>x.flush(c),recommendationContext(){if(!K())return{};try{return B(),bt(Fn())}catch{return{}}},get consent(){return o?o.state:null},servingHeaders:()=>yn(o?.state??null),get lastPageMessageId(){return k()},get anonymousId(){return q(D(n.getAnonymousId,null))},[ms](c,l,A){if(typeof this[c]=="function"){_=typeof A?.messageId=="string"&&typeof A?.timestamp=="string"?{messageId:A.messageId,timestamp:A.timestamp}:null;try{this[c](...Array.isArray(l)?l:[])}finally{_=null}}}})}var $t=Symbol.for("@thg-agentic/hyper-personalisation-web.bootstrap"),As=Symbol.for("@thg-agentic/hyper-personalisation-web.drain"),Es=Symbol.for("@thg-agentic/hyper-personalisation-web.carry"),hr=Symbol.for("@thg-agentic/hyper-personalisation-web.replay"),vs=Symbol.for("@thg-agentic/hyper-personalisation-web.assignment"),Cs=Symbol.for("@thg-agentic/hyper-personalisation-web.recommendation-context"),Ze=e=>e?()=>M(e):()=>null,wr={didomi:e=>wn({purposes:e.purposes}),onetrust:e=>Sn({groups:e.groups,impliedConsent:e.impliedConsent}),cookie:e=>_n({name:e.name,categories:e.categories,refusedValue:e.refusedValue,source:e.source,changeEvent:e.changeEvent}),forwarded:e=>bn({name:e.name}),static:e=>{if(!e.state||typeof e.state!="object")throw new Error('consent.state is required for provider "static"');return xn(e.state)}},gr=Object.keys(wr),we=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Ye=e=>typeof e=="string"&&e!=="",Ps=e=>Array.isArray(e)&&e.every(t=>typeof t=="string"),Sr=e=>we(e)&&typeof e.read=="function";function Os(e,t={}){let n=[];if(!we(e))return["config must be { writeKey, apiHost? }"];Ye(e.writeKey)||n.push("writeKey is required"),le(e.apiHost)||n.push("apiHost, when given, must be a host or an http(s) origin"),t.propertyId!==void 0&&!Ye(t.propertyId)&&n.push("propertyId must be a string");let{consent:r}=t;if(!Sr(r)&&!(we(r)&&gr.includes(r.provider))&&n.push(`consent must be a consent adapter or { provider: ${gr.join(" | ")} }`),t.autocapture!==void 0&&t.autocapture!==!1&&!we(t.autocapture)&&n.push("autocapture must be false or { promotions, productLists, recommendations }"),t.beforeSend!==void 0&&typeof t.beforeSend!="function"&&n.push("beforeSend must be a function"),t.identityCookies!==void 0)if(!we(t.identityCookies))n.push("identityCookies must be an object");else for(let o of["anonymousId","sessionId"]){let s=t.identityCookies[o];s!==void 0&&!Ye(s)&&n.push(`identityCookies.${o} must be a cookie name`)}for(let o of["getCurrency","getShipToCountry","getLocale"])t[o]!==void 0&&typeof t[o]!="function"&&n.push(`${o} must be a function`);return t.dataLayer!==void 0&&(we(t.dataLayer)?(t.dataLayer.name!==void 0&&!Ye(t.dataLayer.name)&&n.push("dataLayer.name must be a string"),t.dataLayer.ignore!==void 0&&!Ps(t.dataLayer.ignore)&&n.push("dataLayer.ignore must be an array of strings")):n.push("dataLayer must be an object")),n}function Ls(e,t,n){if(Sr(e))return mt(e,t.consentPurposes);let{provider:r,...o}=e,s=n?.consent?.[r]??wr[r];return mt(s(o),t.consentPurposes)}var _r=(e,t)=>`${e??""}|${t??""}`;function Ts(e,t){let n=q(t?.userId),r=Je(t?.emailSha256);if(!n&&!r)return null;try{let o=F(T("identified"),e);if(sessionStorage.getItem(o)===_r(n,r))return null}catch{}return{...n?{userId:n}:{},...r?{email_sha256:r}:{}}}async function Ns({writeKey:e,apiHost:t},n){if(n.settings!==void 0)return{settings:Ct(n.settings),revalidated:null};let r=tr(t,e),o=nr(e);if(o)return{settings:o,revalidated:r};let s=await r,i=s??vt;return{settings:i,revalidated:Promise.resolve(i),unreachable:s===null}}function br(e,t){let n=t??{},r=typeof window<"u"?window:null;if(r?.[$t])return r[$t];let o=pn(e?.writeKey,()=>{let{analytics:i}=_e(M(T("consent")));return i===!0||i===null&&n.holdAcrossPages===!0}),s=Ds(e,n,o);if(r){let i=n.extend?.getSessionId??Ze(n.identityCookies?.sessionId),a=Ze(n.identityCookies?.anonymousId);r[vs]=({slot:u,arm:d}={})=>Wt({sessionId:Oe(i(),a()),slot:u,arm:d}),r[$t]=s,r[Es]=o,r[As]?.(s)}return s}function Rs(){let e=globalThis.performance?.now?.();return new Date(Date.now()-(Number.isFinite(e)?e:0)).toISOString()}function yr(e,t){if(t===!1)return()=>{};let n={promotions:!0,productLists:!0,recommendations:!0,exposures:!0,...t},r=s=>s&&typeof s=="object"?s:{},o=[];try{n.promotions&&o.push(nt(e,r(n.promotions))),n.productLists&&o.push(tt(e,r(n.productLists))),n.recommendations&&o.push(rt(e,r(n.recommendations))),n.exposures&&o.push(et(e,r(n.exposures)))}catch(s){console.warn("[hp] autocapture not started:",s?.message??s)}return()=>{for(let s of o)s()}}function Xe(e){return e.close(),null}async function Ds(e,t,n){try{let r=Os(e,t);if(r.length)return console.warn(`[hp] not started, the configuration is invalid: ${r.join("; ")}`),Xe(n);Te(t.storageNames),Ne();let{writeKey:o}=e,[{settings:s,revalidated:i,unreachable:a},u]=await Promise.all([Ns(e,t),Promise.resolve(t.identity).catch(()=>null)]),d=i?s:null,f=!1,p=()=>f&&d&&rr(o,d);if(i?.then(y=>{y&&(d=y,y.enabled?p():Pt(o))}),a)return null;if(!s.enabled)return t.debug&&console.info("[hp] off: the settings for this write key do not enable it"),Xe(n);let g=t.propertyId??s.propertyId;if(!g)return console.warn("[hp] not started: this write key covers several properties, so propertyId is required"),Xe(n);let{preset:x}=t,w=Ts(g,u),b=t.debug===!0||s.debug?.enabled===!0||vn(s.debug?.tokenSha256??null,T("debug")),k=q(u?.userId),E=mr({apiHost:Qn(e.apiHost,s.apiHost),writeKey:o,propertyId:g,pageType:pe.has(t.pageType)?t.pageType:void 0,environment:s.environment,queryParamAllowlist:s.queryParamAllowlist??void 0,plan:s.plan,sampleRate:s.sampleRate??1,holdout:s.holdouts?.[g],getCurrency:t.getCurrency,getShipToCountry:t.getShipToCountry,getLocale:t.getLocale,consent:Ls(t.consent,s,x),consentCookieDomain:t.consentCookieDomain,storageNames:t.storageNames,holdAcrossPages:t.holdAcrossPages===!0,mintAnonymousId:t.mintAnonymousId,debug:b,anonymousIdSource:s.anonymousId??void 0,getAnonymousId:Ze(t.identityCookies?.anonymousId),getSessionId:t.identityCookies?.sessionId?Ze(t.identityCookies.sessionId):void 0,getUserId:()=>k,beforeSend:t.beforeSend,...t.extend,onConsentStatus(y){if(y==="granted"&&(f=!0,p()),y==="denied"){Pt(o);try{sessionStorage.removeItem(F(T("identified"),g))}catch{}}t.extend?.onConsentStatus?.(y)},onEvent(y){if(y.type==="identify"){let _=_r(q(y.userId),Je(y.traits?.email_sha256));try{sessionStorage.setItem(F(T("identified"),g),_)}catch{}}t.extend?.onEvent?.(y)}});typeof window<"u"&&(window[Cs]=()=>E.recommendationContext());for(let[y,_,L]of n.take())try{E[hr](y,_,L)}catch(R){console.warn(`[hp] carried ${y} failed`,R)}E[hr]("page",[t.pageType?{type:t.pageType}:{}],{messageId:Z(),timestamp:Rs()});let h=yr(E,t.autocapture),v=E.page;E.page=wt("page",(...y)=>{let _=v(...y);return h(),h=yr(E,t.autocapture),_});let S=typeof window<"u"?window:null;if(S?.addEventListener("pageshow",y=>{y.persisted&&E.page({navigation_trigger:"back_forward"})}),t.dataLayer&&S){let y=t.dataLayer.name??"dataLayer";S[y]=S[y]||[],En(E,{...x,dataLayer:S[y],ignore:[...x?.ignore??[],...t.dataLayer.ignore??[]],onError:_=>b&&console.warn("[hp] dataLayer mapping failed",_)})}return w&&E.identify(w,void 0,be),E}catch(r){return console.warn("[hp] not started:",r?.message??r),Xe(n)}}function xr(e){e.initialized=!0,br(e._config,e._options).then(t=>{let n=e.splice(0);if(!t){for(let r of e.methods??[])e[r]=()=>e;return}e.client=t;for(let[r,o]of Object.entries(t))typeof o=="function"&&(e[r]=o);for(let[r,...o]of n)try{t[r]?.(...o)}catch(s){console.warn(`[hp] queued ${r} failed`,s)}})}var V=window.hp=window.hp||[];V.servingHeaders??(V.servingHeaders=()=>({}));V.inHoldout??(V.inHoldout=()=>!0);V.personalisationGroup??(V.personalisationGroup=()=>"excluded");V.recommendationContext??(V.recommendationContext=()=>({}));V.initialized||(V._config?xr(V):V.load=(e,t)=>{V._config=e,V._options=t??{},xr(V)});})();
|
|
1
|
+
(()=>{var on=e=>{throw TypeError(e)};var Kr=(e,t,n)=>t.has(e)||on("Cannot "+n);var sn=(e,t,n)=>t.has(e)?on("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n);var O=(e,t,n)=>(Kr(e,t,"access private method"),n);var Ae=[];for(let e=2;Ae.length<64;e++)Ae.every(t=>e%t!==0)&&Ae.push(e);var an=e=>(e-Math.floor(e))*2**32>>>0,Gr=Ae.slice(0,8).map(e=>an(Math.sqrt(e))),zr=Ae.map(e=>an(Math.cbrt(e))),Y=(e,t)=>e>>>t|e<<32-t;function cn(e){let t=new TextEncoder().encode(String(e)),n=new Uint32Array((t.length+8>>6)*16+16);t.forEach((s,i)=>{n[i>>2]|=s<<24-i%4*8}),n[t.length>>2]|=128<<24-t.length%4*8,n[n.length-2]=Math.floor(t.length/2**29),n[n.length-1]=t.length*8;let r=Uint32Array.from(Gr),o=new Uint32Array(64);for(let s=0;s<n.length;s+=16){for(let y=0;y<64;y++){if(y<16){o[y]=n[s+y];continue}let _=o[y-15],A=o[y-2],v=Y(_,7)^Y(_,18)^_>>>3,m=Y(A,17)^Y(A,19)^A>>>10;o[y]=o[y-16]+v+o[y-7]+m}let[i,c,u,d,f,p,h,b]=r;for(let y=0;y<64;y++){let _=Y(f,6)^Y(f,11)^Y(f,25),A=b+_+(f&p^~f&h)+zr[y]+o[y]|0,m=(Y(i,2)^Y(i,13)^Y(i,22))+(i&c^i&u^c&u)|0;[b,h,p,f,d,u,c,i]=[h,p,f,d+A|0,u,c,i,A+m|0]}[i,c,u,d,f,p,h,b].forEach((y,_)=>{r[_]+=y})}return Array.from(r,s=>s.toString(16).padStart(8,"0")).join("")}var ut=(e,t)=>e<<t|e>>>32-t;function un(e){let t=new Uint32Array((e.length+8>>6)*16+16);e.forEach((s,i)=>{t[i>>2]|=s<<24-i%4*8}),t[e.length>>2]|=128<<24-e.length%4*8,t[t.length-2]=Math.floor(e.length/2**29),t[t.length-1]=e.length*8;let n=Uint32Array.of(1732584193,4023233417,2562383102,271733878,3285377520),r=new Uint32Array(80);for(let s=0;s<t.length;s+=16){for(let p=0;p<80;p++)r[p]=p<16?t[s+p]:ut(r[p-3]^r[p-8]^r[p-14]^r[p-16],1);let[i,c,u,d,f]=n;for(let p=0;p<80;p++){let h,b;p<20?(h=c&u|~c&d,b=1518500249):p<40?(h=c^u^d,b=1859775393):p<60?(h=c&u|c&d|u&d,b=2400959708):(h=c^u^d,b=3395469782);let y=ut(i,5)+h+f+b+r[p]|0;[f,d,u,c,i]=[d,u,ut(c,30),i,y]}[i,c,u,d,f].forEach((p,h)=>{n[h]+=p})}let o=new Uint8Array(20);return n.forEach((s,i)=>{o[i*4]=s>>>24,o[i*4+1]=s>>>16,o[i*4+2]=s>>>8,o[i*4+3]=s}),o}var Wr="e28e8ada-5b76-4209-bba9-79b823a0af75",Jr=e=>Array.from(e,t=>t.toString(16).padStart(2,"0")).join("");function ln(e,t){let n=Uint8Array.from(e.replace(/-/g,"").match(/../g),c=>Number.parseInt(c,16)),r=new TextEncoder().encode(t),o=new Uint8Array(16+r.length);o.set(n),o.set(r,16);let s=un(o).slice(0,16);s[6]=s[6]&15|80,s[8]=s[8]&63|128;let i=Jr(s);return`${i.slice(0,8)}-${i.slice(8,12)}-${i.slice(12,16)}-${i.slice(16,20)}-${i.slice(20)}`}var se=(e,t)=>typeof e=="string"&&e!==""&&e.length<=t?e:null;function $e(e,t){return se(e,64)??se(t,256)}function dn({sessionId:e,slot:t,arm:n}={}){let r=se(e,256);return!r||!se(t,256)||!se(n,256)?null:ln(Wr,`${r}:${t}:${n}`)}var Yr="4b1f2c7e-9a3d-4e58-b6c1-2d7f0a9e8c53";function fn({sessionId:e,surface:t}={}){let n=se(e,256);return!n||!se(t,64)?null:ln(Yr,`${n}:${t}`)}var Xr=Array.from({length:11},(e,t)=>t/10);function Zr(e,t){if(!e.isIntersecting)return!1;let{intersectionRect:n,boundingClientRect:r,rootBounds:o}=e;if(!n||!r)return!0;let s=n.width*n.height,i=r.width*r.height,c=o?Math.min(i,o.width*o.height):i;return c>0&&s/c>=t}function Q(e){let{selector:t,onViewable:n,visibleRatio:r=.5,dwellMs:o=1e3,root:s=document}=e,i=new Map,c=new WeakSet,u=new Set,d=m=>{i.has(m)||i.set(m,setTimeout(()=>{i.delete(m),n(m)&&(p?.unobserve(m),u.delete(m))},o))},f=m=>{clearTimeout(i.get(m)),i.delete(m)},p=typeof IntersectionObserver>"u"?null:new IntersectionObserver(m=>{for(let E of m){let w=E.target;if(!Zr(E,r)){u.delete(w),f(w);continue}u.add(w),h()&&d(w)}},{threshold:Xr}),h=()=>typeof document>"u"||document.visibilityState!=="hidden",b=()=>{if(h())for(let m of u)d(m);else for(let m of u)f(m)};document.addEventListener("visibilitychange",b);let y=()=>{for(let m of s.querySelectorAll(t))c.has(m)||(c.add(m),p?.observe(m))},_=typeof MutationObserver>"u"?null:new MutationObserver(()=>y()),A=()=>{y(),_?.observe(s===document?document.body:s,{childList:!0,subtree:!0})},v=s===document&&!document.body;return v?document.addEventListener("DOMContentLoaded",A,{once:!0}):A(),()=>{v&&document.removeEventListener("DOMContentLoaded",A),document.removeEventListener("visibilitychange",b),p?.disconnect(),_?.disconnect();for(let m of i.values())clearTimeout(m);i.clear(),u.clear()}}function lt(e,t={}){if(typeof window>"u"||typeof document>"u")return()=>{};let{selector:n="[data-hp-exposure]",visibleRatio:r=.5,dwellMs:o=1e3,root:s=document}=t;return Q({selector:n,root:s,visibleRatio:r,dwellMs:o,onViewable(i){let c=i.dataset?.hpExposure?.trim();return c&&e.surfaceViewed({surface:c}),!0}})}var pn=e=>{try{return new URL(e,document.baseURI).toString()}catch{return e}};function dt(e,t={}){if(typeof window>"u"||typeof document>"u")return()=>{};let{selector:n="[data-hp-list]",tileSelector:r="[data-hp-product]",visibleRatio:o=.5,dwellMs:s=1e3,root:i=document}=t,c=new Set,u=y=>y.closest?.(n)??null,d=y=>{let _=y.dataset.hpList?.trim();return _?{list_id:_,category:y.dataset.hpListCategory?.trim()||null}:null},f=y=>Array.from(y.querySelectorAll(r)).filter(_=>u(_)===y),p=(y,_)=>{try{let A=JSON.parse(y.dataset.hpProduct??"");return!A||typeof A!="object"||!A.product_id?null:{...A,position:A.position??_+1,...A.url?{url:pn(A.url)}:{},...A.image_url?{image_url:pn(A.image_url)}:{}}}catch{return null}},h=Q({selector:`${n} ${r}`,root:i,visibleRatio:o,dwellMs:s,onViewable(y){let _=u(y);if(!_||_.dataset.hpListView==="manual")return!0;let A=d(_);if(!A||c.has(A.list_id))return!0;let v=new Set,m=f(_).map(p).filter(E=>!E||v.has(E.product_id)?!1:(v.add(E.product_id),!0));return m.length===0||(c.add(A.list_id),e.productListViewed({...A,products:m})),!0}}),b=y=>{let A=y.target?.closest?.("a[href]")?.closest(r);if(!A)return;let v=u(A),m=p(A,v?f(v).indexOf(A):0);m&&e.productClicked({list_id:v?d(v)?.list_id??null:null,products:[m]})};return document.addEventListener("click",b,!0),()=>{document.removeEventListener("click",b,!0),h()}}function R(e,...t){let n=e.dataset??{};for(let r of t){let o=n[r];if(typeof o=="string"&&o.trim()!=="")return o.trim()}return null}function Ue(e,...t){let n=R(e,...t);if(n===null)return null;let r=Number(n);return Number.isFinite(r)?Math.trunc(r):null}function Qr(e,t){let n=R(e,"hpPromotion");return n?{promotion_id:n,name:R(e,"hpPromotionName"),creative:R(e,"hpPromotionCreative"),position:R(e,"hpPromotionSlot")??String(t+1)}:null}function ft(e,t={}){if(typeof window>"u"||typeof document>"u")return()=>{};let{selector:n="[data-hp-promotion]",resolve:r=Qr,visibleRatio:o=.5,dwellMs:s=1e3,root:i=document}=t,c=new Set,u=p=>{let h=Array.from(i.querySelectorAll(n)),b=h.indexOf(p);try{return r(p,b<0?h.length:b)}catch{return null}},d=Q({selector:n,root:i,visibleRatio:o,dwellMs:s,onViewable(p){let h=u(p);return!h||c.has(h.promotion_id)?!1:(c.add(h.promotion_id),e.promotionViewed(h),!0)}}),f=p=>{let h=p.target;if(!h||typeof h.closest!="function")return;let b=h.closest(n),y=h.closest("a[href]");if(!b||!y||!b.contains(y)&&!y.contains(b))return;let _=u(b);_&&e.promotionClicked({..._,href:y.getAttribute("href")})};return document.addEventListener("click",f,!0),()=>{document.removeEventListener("click",f,!0),d()}}function eo(e){let t=R(e,"hpRecoRequest"),n=R(e,"hpRecoPlacement"),r=R(e,"hpRecoStrategy");if(!t||!n||!r)return null;let o=R(e,"hpRecoHoldout");return{recommendation_request_id:t,placement:n,strategy:r,recipe:R(e,"hpRecoRecipe"),algorithm_version:R(e,"hpRecoAlgorithmVersion"),experiment:R(e,"hpRecoExperiment"),variant:R(e,"hpRecoVariant"),holdout:o===null?null:o==="true",assignment_bucket:Ue(e,"hpRecoBucket"),assignment_unit_kind:R(e,"hpRecoUnitKind"),candidate_set_fingerprint:R(e,"hpRecoFingerprint"),candidate_set_size:Ue(e,"hpRecoCandidates"),ranked_by:R(e,"hpRecoRankedBy"),served_at:R(e,"hpRecoServedAt")}}function to(e,t){let n=R(e,"hpRecoProduct");if(!n)return null;let r=R(e,"hpRecoPrice");return{product_id:n,sku:R(e,"hpRecoSku"),name:R(e,"hpRecoName"),brand:R(e,"hpRecoBrand"),price:r===null||Number.isNaN(Number(r))?null:Number(r),position:Ue(e,"hpRecoPosition")??t+1}}function pt(e,t={}){if(typeof window>"u"||typeof document>"u")return()=>{};let{selector:n="[data-hp-reco-request]",tileSelector:r="[data-hp-reco-product]",resolveRail:o=eo,resolveTile:s=to,visibleRatio:i=.5,dwellMs:c=1e3,root:u=document}=t,d=new Set,f=new Map,p=new Map,h=(m,...E)=>{try{return m(...E)}catch{return null}},b=m=>typeof m.closest=="function"?m.closest(n):null,y=m=>Array.from(m.querySelectorAll(r)),_=(m,E)=>{if(p.delete(E.recommendation_request_id),d.has(E.recommendation_request_id))return;let w=y(m).map((S,T)=>h(s,S,T)).filter(S=>S?.product_id);if(w.length===0)return;d.add(E.recommendation_request_id);let g=[...f.get(E.recommendation_request_id)?.values()??[]].sort((S,T)=>S.position-T.position);e.recommendationsViewed({...E,products:w,viewable:g})},A=Q({selector:`${n} ${r}`,root:u,visibleRatio:i,dwellMs:c,onViewable(m){let E=b(m);if(!E)return!0;let w=h(o,E);if(!w)return!0;let g=w.recommendation_request_id,S=h(s,m,y(E).indexOf(m));if(S?.product_id){f.has(g)||f.set(g,new Map);let T=f.get(g);T.has(S.position)||T.set(S.position,{position:S.position,product_id:S.product_id,viewable_at:new Date().toISOString()})}return!d.has(g)&&!p.has(g)&&p.set(g,setTimeout(()=>_(E,w),0)),!0}}),v=m=>{let E=m.target;if(!E||typeof E.closest!="function")return;let w=E.closest(r);if(!w)return;let g=E.closest("[data-hp-reco-interaction]"),S=E.closest("a[href]"),T=S&&(w.contains(S)||S.contains(w));if(!(g&&w.contains(g))&&!T)return;let D=b(w);if(!D)return;let K=h(o,D);if(!K)return;let z=h(s,w,y(D).indexOf(w));if(!z?.product_id)return;let B=K.recommendation_request_id;d.has(B)||(clearTimeout(p.get(B)),_(D,K)),e.productClicked({recommendation_request_id:K.recommendation_request_id,interaction:R(g??w,"hpRecoInteraction")??"navigate",products:[z]})};return document.addEventListener("click",v,!0),()=>{document.removeEventListener("click",v,!0);for(let m of p.values())clearTimeout(m);p.clear(),A()}}var we=new Set(["home","list","product","search","basket","checkout","order_confirmation","login","register","account","info","blog","other"]),no=new Set(["products"]),mn=e=>e==null;function mt(e,t=new WeakSet){if(e instanceof Date)return e.toJSON();if(e===null||typeof e!="object"||t.has(e))return e;t.add(e);let n=Array.isArray(e)?e.map(r=>mt(r,t)):Object.fromEntries(Object.entries(e).filter(([,r])=>!mn(r)).map(([r,o])=>[r,mt(o,t)]));return t.delete(e),n}function ht(e){if(!e)return e;let t=mt(e);for(let n of no)n in e&&mn(e[n])&&(t[n]=e[n]);return t}function hn(){try{let e=performance.getEntriesByType("navigation")[0];return e?["navigate","reload","back_forward","prerender"].includes(e.type)?e.type:"navigate":null}catch{return null}}var ro=new Set(["","unknown","undefined","null","none","nil","nan","anonymous","guest","0","-1"]);function q(e){if(e==null)return null;let t=String(e).trim();return ro.has(t.toLowerCase())?null:t}function ee(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var gn="1.18";function U(e){if(typeof document>"u")return null;try{let t=document.cookie.split(";").map(n=>n.trim()).find(n=>n.startsWith(`${e}=`));return t&&decodeURIComponent(t.slice(e.length+1))||null}catch{return null}}var oo={gclid:"gclid",fbclid:"fbclid",ttclid:"ttclid"},so=/[a-z0-9._%+-]+@[a-z0-9-]+(\.[a-z0-9-]+)*\.[a-z]{2,}/i,io=/\d(?:[ -]?\d){12,}/,ao=new Set(["gclid","fbclid","ttclid","msclkid"]);function wn(e,t=""){if(typeof e!="string"||e==="")return!1;let n=[e];try{let o=decodeURIComponent(e.replace(/\+/g," "));o!==e&&n.push(o)}catch{}let r=!ao.has(String(t).toLowerCase());return n.some(o=>so.test(o)||r&&io.test(o))}function co(e){if(!e)return null;let t=new URLSearchParams(e),n={},r={utm_source:"source",utm_medium:"medium",utm_campaign:"name",utm_term:"term",utm_content:"content"};for(let[o,s]of[...Object.entries(r),...Object.entries(oo)]){let i=t.get(o);i&&!wn(i,o)&&(n[s]=i)}return Object.keys(n).length?n:null}var uo=["email","e-mail","password","pass","pwd","token","auth","code","uid","customer_id","postcode","zip","phone","applyCode"],lo=["email","password","passwd","pwd","token","secret","auth","session","phone","postcode","zip","address","birth","card","cvv","iban","ssn","customerid","userid"],fo=["tel","uid","dob"],po=["utm_source","utm_medium","utm_campaign","utm_term","utm_content","gclid","fbclid","ttclid","msclkid"],mo=new Set(uo.map(e=>e.toLowerCase()));function ho(e){let t=String(e).toLowerCase();if(mo.has(t))return!0;let n=t.replace(/[-_.]/g,"");return lo.some(o=>n.includes(o))?!0:String(e).replace(/([a-z0-9])([A-Z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).some(o=>fo.includes(o))}function gt(e){return(e??[]).map(t=>{try{return new RegExp(`^${t}$`,"i")}catch{return{test:n=>n.toLowerCase()===String(t).toLowerCase()}}})}function Sn(e,t={}){if(!e)return null;try{let n=new URLSearchParams(e),r=t.queryParamAllowlist?gt([...t.queryParamAllowlist,...po]):null,o=gt(t.queryParamBlocklist),s=gt(t.sensitiveParamAllowlist);for(let c of new Set(n.keys()))(ho(c)&&!s.some(d=>d.test(c))||n.getAll(c).some(d=>wn(d,c))||(r?!r.some(d=>d.test(c)):o.some(d=>d.test(c))))&&n.delete(c);let i=n.toString();return i?`?${i}`:""}catch{return""}}function _n(e,t,n={}){if(!e)return null;try{let r=new URL(e);return t&&r.origin===t?r.origin+r.pathname+(Sn(r.search,n)??""):r.origin+r.pathname}catch{return null}}function yt(e,t={}){if(typeof e!="string"||typeof location>"u")return null;try{let n=new URL(e,location.href);return n.protocol!=="https:"&&n.protocol!=="http:"?null:_n(n.href,location.origin,t)}catch{return null}}function wt(e){if(typeof e!="string")return null;let t=e.trim().toUpperCase();return/^[A-Z]{3}$/.test(t)?t:null}function yn(e){if(typeof e!="string")return null;let t=e.trim().toUpperCase();return/^[A-Z]{2}$/.test(t)?t:null}function St(e){if(typeof e!="string")return null;let t=e.trim().replace(/_/g,"-");if(!/^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$/.test(t))return null;try{return Intl.getCanonicalLocales(t)[0]}catch{return null}}function M(e,t){if(typeof e=="function")try{let n=e();if(n!=null)return n}catch{}return t}function go(e){return{property_id:String(e.propertyId),channel:e.channel??null,market:e.market??null,environment:e.environment??null}}function yo(e){let t=typeof window<"u"?window.location:null,n=t?Sn(t.search,e):null;return{url:t?t.origin+t.pathname+(n??""):e.pageUrl??null,path:t?t.pathname:e.pagePath??null,search:n??null,referrer:typeof document<"u"?_n(document.referrer,t?.origin,e):null,title:typeof document<"u"&&document.title||null,type:e.pageType??null}}var ve;function wo(){if(ve!==void 0)return ve;try{ve=globalThis.Temporal?.Now?.timeZoneId?.()||Intl.DateTimeFormat().resolvedOptions().timeZone||null}catch{ve=null}return ve}function bn(e,t={}){let n=typeof window<"u"?window.location:null,r={library:{name:e.libraryName,version:e.libraryVersion},spec:{version:gn},source:go(e),session_id:M(e.getSessionId,null),identity_trust:q(M(e.getAnonymousId,null))?"device":"none",page:yo(e),campaign:n?co(n.search):null,device:{user_agent:typeof navigator<"u"?navigator.userAgent:null,type:null,viewport_width:typeof window<"u"?window.innerWidth:null,viewport_height:typeof window<"u"?window.innerHeight:null},currency:wt(M(e.getCurrency,e.currency)),locale:St(M(e.getLocale,e.locale)),timezone:wo(),country:yn(e.country),ship_to_country:yn(M(e.getShipToCountry,e.shipToCountry)),ip:null,bot:null,consent:e.getConsent?.()??null,experiments:M(e.getExperiments,null),audiences:M(e.getAudiences,null),decisions:M(e.getDecisions,null),recommendations:M(e.getRecommendations,null),extensions:M(e.getExtensions,null)};return xn(r,t)}function xn(e,t){if(!t)return e;let n={...e};for(let[r,o]of Object.entries(t))o&&typeof o=="object"&&!Array.isArray(o)&&e[r]&&typeof e[r]=="object"&&!Array.isArray(e[r])?n[r]=xn(e[r],o):o!==void 0&&(n[r]=o);return n}var ce=Object.freeze({consent:"thg_hp_consent",retry:"thg_hp_retry",sessionSignals:"thg_hp_session_signals",identified:"thg_hp_identified",previousPage:"thg_hp_prev_page",decisions:"thg_hp_decisions",settings:"thg_hp_settings",held:"thg_hp_held",carried:"thg_hp_carried",recommendationContext:"thg_hp_recommendation_context",anonymousId:"thg_hp_anonymous_id",session:"thg_hp_session",preview:"thg_hp_preview",debug:"thg_hp_debug",onsite:"thg_hp_onsite"}),So={retry:"cdp.retry",sessionSignals:"cdp_session_signals",identified:"cdp_identified",previousPage:"cdp_prev_page_message_id"},_t={...ce},In=!1;function Ve(e){let t={...ce};for(let[n,r]of Object.entries(e??{})){if(!(n in ce))throw new Error(`storageNames: unknown kind "${n}"`);if(typeof r!="string"||!/^[\w.-]+$/.test(r))throw new Error(`storageNames.${n} must be a non-empty cookie-safe name`);t[n]=r}_t=t}function L(e){return _t[e]}var _o="_",kn=e=>e==null||e===""?_o:String(e);function F(e,t,n){let r=`${e}:${kn(t)}`;return n==null||n===""?r:`${r}:${n}`}function An(e,t){return`${e}:${kn(t)}:`}function Be(){if(!In){In=!0;for(let e of[()=>localStorage,()=>sessionStorage]){let t;try{if(t=e(),!t)continue;for(let n of Object.keys(t))for(let[r,o]of Object.entries(So)){if(n!==o&&!n.startsWith(`${o}:`))continue;let s=_t[r]+n.slice(o.length);t.getItem(s)===null&&t.setItem(s,t.getItem(n)),t.removeItem(n)}}catch{}}}}var xt=1800*1e3,je=()=>{try{return typeof sessionStorage>"u"?null:sessionStorage}catch{return null}},bt=()=>{try{return typeof localStorage>"u"?null:localStorage}catch{return null}};function vn(e,t=()=>Date.now()){return{read(){try{let n=je()?.getItem(e),r=n?JSON.parse(n):null;return!r||t()-r.savedAt>xt?(r&&je()?.removeItem(e),{items:[],anonymousId:null}):{items:Array.isArray(r.items)?r.items:[],anonymousId:typeof r.anonymousId=="string"?r.anonymousId:null}}catch{return{items:[],anonymousId:null}}},write(n,r=null){try{n.length===0?je()?.removeItem(e):je()?.setItem(e,JSON.stringify({savedAt:t(),items:n,anonymousId:r}))}catch{}}}}var bo=400*24*60*60;function te(e,t,n,r){if(typeof document>"u")return!1;try{let o=typeof location<"u"&&location.protocol==="https:"?"; Secure":"",s=r?`; Domain=${r}`:"",i=n===null?"":`; Max-Age=${n}`;return document.cookie=`${e}=${encodeURIComponent(t)}; Path=/${i}; SameSite=Lax`+s+o,!0}catch{return!1}}function xo({name:e,domain:t=null,legacyKey:n,read:r,mint:o,mayStore:s,carried:i=null}){let c=null;try{c=bt()?.getItem(n)||null}catch{c=null}let u=r(e)??c??i,d=!1,f=()=>{if(!(d||u===null||!s())&&(d=te(e,u,bo,t),!(!d||c===null)))try{bt()?.removeItem(n),c=null}catch{}};return{get(){return u??(u=o()),f(),u},peek:()=>u,persist:f,forget(){te(e,"",0,t),u=null,d=!1;try{bt()?.removeItem(n)}catch{}c=null}}}function En(e,{carried:t=null,mayStore:n,orOwn:r=!1}){let o=e.anonymousIdSource,s=()=>xo({name:L("anonymousId"),domain:e.consentCookieDomain??null,legacyKey:F(L("anonymousId"),e.propertyId),read:U,mint:ee,mayStore:n,carried:t});if(o?.source==="hp_cookie"){let u=s();return e.getAnonymousId=()=>u.get(),u}if(o?.source==="site_cookie"&&o.cookie){let u=o.cookie;e.getAnonymousId=()=>U(u)}if(!r)return null;let i=e.getAnonymousId,c=s();return e.getAnonymousId=()=>q(M(i,null))??c.get(),c}var Io=200;function Cn(e,t,n=()=>Date.now()){let r=()=>F(L("carried"),e),o=!1;function s(){try{let i=JSON.parse(sessionStorage.getItem(r())??"null");return!i||!(n()-i.savedAt<=xt)?[]:Array.isArray(i.calls)?i.calls:[]}catch{return[]}}return{take(){let i=s();try{sessionStorage.removeItem(r())}catch{}return i},save(i){try{return o||!t()?!1:(sessionStorage.setItem(r(),JSON.stringify({savedAt:n(),calls:[...s(),...i].slice(-Io)})),!0)}catch{return!1}},close(){o=!0}}}var ji=ce.consent,He=Object.freeze({visitor:"visitor",host:"host"}),Pn=()=>({basis:He.host}),ko="hp-consent",ue=["analytics","marketing","personalisation","ad_user_data","ad_personalization"],On={analytics:"a",marketing:"m",personalisation:"p",ad_user_data:"aud",ad_personalization:"adp"},X=()=>typeof window<"u",Ln=()=>X()&&typeof window.cookieStore?.addEventListener=="function",Ao=e=>e===!0?!0:e===!1?!1:null;function Se(e){if(!e||typeof e!="object")return null;let t={};for(let n of ue)t[n]=Ao(e[n]);return t}function kt(e,t){return!e||!t?e===t:ue.every(n=>e[n]===t[n])}function At(e){if(!e)return"";let t=[];for(let n of ue){let r=e[n];(r===!0||r===!1)&&t.push(`${On[n]}=${r?1:0}`)}return t.join("&")}function vt(e){return{[ko]:At(Se(e))}}function Ee(e){let t=Se({});if(e==null)return t;let n=String(e).trim();if(n.length>=2&&n.startsWith('"')&&n.endsWith('"')&&(n=n.slice(1,-1)),n.includes("%"))try{n=decodeURIComponent(n.replace(/\+/g," "))}catch{return t}let r=Object.fromEntries(Object.entries(On).map(([s,i])=>[i,s])),o=new Set;for(let s of n.split("&")){let i=s.indexOf("=");if(i<=0)continue;let c=r[s.slice(0,i).trim()],u={1:!0,0:!1}[s.slice(i+1).trim()]??null;!c||u===null||o.has(c)||(t[c]===null?t[c]=u:t[c]!==u&&(t[c]=null,o.add(c)))}return t}function Et(e,t){if(!t)return e;let n=r=>{if(!r)return r;let o={...r};for(let s of ue)s!=="analytics"&&t[s]!==!0&&(o[s]=null);return o};return{name:e.name,basis:e.basis,read:()=>n(e.read()),subscribe:r=>e.subscribe(o=>r(n(o))),get observesChanges(){return e.observesChanges}}}function Ct(e,t={}){return{...e,ad_user_data:t.ad_user_data??e.marketing,ad_personalization:t.ad_personalization??e.marketing}}function qe(e,t){let n=!0;return{notify:()=>{if(n)try{let o=e();o&&t(o)}catch{}},stop:()=>n=!1}}var vo={analytics:["analytics","measure_content_performance","audience_measurement"],marketing:["marketing","targeting","advertising","select_personalized_ads","create_ads_profile"],personalisation:["personalisation","personalization","select_personalized_content","create_content_profile"]};function Eo(e,t){if(!t?.length)return null;let n=!1;for(let[r,o]of Object.entries(e)){let s=String(o?.id??r).toLowerCase();if(t.some(c=>{let u=String(c).toLowerCase();return s===u||s.startsWith(`${u}-`)})&&(n=!0,o?.enabled===!0))return!0}return n?!1:null}function Tn(e={}){let t={...vo,...e.purposes};function n(){let r=X()?window.Didomi:void 0;if(!r?.getCurrentUserStatus||r.shouldUserStatusBeCollected?.()!==!1||r.isUserStatusPartial?.()===!0)return null;let o=r.getCurrentUserStatus()?.purposes;if(!o||typeof o!="object")return null;let s=i=>Eo(o,t[i]);return Ct({analytics:s("analytics"),marketing:s("marketing"),personalisation:s("personalisation")},{ad_user_data:s("ad_user_data"),ad_personalization:s("ad_personalization")})}return{name:"didomi",read:n,observesChanges:!0,subscribe(r){if(!X())return()=>{};let o=qe(n,r),s={event:"consent.changed",listener:o.notify};return window.didomiEventListeners=window.didomiEventListeners||[],window.didomiEventListeners.push(s),window.didomiOnReady=window.didomiOnReady||[],window.didomiOnReady.push(i=>{o.notify(),(i??window.Didomi)?.on?.("consent.changed",o.notify)}),window.Didomi?.on?.("consent.changed",o.notify),o.stop}}}function It(e){let t={};if(!e)return t;for(let n of String(e).split("&")){let r=n.indexOf("=");if(r<=0)continue;let o=n.slice(r+1).replace(/\+/g," ");try{o=decodeURIComponent(o)}catch{}t[n.slice(0,r)]=o}return t}function Nn(e={}){let t={analytics:"C0002",personalisation:"C0003",marketing:"C0004",...e.groups},n=e.impliedConsent===!0;function r(){let i=It(U("OptanonConsent"));if(i.groups){let d={};for(let f of i.groups.split(",")){let[p,h]=f.split(":");p?.trim()&&(d[p.trim()]=h==="1"?!0:h==="0"?!1:null)}return f=>d[f]??!1}let c=X()?window.OnetrustActiveGroups:void 0;if(typeof c!="string"||!c.length)return null;let u=new Set(c.split(",").map(d=>d.trim()).filter(Boolean));return d=>u.has(d)}function o(){if(U("OptanonAlertBoxClosed"))return!0;try{if(X()&&window.OneTrust?.IsAlertBoxClosed?.()===!0)return!0}catch{}return Number.parseInt(It(U("OptanonConsent")).interactionCount,10)>0?!0:n&&X()&&(!!window.OneTrust||typeof window.OnetrustActiveGroups=="string")}function s(){if(!o())return null;let i=r();if(!i)return null;let c=p=>t[p]?i(t[p]):null,u=Ct({analytics:c("analytics"),marketing:c("marketing"),personalisation:c("personalisation")},{ad_user_data:c("ad_user_data"),ad_personalization:c("ad_personalization")}),d=It(U("OptanonConsent"));return(typeof navigator<"u"&&navigator.globalPrivacyControl===!0||d.isGpcEnabled==="1")&&(u.marketing=!1,u.ad_user_data=!1,u.ad_personalization=!1),u}return{name:"onetrust",read:s,observesChanges:!0,subscribe(i){if(!X())return()=>{};let c=qe(s,i),u=!1,d=()=>{u||!window.OneTrust?.OnConsentChanged||(u=!0,window.OneTrust.OnConsentChanged(c.notify))};window.addEventListener("OneTrustGroupsUpdated",c.notify);let f=window.OptanonWrapper;return window.OptanonWrapper=function(...h){try{typeof f=="function"&&f.apply(this,h)}finally{d(),c.notify()}},d(),()=>{c.stop(),window.removeEventListener("OneTrustGroupsUpdated",c.notify)}}}}function Co(e){let t=String(e).split(",").map(n=>n.trim()).filter(Boolean);return t.length?new Set(t):null}function Rn(e){let{name:t,categories:n,parse:r=Co,refusedValue:o,source:s="native",changeEvent:i="thg_hp_consent_change"}=e??{};if(typeof t!="string"||t==="")throw new Error("cookieConsent: `name` (the cookie your banner writes) is required");if(!n||typeof n.analytics!="string")throw new Error("cookieConsent: `categories.analytics` (the category id that grants analytics) is required");function c(){let u=U(t);if(u==null)return null;let d;if(o!==void 0&&u===o)d=new Set;else try{d=r(u)}catch{d=null}if(!(d instanceof Set))return null;let f=p=>n[p]?d.has(n[p]):null;return Ct({analytics:f("analytics"),marketing:f("marketing"),personalisation:f("personalisation")},{ad_user_data:f("ad_user_data"),ad_personalization:f("ad_personalization")})}return{name:s,read:c,get observesChanges(){return Ln()},subscribe(u){if(!X())return()=>{};let d=qe(c,u),f=p=>{[...p.changed??[],...p.deleted??[]].some(b=>b?.name===t)&&d.notify()};return window.addEventListener(i,d.notify),window.cookieStore?.addEventListener?.("change",f),()=>{d.stop(),window.removeEventListener(i,d.notify),window.cookieStore?.removeEventListener?.("change",f)}}}}function Mn(e={}){let t=e.name??L("consent"),n=()=>{let r=U(t);if(r==null)return null;let o=Ee(r);return o.analytics==null?null:o};return{name:"forwarded",read:n,get observesChanges(){return Ln()},subscribe(r){if(!X())return()=>{};let o=qe(n,r),s=i=>{[...i.changed??[],...i.deleted??[]].some(u=>u?.name===t)&&o.notify()};return window.cookieStore?.addEventListener?.("change",s),()=>{o.stop(),window.cookieStore?.removeEventListener?.("change",s)}}}}function Dn(e){let t=Se(e);return{name:"static",basis:He.host,read:()=>t?{...t}:null,observesChanges:!0,subscribe:()=>()=>{}}}function $n(e){if(e==null)return null;let t=String(e).split("/").map(n=>n.trim()).filter(Boolean).join("/");return t===""?null:t}function Po(e){let t=e.item_category;if(t!=null&&String(t).includes("/"))return $n(t);let n=[t,e.item_category2,e.item_category3,e.item_category4,e.item_category5].map(r=>r==null?"":String(r).trim()).filter(Boolean);return $n(n.join("/"))}var Oo=e=>{if(e==null||typeof e=="object")return null;let t=String(e).trim();return t===""?null:t};function Lo(...e){for(let t of e){if(typeof t=="number"&&Number.isFinite(t))return String(t);if(typeof t=="string"&&t.trim()!=="")return t.trim()}return null}var Fe=e=>Lo(e.item_group_id,e.item_id);function To(e,t=Fe){if(!e)return null;let n=c=>c==null||c===""||Number.isNaN(Number(c))?null:Number(c),r=c=>{let u=n(c);return u==null?null:Math.round(u*1e6)/1e6},o=c=>{let u=r(c);return u!=null&&u>=0?u:null},s=c=>{let u=n(c);return Number.isInteger(u)&&u>=0?u:null},i=Oo;return{product_id:i(t(e)),sku:i(e.item_id),name:i(e.item_name),brand:i(e.item_brand),variant:i(e.item_variant)??i(e.variant),category:Po(e),price:r(e.price),discount:o(e.discount),quantity:s(e.quantity),coupon:i(e.coupon),position:s(e.index)!=null?s(e.index)+1:null,url:i(e.url)??i(e.item_url)??null,image_url:i(e.image_url)??i(e.image_link)??null,displayed_sku:i(e.displayed_sku)??i(e.displayed_variant_sku)}}function Pt(e,t=Fe){return(e??[]).map(n=>To(n,t)).filter(n=>n?.product_id)}var No=1e3,Ro={shipping:2,payment:3},Mo=new Set(["password","google","apple","facebook","magic_link","sso","passkey","other"]),V=e=>{if(e==null||typeof e=="object")return null;let t=String(e).trim();return t===""?null:t},Do=e=>{if(e==null||e===""||typeof e=="object")return null;let t=Number(e);return Number.isFinite(t)&&t>=0?t:null},Ke=e=>e!==null&&typeof e=="object";function $o(e){return Array.isArray(e.items)?e.items.filter(Ke):null}function Un(e){let t=V(e)?.toLowerCase().replace(/[\s-]+/g,"_");return t?Mo.has(t)?t:t==="email"||t==="email_password"?"password":"other":null}function Uo({ecommerce:e,items:t}){let n=s=>({promotion_id:V(s.promotion_id),name:V(s.promotion_name),creative:V(s.creative_name),position:V(s.creative_slot)}),r=new Set,o=[];for(let s of[n(e),...t.map(n)])!s.promotion_id||r.has(s.promotion_id)||(r.add(s.promotion_id),o.push(s));return o}var Vn=({ecommerce:e,items:t})=>V(e.item_list_id)??V(e.item_list_name)??V(t[0]?.item_list_id)??V(t[0]?.item_list_name),le=(e,t)=>t.products?.length?{event:e,properties:t}:null,Vo=new Set(["product","products","item","items"]);function Bo({ecommerce:e}){let t=V(e.item_id),n=V(e.content_type)?.toLowerCase();return!t||n&&!Vo.has(n)?null:{event:"Product Shared",properties:{share_via:V(e.method),products:[{product_id:t}]}}}function jo(e){let t=o=>le("Product List Viewed",{list_id:Vn(o),products:o.products}),n=o=>{let s=V(o.ecommerce.search_term);return s?{event:"Products Searched",properties:{query:s,...o.products.length?{products:o.products}:{}}}:null},r=o=>s=>s.promotions.map(i=>({event:o,properties:i}));return{view_item:o=>le("Product Viewed",{currency:o.currency,value:o.value,products:o.products.slice(0,1)}),view_item_list:t,view_search_results:o=>n(o)??t(o),search:n,select_item:o=>le("Product Clicked",{list_id:Vn(o),products:o.products.slice(0,1)}),add_to_cart:o=>le("Product Added",{cart_id:V(o.ecommerce.cart_id),products:o.products}),remove_from_cart:o=>le("Product Removed",{cart_id:V(o.ecommerce.cart_id),products:o.products}),view_cart:o=>({event:"Cart Viewed",properties:{cart_id:V(o.ecommerce.cart_id),value:o.value,currency:o.currency,coupon:V(o.ecommerce.coupon),...o.itemsListed?{products:o.products}:{}}}),begin_checkout:o=>le("Checkout Started",{value:o.value,currency:o.currency,coupon:V(o.ecommerce.coupon),products:o.products}),add_shipping_info:o=>({event:"Checkout Step Completed",properties:{step:e.shipping,step_name:"shipping",shipping_method:V(o.ecommerce.shipping_tier)}}),add_payment_info:o=>({event:"Payment Info Entered",properties:{step:e.payment,step_name:"payment",payment_method:V(o.ecommerce.payment_type)}}),view_promotion:r("Promotion Viewed"),select_promotion:r("Promotion Clicked"),add_to_wishlist:o=>le("Product Added to Wishlist",{products:o.products}),share:Bo,login:o=>({event:"Signed In",properties:{method:Un(o.ecommerce.method)}}),sign_up:o=>({event:"Signed Up",properties:{method:Un(o.ecommerce.method)}})}}var Ho=e=>e.event;function qo(e,t){if(!Ke(e))return null;if(typeof e.length=="number"&&e[0]==="event"&&typeof e[1]=="string"){let r=Ke(e[2])?e[2]:{};return{name:e[1],entry:r,ecommerce:r}}let n=V(t(e));return n?{name:n,entry:e,ecommerce:Ke(e.ecommerce)?e.ecommerce:e}:null}function Ot(e){return Array.isArray(e)?`[${e.map(Ot).join(",")}]`:e&&typeof e=="object"?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${Ot(e[t])}`).join(",")}}`:JSON.stringify(e??null)}function Bn(e,t={}){if(!e||typeof e.track!="function")throw new Error("connectDataLayer: analytics must have a track(event, properties, options) method");let n=t.dataLayer??(typeof window<"u"?window.dataLayer=window.dataLayer||[]:null);if(!Array.isArray(n))return()=>{};let r=jo({...Ro,...t.steps}),o=t.map??{},s=t.eventName??Ho,i=t.productId??Fe,c=new Set(["purchase","refund",...t.ignore??[]]),u=t.dedupeMs??No,d=new Map,f=!0;function p(w,g,S){if(u<=0)return!1;let T=`${w}|${S??""}|${Ot(g)}`,D=Date.now();for(let[K,z]of d)D-z>u&&d.delete(K);return d.has(T)?!0:(d.set(T,D),!1)}let h=null,b=new Set;function y(w,g){if(w!=="Product Viewed")return!1;let S=typeof location>"u"?"":location.pathname;S!==h&&(h=S,b.clear());let T=g.products?.[0]?.product_id;return T?b.has(T)?!0:(b.add(T),!1):!1}function _({event:w,properties:g={}},S){if(!w||p(w,g,S)||y(w,g))return;let T=S?{context:{currency:S}}:void 0;if(w==="Signed Out"&&typeof e.signedOut=="function"){e.signedOut(T);return}e.track(w,g,T)}function A(w){let g=t.transform?t.transform(w):w,S=qo(g,s);if(!S||c.has(S.name))return;let T=Object.hasOwn(o,S.name),D=T?o[S.name]:r[S.name];if(typeof D!="function")return;let K=$o(S.ecommerce),z=K??[],B={...S,items:z,itemsListed:K!==null,products:Pt(z,i),currency:wt(S.ecommerce.currency),value:Do(S.ecommerce.value)};B.promotions=Uo(B);let Ie=T?D(g,{...B,toProducts:W=>Pt(W,i)}):D(B);for(let W of[Ie].flat())W&&_(W,B.currency)}function v(w){if(f)try{A(w)}catch(g){try{t.onError?.(g,w)}catch{}}}for(let w of n.slice())v(w);let m=n.push;function E(...w){let g=m.apply(this,w);for(let S of w)v(S);return g}return n.push=E,()=>{f=!1,n.push===E&&(n.push=m)}}var Fo="hp_debug",Ko=256;function Go(){try{return new URLSearchParams(location.search).get(Fo)}catch{return null}}function jn(e,t){if(typeof location>"u")return!1;try{let n=Go();if(n!==null){let o=n.trim();o===""||o.length>Ko?sessionStorage.removeItem(t):sessionStorage.setItem(t,o)}let r=sessionStorage.getItem(t);return!!(e&&r&&cn(r)===e)}catch{return!1}}var _e=class extends Error{},zo={inHoldout:()=>!0,personalisationGroup:()=>"excluded",servingHeaders:()=>({}),recommendationContext:()=>({}),flush:()=>Promise.resolve(),reset:()=>{}};function Lt(e,t){let n=zo[e]??(()=>null),r=o=>(console.warn(`[hp] ${String(e)} failed; nothing was sent`,o),n());return function(...s){try{let i=t.apply(this,s);return typeof i?.then=="function"?Promise.resolve(i).catch(r):i}catch(i){if(i instanceof _e)throw i;return r(i)}}}function Hn(e){for(let t of Reflect.ownKeys(e)){let{value:n}=Object.getOwnPropertyDescriptor(e,t)??{};typeof n=="function"&&(e[t]=Lt(t,n))}return e}var Ce=Symbol("hp.identityOption");var Wo=4320*60*60,Jo=100,Yo=1e3,Xo=2e3,qn=500,Ge=e=>(e?.unref?.(),e);function Zo(e,t){if(t?.analytics===!0&&e.analytics===!1)return"withdrawn";let n=ue.map(r=>e[r]).filter(r=>r!==null);return n.length&&n.every(Boolean)?"accept_all":n.length&&n.every(r=>!r)?"reject_all":"custom"}function Qo(e,t,n=L("consent")){if(!(typeof document>"u"))try{let r=typeof location<"u"&&location.protocol==="https:"?"; Secure":"",o=t?`; Domain=${t}`:"";document.cookie=`${n}=${At(e)}; Path=/; Max-Age=${Wo}; SameSite=Lax`+o+r}catch{}}function es(e){let t=Ee(U(e));return ue.some(n=>t[n]!==null)?t:null}function Fn(e){let{adapter:t,timeoutMs:n=5e3,cookieDomain:r=null,cookieName:o=L("consent"),release:s,announce:i}=e,c=e.discard??(()=>{}),u="pending",d=null,f=null,p=null,h=null,b=!1,y=null,_=[],A=N=>{u=N,e.onStatus?.(N)};function v(){try{return Se(t.read())}catch{return null}}function m(){f&&clearInterval(f),p&&clearTimeout(p),f=null,p=null}let E=()=>typeof window<"u"&&typeof document<"u",w=()=>{try{return typeof t.subscribe=="function"&&t.observesChanges===!0}catch{return!1}};function g(){h&&clearInterval(h),h=null}function S(){b||h||d===null||w()||E()&&document.visibilityState==="hidden"||(h=Ge(setInterval(()=>B(v()),Xo)))}let T=()=>u==="pending"||u==="unknown",D=e.store??null,K=()=>{let N=_.splice(0);D?.write([]);for(let j of N)s(j)},z=()=>{let N=_.splice(0);D?.write([]);for(let j of N)c(j)};function B(N){let j=Se(N);if(!j||j.analytics===null)return;let ge=d===null,Z=ge?es(o):d;if(!ge&&kt(Z,j))return;m(),d=j,S(),Qo(j,r,o);let k=!kt(Z,j);if(j.analytics){A("granted"),K(),k&&i({action:Zo(j,Z),state:j,previous:Z,withdrawal:!1});return}z(),Z?.analytics===!0&&i({action:"withdrawn",state:j,previous:Z,withdrawal:!0}),A("denied")}function Ie(){p=null,u==="pending"&&(A("unknown"),f&&clearInterval(f),f=Ge(setInterval(()=>B(v()),Yo)))}function W(N){T()&&(D||N?.type!=="visibilitychange"&&!N?.persisted&&z())}let oe=N=>{document.visibilityState==="hidden"?(g(),W(N)):S()},ke=N=>{g(),W(N)},he=N=>{N?.persisted&&d!==null&&B(v()),S()};return{get status(){return u},get state(){return d?{...d}:null},stamp(){return d?{...d,source:t.name??null,basis:t.basis??He.visitor}:null},admits(){return u==="granted"},hold(N){return!T()||_.length>=qn?(c(N),!1):(_.push(N),D?.write(_),!0)},onHidden:W,start(){b=!1;try{y=t.subscribe?.(N=>B(N))??null}catch(N){e.debug&&console.warn("[hp] consent adapter subscribe failed",N)}E()&&(window.addEventListener("pagehide",ke),window.addEventListener("pageshow",he),document.addEventListener("visibilitychange",oe)),D&&_.length===0&&_.push(...D.read().slice(-qn)),B(v()),!d&&(f=Ge(setInterval(()=>B(v()),Jo)),p=Ge(setTimeout(Ie,n)))},stop(){b=!0,m(),g(),typeof y=="function"&&y(),E()&&(window.removeEventListener("pagehide",ke),window.removeEventListener("pageshow",he),document.removeEventListener("visibilitychange",oe))}}}var ts=["recommendation","search_rank","banner","offer","layout","copy","price","other"],ze=e=>typeof e=="string"&&e!=="";function Kn(e){return(Array.isArray(e?.decisions)?e.decisions:[]).filter(t=>ze(t?.slot)&&ze(t.decision_id)&&t.holdout!==!0).map(({decision_id:t,slot:n,arm:r,kind:o})=>({decision_id:t,slot:n,...ze(r)&&{arm:r},...ts.includes(o)&&{kind:o}}))}function Gn({key:e,mayStore:t}){let n,r=()=>{if(n)return n;try{let s=JSON.parse(sessionStorage.getItem(e));n=Array.isArray(s)?s.filter(i=>ze(i?.slot)):[]}catch{n=[]}return n},o=()=>{try{n?.length&&t()&&sessionStorage.setItem(e,JSON.stringify(n))}catch{}};return{persist:o,current:()=>r().length?n.map(s=>({...s})):null,remember(s){if(!s.length)return;let i=new Set(s.map(c=>c.slot));n=[...r().filter(c=>!i.has(c.slot)),...s],o()},forget(){n=[];try{sessionStorage.removeItem(e)}catch{}}}}function ns(e){let t=2166136261,n=String(e);for(let r=0;r<n.length;r+=1)t^=n.charCodeAt(r),t=t+((t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24))>>>0;return t^=t>>>16,t=Math.imul(t,2246822507)>>>0,t^=t>>>13,t=Math.imul(t,3266489909)>>>0,t^=t>>>16,t>>>0}function We(e,t,n=1e4){return ns(`${t}\0${e}`)%n}function Tt(e){let t=o=>Math.min(Math.max(Number(o)||0,0),1),n=t(e.share),r=1-n;return{holdout_share:n,personalised_share:e.ramp==null?r:Math.min(t(e.ramp),r)}}function Nt(e,t){if(!e||typeof e.salt!="string")return{holdout:!1,bucket:null,group:"personalised"};let n=e.ramp!=null;if(t==null||t==="")return{holdout:!1,bucket:null,group:n?"excluded":"personalised"};let{holdout_share:r,personalised_share:o}=Tt(e),s=We(t,e.salt),i=u=>Math.round(u*1e4),c=r>0&&s<i(r)?"holdout":!n||s<i(r+o)?"personalised":"excluded";return{holdout:c==="holdout",bucket:s,group:c}}function zn(e,t){return typeof e!="string"||e===""||t==null||t===""?null:We(t,`bandit-vs-default:${e}`)<1e4/2?"default":"bandit"}var rs="hp_preview",os=256;function Wn(e,t=null){if(typeof location>"u")return U(e);let n=null;try{n=new URLSearchParams(location.search).get(rs)}catch{n=null}if(n===null)return U(e);let r=n.trim();return r===""||r.length>os?(te(e,"",0,t),null):(te(e,r,null,t),r)}var ss=40,is=128,as=5,cs=60,Yn=e=>typeof e=="string"&&e!==""&&e.length<=is&&!e.includes(","),Jn=e=>Array.isArray(e)?e.filter(Yn).slice(0,ss):[],us=e=>Array.isArray(e)?e.filter(t=>typeof t=="string").map(t=>t.replaceAll(","," ").trim()).filter(t=>t!=="").slice(0,as):[],ls=e=>Object.entries(e&&typeof e=="object"?e:{}).filter(([t,n])=>Yn(t)&&Number.isFinite(n)&&n>=1).sort(([,t],[,n])=>n-t).slice(0,cs).map(([t,n])=>`${t}:${Math.floor(n)}`);function Rt(e){let t={},n={viewed:Jn(e?.recentProducts),basket:Jn(e?.basketProducts),q:us(e?.recentSearches),impressed:ls(e?.impressions)};for(let[r,o]of Object.entries(n))o.length>0&&(t[r]=o.join(","));return t}var ds=1800*1e3;function Xn(e,t=Date.now()){try{localStorage.setItem(L("recommendationContext"),JSON.stringify({context:e,until:t+ds}))}catch{}}function Zn(){try{localStorage.removeItem(L("recommendationContext"))}catch{}}var fs="hp_sample",Qn=1e4;function er(e,t){return!(typeof t=="number"&&t<1)||e==null||e===""?!0:We(e,fs,Qn)<Math.round(t*Qn)}function be(e){return e.trim().toLowerCase().replace(/\s*\/\s*/g,"/").replace(/^\/+|\/+$/g,"")}var ps=2,ms=12;function Pe(e,t=ps){return e.split("/").slice(0,t).join("/")}function Mt(e,t){if(typeof t!="string"||!t.trim())return null;let n=Pe(be(t));return n?(e.unshift(n),e.length=Math.min(e.length,ms),n):null}var de=()=>L("sessionSignals"),xe=null,Dt=()=>xe??de();function tr(){try{return xe?localStorage:sessionStorage}catch{return}}function nr(e,t){let n=t==null?null:String(t),r=e?F(de(),n,e):null;if(r===xe)return;let o=xe===null?hs():null;if(xe=r,!!xe)try{let s=Dt(),i=An(de(),n);for(let c of Object.keys(localStorage))c.startsWith(i)&&c!==s&&localStorage.removeItem(c);o&&!localStorage.getItem(s)&&(localStorage.setItem(s,JSON.stringify(o)),sessionStorage.removeItem(de()))}catch{}}function hs(){try{let e=sessionStorage.getItem(de());if(!e)return null;let t=JSON.parse(e);return t&&(t.productViews>0||t.listViews>0||t.basketValue!=null||t.recentProducts?.length||t.recentBrowse?.length)?t:null}catch{return null}}function Je(){return{productViews:0,listViews:0,cartAdds:0,searches:0,recentProducts:[],recentCategories:[],recentBrowse:[],basketProducts:[],basketValue:null,recentSearches:[],impressions:{},browsingCategory:null,recentBrowseCategories:[],browsingListing:null,listViewsByCategory:{},startedAt:0}}function $t(){let e=tr();if(!e)return Je();try{let t=e.getItem(Dt());return t?{...Je(),...JSON.parse(t)}:{...Je(),startedAt:Date.now()}}catch{return{...Je(),startedAt:Date.now()}}}function Ut(e){let t=tr();if(t)try{t.setItem(Dt(),JSON.stringify(e))}catch{}}function Vt(){return $t()}function rr(){for(let e of[()=>sessionStorage,()=>localStorage])try{let t=e();t.removeItem(de());for(let n of Object.keys(t))n.startsWith(`${de()}:`)&&t.removeItem(n)}catch{}}var or=20,sr=200,gs=new Set(["Product Viewed","Product Clicked","Product Added","Product Added to Wishlist"]),ys=new Set(["Product Viewed","Product Added"]),ir=50;function Ye(e,t){let n=Mt(e.recentBrowse,t);return n?(e.recentBrowseCategories=[e.browsingListing?.category??null,...e.recentBrowseCategories].slice(0,e.recentBrowse.length),n):null}function ws(e,t){let n=e.listViewsByCategory;n[t]=(n[t]??0)+1;let r=Object.keys(n);if(r.length>ir){let o={};for(let s of r.sort((i,c)=>n[c]-n[i]).slice(0,ir))o[s]=n[s];e.listViewsByCategory=o}}function ar(e,t){let n=$t();n.startedAt||(n.startedAt=Date.now());let r=Array.isArray(t?.products)?t.products:[];switch(e){case"Product Viewed":n.productViews+=1,Ye(n,n.browsingCategory);break;case"Product List Viewed":{let i=t?.list_id,c=t?.category;if(!(typeof i=="string"&&i.includes("/")&&!i.startsWith("cdp-")))break;let d=typeof c=="string"&&Pe(be(c))||null,f=d?Pe(be(i)):"";if(!f){n.browsingCategory=null,n.browsingListing=null;break}n.browsingListing={key:f,category:d},Ye(n,f),n.browsingCategory=f,ws(n,d),n.listViews+=1}break;case"Product List Filtered":{let i=t?.change,c=typeof t?.list_id=="string"?t.list_id:"",u=typeof i?.value=="string"?i.value:"",d=n.browsingListing;if(u&&i?.action!=="removed"&&d&&Pe(be(c))===d.key){let f=Ye(n,`${c}/${u}`);f&&(n.browsingCategory=f)}break}case"Product Added":{n.cartAdds+=1,Ye(n,n.browsingCategory);for(let i of r){let c=i.product_id;typeof c!="string"||!c||(n.basketProducts=[c,...n.basketProducts.filter(u=>u!==c)].slice(0,or))}break}case"Product Removed":{for(let i of r){let c=i.product_id;typeof c=="string"&&c&&(n.basketProducts=n.basketProducts.filter(u=>u!==c))}break}case"Products Searched":{n.searches+=1;let i=t?.query;if(typeof i=="string"&&i.trim()){let c=i.trim().toLowerCase().slice(0,64);n.recentSearches=[c,...n.recentSearches.filter(u=>u!==c)].slice(0,5)}break}case"Product Clicked":case"Product Added to Wishlist":break;case"Cart Updated":{let i=t?.value;return n.basketValue=typeof i=="number"&&Number.isFinite(i)&&i>=0?i:null,Ut(n),n}default:return n}let o=gs.has(e);if(o)for(let i of r)typeof i.product_id=="string"&&i.product_id&&delete n.impressions[i.product_id];else{for(let c of r){let u=c.product_id;typeof u!="string"||!u||(n.impressions[u]=(n.impressions[u]??0)+1)}let i=Object.keys(n.impressions);if(i.length>sr){let c={};for(let u of i.sort((d,f)=>n.impressions[f]-n.impressions[d]).slice(0,sr))c[u]=n.impressions[u];n.impressions=c}}let s=new Set;for(let i of r){let c=i.product_id;if(o&&typeof c=="string"&&c&&(n.recentProducts=[c,...n.recentProducts.filter(u=>u!==c)].slice(0,or)),ys.has(e)&&typeof i.category=="string"&&i.category){let u=be(i.category);u&&!s.has(u)&&(s.add(u),Mt(n.recentCategories,u))}}return Ut(n),n}var cr=1800*1e3;function ur({name:e,domain:t=null,mayStore:n,now:r=()=>Date.now(),mint:o=ee}){let s=null,i=0,c=()=>{s!==null&&n()&&te(e,s,cr/1e3,t)};return{get(){let u=r(),d=U(e);return d?s=d:(s===null||u-i>=cr)&&(s=o()),i=u,c(),s},persist:c,forget(){te(e,"",0,t),s=null}}}var G=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),lr=e=>Array.isArray(e)&&e.every(t=>typeof t=="string"),jt=Object.freeze({enabled:!1});function dr(e,t){let n=e?.track;return G(n)?(Object.hasOwn(n,t)?n[t]:n.__default)?.enabled!==!1:!0}function Ss(e,t){return`${ne(e)}/v1/projects/${encodeURIComponent(t)}/settings`}var _s="https://hp.thgingenuity.com";function ne(e){return e==null||e===""?_s:pr(e)}function fr(e,t){return e!=null&&e!==""?ne(e):t?.startsWith("https://")?t:ne(void 0)}function pr(e){if(typeof e!="string")return null;let t=e.trim().replace(/\/+$/,"");return/^https?:\/\/[^/\s]+$/i.test(t)?t:/^[a-z0-9.-]+(:\d+)?$/i.test(t)?`https://${t}`:null}function bs(e){if(!G(e))return null;let t=Object.fromEntries(Object.entries(e).filter(([,n])=>typeof n=="boolean"));return Object.keys(t).length?t:null}var Bt=e=>typeof e=="number"&&e>=0&&e<=1,xs=/^[0-9a-f]{64}$/;function Is(e){return G(e)?{enabled:e.enabled===!0,tokenSha256:typeof e.tokenSha256=="string"&&xs.test(e.tokenSha256)?e.tokenSha256:null}:{enabled:!1,tokenSha256:null}}function ks(e){if(!G(e))return null;let t=Object.fromEntries(Object.entries(e).filter(([,n])=>G(n)&&Bt(n.share)&&(n.ramp==null||Bt(n.ramp))&&typeof n.salt=="string"&&n.salt!=="").map(([n,r])=>[n,{share:r.share,ramp:r.ramp??null,salt:r.salt,...lr(r.readoutSlots)&&r.readoutSlots.length>0&&{readoutSlots:r.readoutSlots}}]));return Object.keys(t).length?t:null}var As=/^[A-Za-z0-9!#$%&'*+.^_`|~-]{1,128}$/;function vs(e){return G(e)?e.source==="hp_cookie"?{source:"hp_cookie"}:e.source!=="site_cookie"?null:e.cookie==null?{source:"site_cookie",cookie:null}:typeof e.cookie=="string"&&As.test(e.cookie)?{source:"site_cookie",cookie:e.cookie}:null:null}function Es(e){let t=Array.isArray(e?.forms)?e.forms.filter(G):[];return t.length===0?null:{forms:t,capture:G(e.capture)?e.capture:null,...Number.isInteger(e.overlay_gap_minutes)?{overlay_gap_minutes:e.overlay_gap_minutes}:{}}}function Cs(e){let t=G(e)?e.hp:null;return G(t)&&typeof t.enabled=="boolean"}function Ht(e){let t=G(e)?e.hp:null;if(!G(t)||t.enabled!==!0)return jt;let n=Es(t.onsite);return{enabled:!0,propertyId:typeof t.propertyId=="string"&&t.propertyId!==""?t.propertyId:null,environment:typeof t.environment=="string"?t.environment:null,consentPurposes:bs(t.consent?.purposes),queryParamAllowlist:lr(t.queryParamAllowlist)?t.queryParamAllowlist:null,anonymousId:vs(t.anonymousId),apiHost:pr(t.apiHost),holdouts:ks(t.holdouts),sampleRate:Bt(t.sampleRate)?t.sampleRate:1,debug:Is(t.debug),...n&&{onsite:n},plan:G(e.plan)&&G(e.plan.track)?{track:e.plan.track}:null}}async function mr(e,t,n=globalThis.fetch){try{let r=await n(Ss(e,t),{credentials:"omit",headers:{accept:"application/json"}});if(!r.ok)return null;let o=await r.json();return Cs(o)?Ht(o):null}catch{return null}}var Xe=e=>F(L("settings"),e);function hr(e){try{let t=localStorage.getItem(Xe(e));if(!t)return null;let n=JSON.parse(t);return n?.enabled===!0?n:null}catch{return null}}function gr(e,t){try{t?.enabled===!0?localStorage.setItem(Xe(e),JSON.stringify(t)):localStorage.removeItem(Xe(e))}catch{}}function qt(e){try{localStorage.removeItem(Xe(e))}catch{}}var Ps={flushAt:20,flushIntervalMs:1e4,maxQueue:500,maxRetryAgeMs:1440*60*1e3,maxRetries:5,maxPersistedBatches:20,maxPersistedBytes:1024*1024,storageKey:ce.retry,beaconSafeBytes:56*1024,maxBatchEvents:100,maxBatchBytes:500*1024},Ze=()=>Date.now(),yr=3e4,Yt=55*1024;function Os(e,t=Ze()){if(typeof e!="string")return 0;let n=e.trim();if(/^\d+$/.test(n))return Number(n)*1e3;if(n==="")return 0;let r=Date.parse(n);return Number.isNaN(r)?0:Math.max(0,r-t)}var re=e=>typeof TextEncoder<"u"?new TextEncoder().encode(e).length:Buffer.byteLength(e),Ft=()=>typeof window<"u"&&typeof document<"u";function Ls(){try{return!Ft()||!window.localStorage?null:(window.localStorage.getItem("thg_hp_probe"),window.localStorage)}catch{return null}}var I,Kt,Gt,Qe,zt,Wt,wr,Oe,Le,Te,Sr,Jt,_r,et,tt=class{constructor(t){sn(this,I);this.o={...Ps,...t},this.queue=[],this.timer=null,this.storage=Ls(),this.inflight=null,this.sending=new Set,this.epoch=0,this.sinceRefusal=new Set,this.wakers=new Set,this.replayAllowed=!this.o.deferReplay,this.draining=null,Ft()&&(window.addEventListener("pagehide",()=>this.flush({beacon:!0})),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&this.flush()}),O(this,I,et).call(this))}replayPersisted(){return this.replayAllowed=!0,O(this,I,et).call(this)}clearPersisted(){if(this.replayAllowed=!1,!!this.storage)try{let t=O(this,I,Te).call(this).filter(n=>this.sinceRefusal.has(n?.id));t.length?this.storage.setItem(this.o.storageKey,JSON.stringify(t)):this.storage.removeItem(this.o.storageKey)}catch{}}discardQueued(){this.queue=[],this.epoch+=1,this.sinceRefusal.clear(),O(this,I,Gt).call(this);for(let t of this.wakers)t()}enqueue(t){let n;try{n=JSON.parse(JSON.stringify(t))}catch(r){this.o.onError?.(`event ${t?.messageId??""} cannot be serialised; dropped`,r);return}this.queue.push(n),this.queue.length>this.o.maxQueue&&this.queue.splice(0,this.queue.length-this.o.maxQueue),this.queue.length>=this.o.flushAt?this.flush():O(this,I,Kt).call(this)}flush(t={}){if(O(this,I,Gt).call(this),this.queue.length===0)return Promise.resolve();if(t.beacon&&Ft()&&typeof navigator<"u"&&navigator.sendBeacon)return O(this,I,wr).call(this),Promise.resolve();if(this.inflight)return this.inflight;let n=O(this,I,Wt).call(this,this.queue,this.o.maxBatchEvents,this.o.maxBatchBytes).map(o=>{let s=O(this,I,Jt).call(this,o);return s&&(this.sending.add(s),this.sinceRefusal.add(s)),{batch:o,id:s}});this.queue=[];let r=this.epoch;return this.inflight=(async()=>{for(let{batch:o,id:s}of n){if(r!==this.epoch){O(this,I,Le).call(this,s);continue}await O(this,I,Oe).call(this,o,0,s,r)}})().finally(()=>{this.inflight=null,this.queue.length>=this.o.flushAt?this.flush():this.queue.length&&O(this,I,Kt).call(this)}),this.inflight}};I=new WeakSet,Kt=function(){this.timer||(this.timer=setTimeout(()=>this.flush(),this.o.flushIntervalMs),this.timer?.unref?.())},Gt=function(){this.timer&&(clearTimeout(this.timer),this.timer=null)},Qe=function(t){return JSON.stringify({batch:t,writeKey:this.o.writeKey,sentAt:new Date().toISOString()})},zt=function(){return`${this.o.apiHost.replace(/\/$/,"")}/v1/batch`},Wt=function(t,n,r){let o=re(O(this,I,Qe).call(this,[])),s=[],i=[],c=o;for(let u of t){let d=re(JSON.stringify(u))+1;i.length&&(i.length>=n||c+d>r)&&(s.push(i),i=[],c=o),i.push(u),c+=d}return i.length&&s.push(i),s},wr=function(){let t=this.queue;this.queue=[];let n=O(this,I,zt).call(this);for(let r of O(this,I,Wt).call(this,t,this.o.maxBatchEvents,this.o.beaconSafeBytes)){let o=O(this,I,Qe).call(this,r);if(re(o)<=this.o.beaconSafeBytes){let s=!1;try{s=navigator.sendBeacon(n,new Blob([o],{type:"text/plain"}))}catch{s=!1}if(s)continue}O(this,I,Oe).call(this,r,0,O(this,I,Jt).call(this,r))}},Oe=async function(t,n,r=null,o=this.epoch){r&&this.sending.add(r);let s=O(this,I,Qe).call(this,t),i=0;try{let c=await fetch(O(this,I,zt).call(this),{method:"POST",headers:{"Content-Type":"text/plain"},body:s,keepalive:re(s)<=this.o.beaconSafeBytes});if(c.ok)return O(this,I,Le).call(this,r),O(this,I,et).call(this),!0;let u=c.status===408||c.status===429||c.status>=500;if(u&&(i=Os(c.headers?.get?.("retry-after"))),!u)return O(this,I,Le).call(this,r),this.o.onError?.(`CDP ingest rejected batch (${c.status}); dropping ${t.length} events`),!0;throw new Error(`retryable ${c.status}`)}catch(c){if(n>=this.o.maxRetries){r&&this.sending.delete(r);let d=r?"kept for the next page":"dropped";return this.o.onError?.(`CDP ingest unreachable after ${n} attempts; ${d}: ${t.length} events`,c),!1}let u=Math.max(Math.min(1e3*2**n,yr)*(.5+Math.random()),Math.min(i,yr));return o===this.epoch&&await new Promise(d=>{let f=()=>{clearTimeout(p),this.wakers.delete(f),d()},p=setTimeout(f,u);this.wakers.add(f)}),o!==this.epoch?(O(this,I,Le).call(this,r),!1):O(this,I,Oe).call(this,t,n+1,r,o)}},Le=function(t){t&&(this.sending.delete(t),this.sinceRefusal.delete(t),O(this,I,_r).call(this,t))},Te=function(){let t=JSON.parse(this.storage.getItem(this.o.storageKey)||"[]");return Array.isArray(t)?t:[]},Sr=function(t,n){let r=i=>re(JSON.stringify(i))+1,o=[...t,n].slice(-this.o.maxPersistedBatches),s=o.reduce((i,c)=>i+r(c),2);for(;o.length>1&&s>this.o.maxPersistedBytes;)s-=r(o[0]),o=o.slice(1);for(;o.length;)try{return this.storage.setItem(this.o.storageKey,JSON.stringify(o)),!0}catch{o=o.slice(1)}return!1},Jt=function(t){if(!this.storage||this.o.mayPersist&&!this.o.mayPersist())return null;try{let n={at:Ze(),id:`${Ze()}-${Math.random().toString(36).slice(2)}`,batch:t};return re(JSON.stringify(n))+3>this.o.maxPersistedBytes?null:O(this,I,Sr).call(this,O(this,I,Te).call(this),n)?n.id:null}catch{return null}},_r=function(t){if(!(!t||!this.storage))try{let n=O(this,I,Te).call(this).filter(r=>r.id!==t);n.length?this.storage.setItem(this.o.storageKey,JSON.stringify(n)):this.storage.removeItem(this.o.storageKey)}catch{}},et=function(){if(!this.storage||!this.replayAllowed)return this.draining??Promise.resolve();if(this.draining)return this.draining;let t;try{let r=O(this,I,Te).call(this);t=r.filter(o=>Array.isArray(o?.batch)&&Ze()-o.at<this.o.maxRetryAgeMs).map(o=>o.id?o:{...o,id:`${o.at}-${Math.random().toString(36).slice(2)}`}),(t.length!==r.length||t.some((o,s)=>o!==r[s]))&&(t.length?this.storage.setItem(this.o.storageKey,JSON.stringify(t)):this.storage.removeItem(this.o.storageKey))}catch{return Promise.resolve()}let n=t.filter(r=>!this.sending.has(r.id));return n.length?(this.draining=(async()=>{for(let r of n)if(!this.replayAllowed||!await O(this,I,Oe).call(this,r.batch,0,r.id))return})().finally(()=>{this.draining=null}),this.draining):Promise.resolve()};var br="3.24.0",xr="@thg-agentic/hyper-personalisation-web";var Ts=new Set(["audiences","decisions","recommendations"]);var Ns=Symbol.for("@thg-agentic/hyper-personalisation-web.replay"),Rs=Symbol.for("@thg-agentic/hyper-personalisation-web.onsite-access");function Ms(e){let t={...e??{}},n=Array.isArray(t.products)?t.products:null;if(t.item_count==null&&n){let r=n.map(o=>o?.quantity);r.every(Number.isInteger)&&(t.item_count=r.reduce((o,s)=>o+s,0))}return t}var Ds="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";function $s(e){if(/^[0-9a-fA-F]{64}$/.test(e))return e.toLowerCase();if(!/^[A-Za-z0-9+/_-]{43}=?$/.test(e))return null;try{let t=atob(e.replace(/-/g,"+").replace(/_/g,"/").padEnd(44,"="));return t.length!==32?null:Array.from(t,n=>n.charCodeAt(0).toString(16).padStart(2,"0")).join("")}catch{return null}}function nt(e){if(typeof e!="string")return null;let t=$s(e.trim());return t===Ds?null:t}var Ir=Object.freeze({email_sha256:"sha256",phone_sha256:"sha256",accepts_marketing:"boolean",gender:"string",created_at:"date-time"}),Us=/^\d{4}-\d{2}-\d{2}T([01]\d|2[0-3]):[0-5]\d:[0-5]\d(\.\d+)?(Z|[+-]([01]\d|2[0-3]):[0-5]\d)$/i;function Vs(e){if(typeof e!="string"||!Us.test(e))return!1;let[t,n,r]=e.slice(0,10).split("-").map(Number),o=new Date(Date.UTC(t,n-1,r));return o.getUTCMonth()===n-1&&o.getUTCDate()===r&&!Number.isNaN(Date.parse(e))}function Bs(e,t){return t===null?null:e==="sha256"?nt(t)??void 0:e==="date-time"?t instanceof Date?Number.isNaN(t.getTime())?void 0:t.toISOString():Vs(t)?t:void 0:typeof t===e?t:void 0}function js(e,t){let n={},r=[];for(let[o,s]of Object.entries(e)){let i=Object.hasOwn(Ir,o)?Ir[o]:null,c=i?Bs(i,s):void 0;c===void 0?r.push(o):n[o]=c}return t&&r.length&&console.warn(`[hp] identify: not sent, not spec traits: ${r.join(", ")}`),n}var kr=!1,Ar=!1;function Hs(){Ar||(Ar=!0,console.warn("[hp] no consent adapter: events are sent under the host's lawful basis (basis 'host'). Pass `consent` to send only once the visitor allows analytics."))}function qs(e){!e||kr||(kr=!0,console.warn("[hp] mintAnonymousId is ignored since 3.6: where device ids come from is set per source in the console (the site\u2019s own cookie, or Hyper-Personalisation\u2019s)."))}function Fs(e){try{return re(JSON.stringify(e))}catch{return 0}}function vr(e){return e&&typeof e.context=="object"&&e.context!==null?e.context:e}function Er(e){let t=ne(e?.apiHost);if(!t)throw new Error("createAnalytics: apiHost, when given, must be a host or an http(s) origin");if(!e?.propertyId)throw new Error("createAnalytics: propertyId is required");let n={libraryName:xr,libraryVersion:br,writeKey:"web",queryParamBlocklist:[],debug:!1,validate:null,consentTimeoutMs:5e3,...e,apiHost:t};Ve(n.storageNames),Be();let r=!!n.consent;r||Hs();let o=null;n.getConsent=()=>o?o.stamp():Pn();let s=()=>!r||o?.status==="granted",i=r&&n.holdAcrossPages?vn(F(L("held"),n.propertyId)):null,c=i?.read()??{items:[],anonymousId:null};n.mintAnonymousId!==void 0&&qs(n.debug);let u=En(n,{carried:c.anonymousId,mayStore:s,orOwn:!0}),d=ur({name:L("session"),domain:n.consentCookieDomain??null,mayStore:s}),f=n.getSessionId;n.getSessionId=()=>q(M(f,null))??d.get();let p=Wn(L("preview"),n.consentCookieDomain??null),h=(a,l)=>n.debug&&console.warn("[hp]",a,l??""),b=n.transport??new tt({apiHost:n.apiHost,writeKey:n.writeKey,storageKey:F(L("retry"),n.propertyId),mayPersist:r?()=>o?.status==="granted":void 0,deferReplay:r,onError:h}),y=F(L("previousPage"),n.propertyId),_=null,A=()=>{if(_)return _;try{return sessionStorage.getItem(y)||null}catch{return null}};typeof window<"u"&&window.addEventListener("pageshow",a=>{a.persisted&&(_=null)});let v=a=>{if(_=a||null,!(r&&o.status!=="granted"))try{sessionStorage.setItem(y,a)}catch{}},m=Gn({key:F(L("decisions"),n.propertyId),mayStore:s});n.getDecisions??(n.getDecisions=m.current);let E=q(M(n.getUserId,null)),w=null,g=null,S=null,T=null,D=new Set,K=new Set;function z(a){if(a.type!=="track"||a.event!=="Cart Updated")return;let l=a.properties?.value;T=typeof l=="number"&&Number.isFinite(l)&&l>=0?l:null;for(let x of D)try{x()}catch(P){console.warn("[hp] a basket listener failed",P)}}function B(a,l,x=!1){z(a);try{return Ie(a,l,x)}catch(P){if(P instanceof _e)throw P;return console.warn("[hp] the event was not sent",P),null}}function Ie(a,l,x){let P=S;S=null;let H=a.type==="track"?a.event:a.type;if(!x&&!dr(n.plan,H))return null;let C={messageId:P?.messageId??ee(),timestamp:P?.timestamp??new Date().toISOString(),anonymousId:q(M(n.getAnonymousId,null)),userId:E??null,...a,context:bn(n,vr(l))};if(C.properties&&(C.properties=ht(C.properties)),typeof C.properties?.href=="string"&&(C.properties.href=yt(C.properties.href,n)),!x&&!er(C.anonymousId,n.sampleRate))return n.debug&&console.debug("[hp] not sent: outside the sample",C),null;if(n.beforeSend){let ye;try{ye=n.beforeSend(C)}catch(Fr){return console.warn("[hp] beforeSend failed; the event was not sent",Fr),null}if(!ye)return null;let{type:De,event:rn,messageId:Hr,timestamp:qr}=C;C={...ye,type:De,messageId:Hr,timestamp:qr,...rn?{event:rn}:{}}}if(n.validate){let ye=n.validate(C,{producer:"web"});if(!ye.valid){let De=`[hp] invalid ${C.event??C.type}:
|
|
2
|
+
${ye.errors.join(`
|
|
3
|
+
`)}`;if(n.throwOnInvalid)throw new _e(De);console.error(De)}}n.debug&&console.debug("[hp]",C.event??C.type,C);let nn=Fs(C);return nn>Yt?(h(`${C.event??C.type} not sent: ${nn} bytes, over the ${Yt}-byte limit for one event`),null):(Z(C,x),C)}function W(a){if(a.type==="track"&&N(a),n.onEvent)try{n.onEvent(a)}catch(l){console.warn("[hp] onEvent observer failed",l)}}let oe=()=>r&&o?.state?.personalisation===!0,ke=()=>nr(M(n.getSessionId,null),n.propertyId),he=!1;function N(a){try{oe()?(ke(),Xn(Rt(ar(a.event,a.properties))),he=!0):j()}catch(l){n.debug&&console.warn("[hp] the visit was not recorded",l)}}function j(a=!1){Zn(),(a||he)&&rr(),he=!1}function ge(){d.forget(),m.forget(),ct.clear(),u?.forget(),j(!0)}function Z(a,l){!r||l||o.admits()?(W(a),b.enqueue(a)):o.hold(a)}let k=(a,l,x)=>B({type:"track",event:a,properties:l??{}},x),ct=new Set,Br=(a,l,x)=>a==="audiences"?{audiences:l?null:x.audiences??[]}:a==="decisions"?{decisions:(x.decisions??[]).map(P=>({slot:P.slot,decision_id:P.decision_id??null,arm:P.arm??null,...P.variant&&{variant:P.variant}}))}:{recommendation_request_id:x.recommendation_request_id??null};r&&(o=Fn({adapter:n.consent,timeoutMs:n.consentTimeoutMs,cookieDomain:n.consentCookieDomain,debug:n.debug,store:i&&{read:()=>c.items,write:a=>i.write(a,u?.peek()??null)},release(a){a.context&&(a.context.consent=o.stamp()),W(a),b.enqueue(a)},onStatus(a){if(a==="granted"&&(u?.persist(),d.persist(),_&&v(_),m.persist(),b.replayPersisted?.()),a==="denied"){b.clearPersisted?.(),u?.forget(),d.forget();try{sessionStorage.removeItem(y)}catch{}m.forget(),j(!0)}try{n.onConsentStatus?.(a)}catch(l){console.warn("[hp] onConsentStatus observer failed",l)}if(a==="granted"||a==="denied")for(let l of K)try{l()}catch(x){console.warn("[hp] a consent listener failed",x)}},announce({action:a,state:l,previous:x,withdrawal:P}){l?.personalisation!==!0&&j(x?.personalisation===!0),P&&b.discardQueued?.(),B({type:"track",event:"Consent Updated",properties:{action:a,state:l}},void 0,P),P&&b.flush()}}),o.start());let Zt=()=>n.holdout?Tt(n.holdout):null,Qt=()=>Nt(n.holdout,q(M(n.getAnonymousId,null))).group;function jr(a,l){if(!Array.isArray(a?.decisions))return a;let x=n.holdout?.readoutSlots??[],P=q(M(n.getAnonymousId,null));return{...a,decisions:a.decisions.map(H=>{let C=H?.variant==="bandit"||H?.variant==="default"?H.variant:!l&&H?.holdout!==!0&&x.includes(H?.slot)?zn(H.slot,P):null;return C?C==="default"?{...H,variant:C,decision_id:null}:{...H,variant:C}:H})}}function en(a,l){if(p)return null;let x=a?.exposure,P=x?.holdout===!0,H=jr(a,P);return m.remember(Kn(H)),!x?.token||ct.has(x.token)?null:(ct.add(x.token),k("Personalisation Exposed",{exposure_token:x.token,surface:x.surface,holdout:P,holdout_share:x.holdout_share??Zt()?.holdout_share??null,personalised_share:x.personalised_share??Zt()?.personalised_share??null,...Br(x.surface,P,H)},l))}function tn(a){return E&&ge(),E=null,w=null,g=null,a}return Hn({track:(a,l,x)=>a==="Signed Out"?tn(k(a,l,x)):k(a,l,x),page(a,l){a??(a={});let x=n.pageType??null;a.type&&(we.has(a.type)?(x=a.type,n.pageType=a.type):n.debug&&console.warn(`[hp] ignoring unknown page.type "${a.type}". Allowed: ${[...we].join(", ")}`));let P=B({type:"page",properties:{name:a.name??null,navigation_trigger:a.navigation_trigger??hn(),previous_message_id:A()}},{page:{type:x},...vr(l)??{}});return P&&v(P.messageId),P},identify(a,l,x){let{userId:P,...H}=a&&typeof a=="object"?a:{};if(P!==void 0){let C=q(P);x===Ce?g=C:w&&C&&C!==w?ge():n.debug&&g&&C&&C!==g&&console.warn("[hp] identify names another userId than the identity option; using the new one"),E=C,C&&x!==Ce&&(w=C)}return B({type:"identify",traits:js(H,n.debug)},l)},reset(){E&&ge(),E=null,w=null,g=null,v("")},productViewed:(a,l)=>k("Product Viewed",a,l),productListViewed:(a,l)=>k("Product List Viewed",a,l),recommendationsViewed:(a,l)=>k("Recommendations Viewed",a,l),personalisationExposed:(a,l)=>k("Personalisation Exposed",a,l),recordExposure:en,surfaceViewed({surface:a}={},l){if(!Ts.has(a)||!n.holdout||a!=="decisions"&&!oe())return null;let x=q(M(n.getAnonymousId,null)),P=Nt(n.holdout,x).group;if(P==="excluded")return null;let H=fn({sessionId:$e(M(n.getSessionId,null),x),surface:a});return H?en({exposure:{token:H,surface:a,holdout:P==="holdout"}},l):null},inHoldout:()=>Qt()!=="personalised",personalisationGroup:Qt,productClicked:(a,l)=>k("Product Clicked",a,l),productListFiltered:(a,l)=>k("Product List Filtered",a,l),productsSearched:(a,l)=>k("Products Searched",a,l),searchSuggestionsViewed:(a,l)=>k("Search Suggestions Viewed",a,l),productAdded:(a,l)=>k("Product Added",a,l),productRemoved:(a,l)=>k("Product Removed",a,l),cartUpdated:(a,l)=>k("Cart Updated",Ms(a),l),identityLinked:(a,l)=>k("Identity Linked",a,l),slotEngaged:(a,l)=>p?null:k("Slot Engaged",a,l),productVariantSelected:(a,l)=>k("Product Variant Selected",a,l),cartViewed:(a,l)=>k("Cart Viewed",a,l),productAddedToWishlist:(a,l)=>k("Product Added to Wishlist",a,l),productRemovedFromWishlist:(a,l)=>k("Product Removed from Wishlist",a,l),wishlistProductAddedToCart:(a,l)=>k("Wishlist Product Added to Cart",a,l),productShared:(a,l)=>k("Product Shared",a,l),cartShared:(a,l)=>k("Cart Shared",a,l),couponEntered:(a,l)=>k("Coupon Entered",a,l),couponApplied:(a,l)=>k("Coupon Applied",a,l),couponDenied:(a,l)=>k("Coupon Denied",a,l),couponRemoved:(a,l)=>k("Coupon Removed",a,l),checkoutStarted:(a,l)=>k("Checkout Started",a,l),promotionViewed:(a,l)=>k("Promotion Viewed",a,l),promotionClicked:(a,l)=>k("Promotion Clicked",a,l),checkoutStepViewed:(a,l)=>k("Checkout Step Viewed",a,l),checkoutStepCompleted:(a,l)=>k("Checkout Step Completed",a,l),paymentInfoEntered:(a,l)=>k("Payment Info Entered",a,l),checkoutFailed:(a,l)=>k("Checkout Failed",a,l),signedIn:(a,l)=>k("Signed In",a,l),signedUp:(a,l)=>k("Signed Up",a,l),signedOut:a=>tn(k("Signed Out",{},a)),newsletterSubscribed:(a,l)=>k("Newsletter Subscribed",a,l),newsletterUnsubscribed:(a,l)=>k("Newsletter Unsubscribed",a,l),preferencesStated:(a,l)=>k("Preferences Stated",a,l),backInStockSubscribed:(a,l)=>k("Back In Stock Subscribed",a,l),productReviewed:(a,l)=>k("Product Reviewed",a,l),consentUpdated:(a,l)=>k("Consent Updated",a,l),flush:a=>b.flush(a),recommendationContext(){if(!oe())return{};try{return ke(),Rt(Vt())}catch{return{}}},get consent(){return o?o.state:null},servingHeaders:()=>vt(o?.state??null),get lastPageMessageId(){return A()},get anonymousId(){return q(M(n.getAnonymousId,null))},[Rs](){return{writeKey:n.writeKey,storageKey:F(L("onsite"),n.propertyId),gatewayHost:n.apiHost,servingHost:n.servingHost??n.apiHost,settings:n.onsite??null,debug:n.debug===!0,preview:p,anonymousId:()=>q(M(n.getAnonymousId,null)),sessionId:()=>q(M(n.getSessionId,null)),analytics:s,personalisation:oe,consent:()=>n.getConsent(),headers:()=>vt(o?.state??null),pageUrl:()=>typeof location>"u"?null:yt(location.href,n),locale:()=>St(M(n.getLocale,n.locale)),basketValue:()=>{let a=Vt().basketValue;return T??(Number.isFinite(a)?a:null)},onBasket:a=>(D.add(a),()=>D.delete(a)),consentAnswered:()=>!o||o.status==="granted"||o.status==="denied",onConsentAnswered:a=>(K.add(a),()=>K.delete(a))}},[Ns](a,l,x){if(typeof this[a]=="function"){S=typeof x?.messageId=="string"&&typeof x?.timestamp=="string"?{messageId:x.messageId,timestamp:x.timestamp}:null;try{this[a](...Array.isArray(l)?l:[])}finally{S=null}}}})}var Ne=Symbol.for("@thg-agentic/hyper-personalisation-web.onsite"),J=Symbol.for("@thg-agentic/hyper-personalisation-web.onsite.pending"),Re=Symbol.for("@thg-agentic/hyper-personalisation-web.onsite.listeners"),rt=Symbol.for("@thg-agentic/hyper-personalisation-web.onsite.suppressed"),Ks=["shown","submitted","apply","closed","held"],Cr=10,fe=()=>typeof window>"u"?null:window;function Me(){try{for(let{resolve:e}of fe()?.[J]?.splice(0)??[])e(!1)}catch{}}var pe=Object.freeze({open(e){try{let t=fe();if(!t||typeof e!="string")return Promise.resolve(!1);if(t[Ne])return t[Ne].open(e);if(t[J]??(t[J]=[]),t[J].length<Cr)return new Promise(n=>t[J].push({slot:e,resolve:n}))}catch{}return Promise.resolve(!1)},show(e){return pe.open(e)},on(e,t){var n;try{let r=fe();return!r||!Ks.includes(e)||typeof t!="function"?()=>{}:(r[Re]??(r[Re]={}),((n=r[Re])[e]??(n[e]=new Set)).add(t),()=>r[Re][e].delete(t))}catch{return()=>{}}},suppress(e="page"){try{let t=fe();if(!t)return;(t[rt]??(t[rt]=new Set)).add(String(e)),t[Ne]?.suppress()}catch{}},unsuppress(e){try{let t=fe()?.[rt];e===void 0?t?.clear():t?.delete(String(e))}catch{}},ready(){try{let e=fe();if(!e)return Promise.resolve([]);if(e[Ne])return Promise.resolve(pe.debug());if(e[J]??(e[J]=[]),e[J].length<Cr)return new Promise(t=>e[J].push({slot:null,resolve:()=>t(pe.debug())}))}catch{}return Promise.resolve([])},debug(){try{return fe()?.[Ne]?.debug()??[]}catch{return[]}}});function Pr(e){let t=typeof document>"u"?null:document.currentScript?.src;return t?new URL(e,t).href:null}var ot=new Map;function Or(e,t){return window[t]?Promise.resolve(window[t]):e?(ot.has(t)||ot.set(t,new Promise((n,r)=>{let o=document.createElement("script");o.src=e,o.async=!0,o.onload=()=>window[t]?n(window[t]):r(new Error(`${e} did not register`)),o.onerror=()=>r(new Error(`${e} did not load`)),document.head.append(o)}).finally(()=>ot.delete(t))),ot.get(t)):Promise.reject(new Error("the CDN script\u2019s own URL is unknown"))}var Gs=Pr("onsite.min.js"),Lr=()=>Or(Gs,Symbol.for("@thg-agentic/hyper-personalisation-web.onsite.module"));var Xt=Symbol.for("@thg-agentic/hyper-personalisation-web.bootstrap"),zs=Symbol.for("@thg-agentic/hyper-personalisation-web.drain"),Ws=Symbol.for("@thg-agentic/hyper-personalisation-web.carry"),Tr=Symbol.for("@thg-agentic/hyper-personalisation-web.replay"),Js=Symbol.for("@thg-agentic/hyper-personalisation-web.assignment"),Ys=Symbol.for("@thg-agentic/hyper-personalisation-web.recommendation-context"),at=e=>e?()=>U(e):()=>null,Mr={didomi:e=>Tn({purposes:e.purposes}),onetrust:e=>Nn({groups:e.groups,impliedConsent:e.impliedConsent}),cookie:e=>Rn({name:e.name,categories:e.categories,refusedValue:e.refusedValue,source:e.source,changeEvent:e.changeEvent}),forwarded:e=>Mn({name:e.name}),static:e=>{if(!e.state||typeof e.state!="object")throw new Error('consent.state is required for provider "static"');return Dn(e.state)}},Nr=Object.keys(Mr),me=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),st=e=>typeof e=="string"&&e!=="",Xs=e=>Array.isArray(e)&&e.every(t=>typeof t=="string"),Dr=e=>me(e)&&typeof e.read=="function";function Zs(e,t={}){let n=[];if(!me(e))return["config must be { writeKey, apiHost? }"];st(e.writeKey)||n.push("writeKey is required"),ne(e.apiHost)||n.push("apiHost, when given, must be a host or an http(s) origin"),t.propertyId!==void 0&&!st(t.propertyId)&&n.push("propertyId must be a string");let{consent:r}=t;if(!Dr(r)&&!(me(r)&&Nr.includes(r.provider))&&n.push(`consent must be a consent adapter or { provider: ${Nr.join(" | ")} }`),t.autocapture!==void 0&&t.autocapture!==!1&&!me(t.autocapture)&&n.push("autocapture must be false or { promotions, productLists, recommendations }"),t.onsite!==void 0&&typeof t.onsite!="boolean"&&!me(t.onsite)&&n.push("onsite must be true, false or the onsite options"),t.beforeSend!==void 0&&typeof t.beforeSend!="function"&&n.push("beforeSend must be a function"),t.identityCookies!==void 0)if(!me(t.identityCookies))n.push("identityCookies must be an object");else for(let o of["anonymousId","sessionId"]){let s=t.identityCookies[o];s!==void 0&&!st(s)&&n.push(`identityCookies.${o} must be a cookie name`)}for(let o of["getCurrency","getShipToCountry","getLocale"])t[o]!==void 0&&typeof t[o]!="function"&&n.push(`${o} must be a function`);return t.dataLayer!==void 0&&(me(t.dataLayer)?(t.dataLayer.name!==void 0&&!st(t.dataLayer.name)&&n.push("dataLayer.name must be a string"),t.dataLayer.ignore!==void 0&&!Xs(t.dataLayer.ignore)&&n.push("dataLayer.ignore must be an array of strings")):n.push("dataLayer must be an object")),n}function Qs(e,t,n){if(Dr(e))return Et(e,t.consentPurposes);let{provider:r,...o}=e,s=n?.consent?.[r]??Mr[r];return Et(s(o),t.consentPurposes)}var $r=(e,t)=>`${e??""}|${t??""}`;function ei(e,t){let n=q(t?.userId),r=nt(t?.emailSha256);if(!n&&!r)return null;try{let o=F(L("identified"),e);if(sessionStorage.getItem(o)===$r(n,r))return null}catch{}return{...n?{userId:n}:{},...r?{email_sha256:r}:{}}}async function ti({writeKey:e,apiHost:t},n){if(n.settings!==void 0)return{settings:Ht(n.settings),revalidated:null};let r=mr(t,e),o=hr(e);if(o)return{settings:o,revalidated:r};let s=await r,i=s??jt;return{settings:i,revalidated:Promise.resolve(i),unreachable:s===null}}function Ur(e,t){let n=t??{},r=typeof window<"u"?window:null;if(r?.[Xt])return r[Xt];let o=Cn(e?.writeKey,()=>{let{analytics:i}=Ee(U(L("consent")));return i===!0||i===null&&n.holdAcrossPages===!0}),s=oi(e,n,o);if(r){let i=n.extend?.getSessionId??at(n.identityCookies?.sessionId),c=at(n.identityCookies?.anonymousId);r[Js]=({slot:u,arm:d}={})=>dn({sessionId:$e(i(),c()),slot:u,arm:d}),r[Xt]=s,r[Ws]=o,r[zs]?.(s)}return s}function ni(){let e=globalThis.performance?.now?.();return new Date(Date.now()-(Number.isFinite(e)?e:0)).toISOString()}function Rr(e,t){if(t===!1)return()=>{};let n={promotions:!0,productLists:!0,recommendations:!0,exposures:!0,...t},r=s=>s&&typeof s=="object"?s:{},o=[];try{n.promotions&&o.push(ft(e,r(n.promotions))),n.productLists&&o.push(dt(e,r(n.productLists))),n.recommendations&&o.push(pt(e,r(n.recommendations))),n.exposures&&o.push(lt(e,r(n.exposures)))}catch(s){console.warn("[hp] autocapture not started:",s?.message??s)}return()=>{for(let s of o)s()}}function ri(e,t,n){if(!t||!n.onsite)return Me();Lr().then(r=>r.startOnsite(e,t===!0?{}:t)).catch(r=>{Me(),console.warn("[hp] onsite not started:",r?.message??r)})}function it(e){return e.close(),Me(),null}async function oi(e,t,n){try{let r=Zs(e,t);if(r.length)return console.warn(`[hp] not started, the configuration is invalid: ${r.join("; ")}`),it(n);Ve(t.storageNames),Be();let{writeKey:o}=e,[{settings:s,revalidated:i,unreachable:c},u]=await Promise.all([ti(e,t),Promise.resolve(t.identity).catch(()=>null)]),d=i?s:null,f=!1,p=()=>f&&d&&gr(o,d);if(i?.then(g=>{g&&(d=g,g.enabled?p():qt(o))}),c)return Me(),null;if(!s.enabled)return t.debug&&console.info("[hp] off: the settings for this write key do not enable it"),it(n);let h=t.propertyId??s.propertyId;if(!h)return console.warn("[hp] not started: this write key covers several properties, so propertyId is required"),it(n);let{preset:b}=t,y=ei(h,u),_=t.debug===!0||s.debug?.enabled===!0||jn(s.debug?.tokenSha256??null,L("debug")),A=q(u?.userId),v=Er({apiHost:fr(e.apiHost,s.apiHost),servingHost:ne(e.apiHost),onsite:s.onsite??null,writeKey:o,propertyId:h,pageType:we.has(t.pageType)?t.pageType:void 0,environment:s.environment,queryParamAllowlist:s.queryParamAllowlist??void 0,plan:s.plan,sampleRate:s.sampleRate??1,holdout:s.holdouts?.[h],getCurrency:t.getCurrency,getShipToCountry:t.getShipToCountry,getLocale:t.getLocale,consent:Qs(t.consent,s,b),consentCookieDomain:t.consentCookieDomain,storageNames:t.storageNames,holdAcrossPages:t.holdAcrossPages===!0,mintAnonymousId:t.mintAnonymousId,debug:_,anonymousIdSource:s.anonymousId??void 0,getAnonymousId:at(t.identityCookies?.anonymousId),getSessionId:t.identityCookies?.sessionId?at(t.identityCookies.sessionId):void 0,getUserId:()=>A,beforeSend:t.beforeSend,...t.extend,onConsentStatus(g){if(g==="granted"&&(f=!0,p()),g==="denied"){qt(o);try{sessionStorage.removeItem(F(L("identified"),h))}catch{}}t.extend?.onConsentStatus?.(g)},onEvent(g){if(g.type==="identify"){let S=$r(q(g.userId),nt(g.traits?.email_sha256));try{sessionStorage.setItem(F(L("identified"),h),S)}catch{}}t.extend?.onEvent?.(g)}});typeof window<"u"&&(window[Ys]=()=>v.recommendationContext());for(let[g,S,T]of n.take())try{v[Tr](g,S,T)}catch(D){console.warn(`[hp] carried ${g} failed`,D)}v[Tr]("page",[t.pageType?{type:t.pageType}:{}],{messageId:ee(),timestamp:ni()});let m=Rr(v,t.autocapture),E=v.page;v.page=Lt("page",(...g)=>{let S=E(...g);return m(),m=Rr(v,t.autocapture),S});let w=typeof window<"u"?window:null;if(w?.addEventListener?.("pageshow",g=>{g.persisted&&v.page({navigation_trigger:"back_forward"})}),t.dataLayer&&w){let g=t.dataLayer.name??"dataLayer";w[g]=w[g]||[],Bn(v,{...b,dataLayer:w[g],ignore:[...b?.ignore??[],...t.dataLayer.ignore??[]],onError:S=>_&&console.warn("[hp] dataLayer mapping failed",S)})}return y&&v.identify(y,void 0,Ce),v.onsite=pe,ri(v,t.onsite,s),v}catch(r){return console.warn("[hp] not started:",r?.message??r),it(n)}}function Vr(e){e.initialized=!0,Ur(e._config,e._options).then(t=>{let n=e.splice(0);if(!t){for(let r of e.methods??[])e[r]=()=>e;return}e.client=t;for(let[r,o]of Object.entries(t))typeof o=="function"&&(e[r]=o);for(let[r,...o]of n)try{t[r]?.(...o)}catch(s){console.warn(`[hp] queued ${r} failed`,s)}})}var $=window.hp=window.hp||[];$.servingHeaders??($.servingHeaders=()=>({}));$.inHoldout??($.inHoldout=()=>!0);$.personalisationGroup??($.personalisationGroup=()=>"excluded");$.recommendationContext??($.recommendationContext=()=>({}));$.onsite??($.onsite=pe);$.initialized||($._config?Vr($):$.load=(e,t)=>{$._config=e,$._options=t??{},Vr($)});})();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(()=>{function b(s,e,t,i,o){let n=s("select","i");n.setAttribute("aria-label",e);for(let[a,r]of[["",t],...i]){let c=s("option","",r);c.value=a,c.selected=a===o,n.append(c)}return n}var D=s=>String(s).padStart(2,"0"),T=120,I=/^-?\d{1,10}(?:\.(\d{1,10}))?$/,O=1e9;function N(s){try{let e=new Intl.DateTimeFormat(s,{month:"long",timeZone:"UTC"});return{name:t=>e.format(Date.UTC(2016,t-1,1)),monthFirst:new Intl.DateTimeFormat(s,{month:"numeric",day:"numeric"}).formatToParts(0).find(t=>t.type!=="literal")?.type==="month"}}catch{return{name:String,monthFirst:!1}}}var _=(s,e,t,i,o,n)=>{let a=b(s,t,t,Array.from({length:i},(r,c)=>[D(c+1),o(c+1)]),n);return a.name=e,a};function g(s,e,t,i,o){let n=s("input","i");return n.name=e,n.inputMode=i,n.setAttribute("aria-label",t),n.value=o??"",n}function A(s,e,t,i,o){let n=e.format??{},a=t("div",n.kind==="birthday"?"ph bd":"ph");if(e.type==="number")a.append(g(t,"hp_v",e.label,n.decimals?"decimal":"numeric",i)),n.unit&&a.append(t("span","u",n.unit));else if(n.kind==="birthday"){let[,r,c,f]=/^(\d{4}|-)-(\d\d)-(\d\d)$/.exec(i??"")??[],u=N(o||void 0),p=_(t,"hp_d","Day",31,String,f),m=_(t,"hp_m","Month",12,u.name,c);if(a.append(...u.monthFirst?[m,p]:[p,m]),n.year!=="none"){let d=g(t,"hp_y","Year","numeric",r==="-"?"":r);d.placeholder=n.year==="required"?"Year":"Year (optional)",d.autocomplete="bday-year",d.maxLength=4,a.append(d)}}else{let r=g(t,"hp_v",e.label,"none",i);r.type="date",r.min="1900-01-01",r.max="2100-12-31",a.append(r)}s.append(a)}function $(s,e){try{return new Intl.NumberFormat(e||void 0).format(s)}catch{return String(s)}}var v=(s,e,t)=>{let i=new Date(Date.UTC(s,e-1,t));return i.getUTCMonth()===e-1&&i.getUTCDate()===t};function w(s){let e=s.replace(/\s/g,""),t=e.lastIndexOf(","),i=e.lastIndexOf(".");return t>=0&&i>=0?t>i?e.replace(/\./g,"").replace(",","."):e.replace(/,/g,""):/^-?\d{1,3}(?:,\d{3})+$/.test(e)?e.replace(/,/g,""):e.replace(",",".")}function S(s,e,t=Date.now(),i=void 0){let o=e.format??{},n=l=>s.querySelector(`[name=${l}]`);if(e.type==="number"){let l=n("hp_v"),y=w(l.value);if(!y)return{value:null};let h=Number(y),x=I.exec(y);return x&&(x[1]?.replace(/0+$/,"").length??0)<=(o.decimals?2:0)&&Math.abs(h)<=O&&!(h<o.min||h>o.max)?{value:String(h===0?0:h)}:{error:`Enter a ${o.decimals?"":"whole "}number${o.min!=null&&o.max!=null?` from ${$(o.min,i)} to ${$(o.max,i)}`:""}.`,input:l}}let a=l=>({error:"Enter a real date.",input:l});if(o.kind!=="birthday"){let l=n("hp_v");return l.value?l.value>=l.min&&l.value<=l.max?{value:l.value}:a(l):{value:null}}let[r,c,f]=["hp_d","hp_m","hp_y"].map(n),u=f?.value.trim()??"";if(!r.value&&!c.value&&!u)return{value:null};if(!r.value||!c.value)return a(r.value?c:r);if(!u)return o.year==="required"||!v(2016,+c.value,+r.value)?a(f??r):{value:`--${c.value}-${r.value}`};let p=`${u}-${c.value}-${r.value}`,m=new Date(t).toISOString().slice(0,10),d=new Date(t+864e5).toISOString().slice(0,10),E=`${+m.slice(0,4)-T}${m.slice(4)}`;return/^\d{4}$/.test(u)&&v(+u,+c.value,+r.value)&&p<=d&&p>=E?{value:p}:a(f)}window[Symbol.for("@thg-agentic/hyper-personalisation-web.onsite.answers")]={answerFields:A,answerOf:S};})();
|