1!function(){try{var e="u">typeof window?window:"u">typeof global?global:"u">typeof globalThis?globalThis:"u">typeof self?self:{};e._sentryModuleMetadata=e._sentryModuleMetadata||{},e._sentryModuleMetadata[(new e.Error).stack]=function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];if(null!=r)for(var a in r)r.hasOwnProperty(a)&&(e[a]=r[a])}return e}({},e._sentryModuleMetadata[(new e.Error).stack],{"_sentryBundlerPluginAppKey:sunsave-website-key":!0});var t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="4ab38179-aab6-4a0f-8378-e83218338f97",e._sentryDebugIdIdentifier="sentry-dbid-4ab38179-aab6-4a0f-8378-e83218338f97")}catch(e){}}();"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3708],{7838:(e,t,r)=>{r.d(t,{r:()=>n});var a=r(37876);r(14232);var l=r(72569);let n=({className:e,icon:t,children:r})=>(0,a.jsxs)("li",{className:(0,l.cn)("flex list-none items-start gap-2",e),role:"listitem",children:[(0,a.jsx)(t,{className:"mt-[0.1lh] h-[0.8lh] w-auto shrink-0 grow-0","aria-hidden":!0}),(0,a.jsx)("div",{children:r})]})},11751:(e,t,r)=>{r.d(t,{e:()=>a});let a=(e,...t)=>{if(!e)return null;{let[r]=t;return((e,t=" ")=>{let r="";for(let a=0;a<e.length;a++)"text"in e[a]&&(r+=(r?t:"")+e[a].text);return r})(e,("string"==typeof r?{separator:r}:{...r}).separator)}}},30974:(e,t,r)=>{r.d(t,{O:()=>n});var a=r(37876);let l={"brand-secondary":"#4EE5D3",white:"#FFF","no-circle":"transparent"},n=({variant:e="brand-secondary",width:t=40,height:r=40,arrow:n,circle:s,...i})=>(0,a.jsxs)("svg",{width:t,height:r,viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg",...i,children:[(0,a.jsx)("circle",{cx:"20",cy:"20",r:"18",fill:l[e],...s}),(0,a.jsx)("path",{d:"M14 17L20 23L26 17",stroke:"#292929",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...n})]})},60417:(e,t,r)=>{r.d(t,{Q:()=>s});var a=r(37876),l=r(72569);let n={white:"bg-white","white-gradient":"bg-linear-to-b from-white/95 to-white/80","brand-primary-light":"bg-brand-primary-light","gray-50":"bg-gray-50",tint:"bg-brand-primary-tint","brand-gradient":"bg-linear-to-b from-[rgba(202,241,237,0.2)]"},s=({className:e,children:t,bgColour:r,as:s="article",...i})=>(0,a.jsx)(s,{className:(0,l.cn)(n[r||"white"],"group shadow-card rounded-lg",e),...i,children:t})},60519:(e,t,r)=>{r.d(t,{Z:()=>s});var a=r(37876),l=r(50351),n=r(57242);let s=({link:e,label:t,...r})=>l.nf(e)&&l.Pu(t)?(0,a.jsx)("div",{children:(0,a.jsx)(n.r,{href:e.url,target:"target"in e?e.target:void 0,...r,children:t})}):null},63130:(e,t,r)=>{r.d(t,{h:()=>c,E:()=>d});var a=r(37876),l=r(14232),n=r(30974),s=r(72569),i=r(22975);let o=(e,t)=>"center"===getComputedStyle(e).scrollSnapAlign?e.offsetLeft-(t.clientWidth-e.clientWidth)/2:e.offsetLeft,c=({ariaLabel:e,children:t,className:r,trackClassName:i,controlsClassName:c,controls:m="dots"})=>{let f=(0,l.useRef)(null),[g,b]=(0,l.useState)(!1),[p,v]=(0,l.useState)(0),[w,y]=(0,l.useState)(0),x=l.Children.toArray(t).filter(e=>l.isValidElement(e)&&e.type===d),j=(0,l.useCallback)(()=>{let e=f.current;return e?Array.from(e.children).map(t=>o(t,e)):[]},[]),k=(0,l.useCallback)(()=>{let e=f.current;return e?((e,t,r)=>{if(0===e.length)return[];let a=Math.max(0,r-t),l=[];for(let n of e){let e=l[l.length-1];if(void 0!==e&&e+t>=r-2)break;let s=Math.min(n,a);(void 0===e||Math.abs(s-e)>2)&&l.push(s)}let n=l[l.length-1];return(void 0===n||n+t<r-2)&&(void 0===n||Math.abs(n-a)>2)&&l.push(a),l})(j(),e.clientWidth,e.scrollWidth):[]},[j]);(0,l.useEffect)(()=>{let e=()=>{let e=f.current;b(!!e&&e.scrollWidth>e.clientWidth),y(k().length)};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[x.length,k]);let N=e=>{let t=f.current;if(!t)return;let r=k(),a=Math.max(0,Math.min(e,r.length-1));t.scrollTo({left:r[a],behavior:"smooth"})};return(0,a.jsxs)("div",{className:(0,s.cn)("relative overflow-hidden",r),role:"region","aria-roledescription":"carousel","aria-label":e,children:["dots"===m&&(0,a.jsx)(h,{count:w,activeIndex:p,onSelect:N}),(0,a.jsx)("div",{ref:f,onScroll:e=>{v(((e,t)=>{let r=0;for(let a=1;a<e.length;a++)Math.abs(e[a]-t)<Math.abs(e[r]-t)&&(r=a);return r})(k(),e.currentTarget.scrollLeft))},onKeyDown:e=>{if("ArrowLeft"!==e.key&&"ArrowRight"!==e.key)return;e.preventDefault();let t=f.current;if(!t)return;let r=Array.from(t.children),a=r.findIndex(e=>e.contains(document.activeElement)),l=Math.max(0,Math.min((-1===a?0:a)+("ArrowLeft"===e.key?-1:1),r.length-1)),n=r[l];if(!n)return;n.focus({preventScroll:!0});let s=Math.max(0,t.scrollWidth-t.clientWidth);t.scrollTo({left:Math.min(o(n,t),s),behavior:"smooth"})},className:(0,s.cn)("no-scrollbar flex snap-x snap-mandatory scroll-p-px gap-6 overflow-x-scroll scroll-smooth p-px px-[10%]",i),children:x.map((e,t)=>l.isValidElement(e)?l.cloneElement(e,{key:`item-${t}`,"data-index":t,tabIndex:0,className:(0,s.cn)(e.props.className,"arrows-dots"===m&&g&&t===x.length-1&&"pr-7")}):e)}),"arrows-dots"===m&&g&&(0,a.jsxs)("div",{className:(0,s.cn)("mt-5 flex items-center justify-between",c),children:[(0,a.jsx)("button",{"aria-label":"Previous card",disabled:0===p,onClick:()=>N(p-1),className:"disabled:opacity-40",children:(0,a.jsx)(n.O,{className:"rotate-90",circle:{stroke:"black"},variant:"white"})}),(0,a.jsx)("div",{className:"flex gap-2",children:(0,a.jsx)(u,{count:w,activeIndex:p,onSelect:N})}),(0,a.jsx)("button",{"aria-label":"Next card",disabled:p===w-1,onClick:()=>N(p+1),className:"mr-5 disabled:opacity-40",children:(0,a.jsx)(n.O,{className:"-rotate-90",circle:{stroke:"black"},variant:"white"})})]})]})},d=({className:e,children:t,...r})=>(0,a.jsx)("div",{className:(0,s.cn)("flex shrink-0 flex-col",e),...r,children:t}),h=({count:e,activeIndex:t,onSelect:r})=>(0,a.jsx)("div",{className:(0,s.cn)("flex items-center justify-center gap-1 overflow-x-hidden",(0,i.Lc)("little","b")),children:(0,a.jsx)(u,{count:e,activeIndex:t,onSelect:r,dotClassName:"size-2 roun
1ded-full",activeClassName:"bg-brand-primary",inactiveClassName:"bg-brand-primary-light"})}),u=({count:e,activeIndex:t,onSelect:r,dotClassName:l="size-1.5 rounded-full transition-colors",activeClassName:n="bg-black",inactiveClassName:i="bg-black/20"})=>e>8?(0,a.jsxs)("span",{className:"text-xs text-black/60 tabular-nums","aria-live":"polite",children:[t+1," / ",e]}):(0,a.jsx)(a.Fragment,{children:Array.from({length:e},(o,c)=>(0,a.jsx)("button",{"aria-label":`Go to position ${c+1} of ${e}`,"aria-current":c===t?"true":void 0,onClick:()=>r(c),className:(0,s.cn)(l,c===t?n:i)},c))})},91780:(e,t,r)=>{r.d(t,{P:()=>m});var a=r(37876),l=r(14232),n=r(50351);let s=e=>e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`),i=(e,t)=>{let r=new URL(e);for(let e in t){let a=s(e),l=t[e];void 0===l?r.searchParams.delete(a):Array.isArray(l)?r.searchParams.set(a,l.join(",")):r.searchParams.set(a,`${l}`)}let a=r.searchParams.get("s");return a&&(r.searchParams.delete("s"),r.searchParams.append("s",a)),r.toString()},o=(e,{widths:t,...r})=>t.map(t=>`${i(e,{...r,w:void 0,h:void 0,height:void 0,width:t})} ${t}w`).join(", "),c=[640,828,1200,2048,3840],d=[1,2,3];var h=r(50967),u=r(25744);let m=(0,l.forwardRef)(function(e,t){let r,l,{field:s,alt:m,fallbackAlt:f,imgixParams:g={},widths:b,pixelDensities:p,fallback:v,...w}=e;if(h.A&&("string"==typeof m&&""!==m&&console.warn(`[PrismicImage] The "alt" prop can only be used to declare an image as decorative by passing an empty string (alt="") but was provided a non-empty string. You can resolve this warning by removing the "alt" prop or changing it to alt="". For more details, see ${(0,u.R)("alt-must-be-an-empty-string")}`),"string"==typeof f&&""!==f&&console.warn(`[PrismicImage] The "fallbackAlt" prop can only be used to declare an image as decorative by passing an empty string (fallbackAlt="") but was provided a non-empty string. You can resolve this warning by removing the "fallbackAlt" prop or changing it to fallbackAlt="". For more details, see ${(0,u.R)("alt-must-be-an-empty-string")}`),b&&p&&console.warn('[PrismicImage] Only one of "widths" or "pixelDensities" props can be provided. You can resolve this warning by removing either the "widths" or "pixelDensities" prop. "widths" will be used in this case.')),!n.Of(s))return(0,a.jsx)(a.Fragment,{children:v});for(let e in g)null===g[e]&&(g[e]=void 0);if(b||!p){let e=((e,t={})=>{if(!(e&&(0,n.Of)(e)))return null;{let{widths:r=c,...a}=t,{url:l,dimensions:n,id:s,alt:d,copyright:h,edit:u,...m}=e,f=Object.values(m);return"thumbnails"===r&&f.length<1&&(r=c),{src:i(l,a),srcset:"thumbnails"===r?[o(l,{...a,widths:[n.width]}),...f.map(e=>o(e.url,{...a,widths:[e.dimensions.width]}))].join(", "):o(e.url,{...a,widths:r})}}})(s,{...g,widths:"defaults"===b?void 0:b});r=e.src,l=e.srcset}else if(p){let e=((e,t={})=>{if(!(e&&(0,n.Of)(e)))return null;{let{pixelDensities:r=d,...a}=t;return{src:i(e.url,a),srcset:((e,{pixelDensities:t,...r})=>t.map(t=>`${i(e,{...r,dpr:t})} ${t}x`).join(", "))(e.url,{...a,pixelDensities:r})}}})(s,{...g,pixelDensities:"defaults"===p?void 0:p});r=e.src,l=e.srcset}return(0,a.jsx)("img",{ref:t,src:r,srcSet:l,alt:m??(s.alt||f),...w})})}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.